Les attaques par déni de service distribué ou « DDoS » séquestrent les ressources d’un serveur par le biais de tactiques de communication numérique abusives. Ces types d’attaques sont le raid organisé du monde informatique. De nombreuses actions anti-like gênantes se combinent pour créer une menace suffisamment redoutable pour arrêter un serveur chevronné dans son élan. Pire encore, il existe de multiples moyens de mener une telle guerre Web de guérilla contre des serveurs sans méfiance. Heureusement, les serveurs peuvent être configurés pour riposter.
Nginx, un système de serveur très populaire pour les machines Unix, est livré avec suffisamment de fonctionnalités intégrées pour limiter considérablement l’efficacité des attaques DDoS.
Voici quelques options efficaces pour gérer de telles menaces sur un serveur alimenté par Nginx :
Contenu
Sauvegardez votre fichier de configuration
Avant de modifier des paramètres, assurez-vous de faire une sauvegarde rapide de la configuration de votre serveur. La commande suivante fonctionne pour cela :
Une fois terminé, vous êtes prêt à passer à autre chose.
Vérification du trafic
Garder un œil sur le trafic de votre serveur facilite l’optimisation de la sécurité et la mise en œuvre de tactiques supplémentaires sur toute la ligne. Nginx a un module spécialement conçu pour cela.
Configurer une page d’état
Nginx est généralement livré avec un module nommé « stub status » (http_stub_status_module) qui permet d’intégrer ce type de fonctionnalité dans votre environnement de serveur assez facilement. Tout d’abord, vérifiez-le à l’aide de la commande suivante :
Ou dirigez ce qui précède vers grep pour le trouver plus rapidement :
Si votre sortie ressemble à la sortie ci-dessus, vous êtes prêt à partir ; sinon, vous devrez réinstaller ou recompiler votre installation Nginx avec le module inclus.
La configuration d’une page d’état que vous pouvez vérifier est simple, mais vous devrez également en limiter l’accès au minimum (votre machine) pour la sécuriser. Commencez par ouvrir le fichier de configuration principal de votre serveur qui se trouve dans « /etc/nginx/nginx.conf ».
Ouvrez-le et ajoutez le code suivant à la « directive http » pour activer le module, en remplaçant vos propres informations au lieu de « localhost », « /status_page » et « 127.0.0.1 »:
Noter: vous aurez besoin des privilèges sudo pour modifier ce fichier.
Testez maintenant votre configuration :
Si tout va bien, envoyez un signal de rechargement à votre serveur :
Pour accéder à votre page d’état, visitez votre emplacement server_name suivi de « /status_page » dans un navigateur Web ou en utilisant un outil de ligne de commande comme curl. (Ceci est utile si le cache de votre navigateur ne se met pas à jour automatiquement.) Voici la commande curl pour accéder à la page dans nos exemples :
Dans le navigateur, l’image ci-dessus ressemble à l’image suivante.
Vérifier les journaux d’accès
Si vous remarquez un trafic anormal lors de la vérification de la page d’état configurée ci-dessus, il peut être judicieux de consulter le journal d’accès du serveur. Cela peut être trouvé à « /var/log/nginx/access.log. » Le journal répertorie les méthodes HTTP utilisées, la date/heure des tentatives d’accès, les agents utilisateurs et les pages consultées.
Limiter les connexions
Parmi les nombreuses tactiques utiles qui valent la peine d’être essayées pour éviter les attaques DDoS, l’une des plus simples et des plus efficaces est la limitation des taux de trafic entrant.
Idéalement, vous devriez limiter l’accès juste assez pour empêcher les robots malveillants de maîtriser votre serveur à des taux inhumains tout en maintenant des taux raisonnables pour les clients humains. Dans Nginx, cela peut être accompli avec les directives limit_req_zone et limit_req. Le code suivant définit les contraintes de mémoire et de débit à utiliser dans n’importe quel emplacement pour lequel votre serveur est configuré :
« Zone » précise le nom et la taille (en Mégaoctets dans ce cas) de l’espace en mémoire où sont stockées les demandes des utilisateurs. « Taux » établit le nombre total de demandes que Nginx acceptera chaque seconde (10 dans cet exemple). Considérez ce code comme une règle et le code qui suit comme l’utilisation de cette règle :
Le code ci-dessus fait en fait un peu plus que simplement implémenter notre règle de limitation ; il ajoute également une petite file d’attente pouvant contenir jusqu’à vingt demandes pour gérer en douceur les connexions légitimes qui s’affichent un peu plus rapidement que la normale, dépassant à la fois la règle et la file d’attente entraîne une erreur 503 pour le client. Voici à quoi ressemblent les deux directives dans nginx.conf :
Liste noire de l’adresse IP
Si vous pouvez obtenir l’adresse IP qui DDoSing sur votre serveur, vous pouvez simplement la mettre sur liste noire et supprimer toute connexion provenant de cette adresse IP.
Ajoutez le code suivant à votre directive de serveur :
Demande de blocage à certains fichiers
Si l’attaque DDoS cible certains fichiers sur votre serveur – par exemple, le fichier xmlrpc.php sur WordPress (il s’agit d’un fichier fortement ciblé dans la plupart des serveurs WordPress) – vous pouvez bloquer toutes les demandes qui lui sont adressées. Ajoutez ce code à votre directive de serveur :
Suivez la procédure ci-dessus et vous pourrez limiter la plupart des attaques DDoS. Assurez-vous de consulter la documentation Nginx pour connaître les options de sécurité supplémentaires que vous pouvez mettre en place.
Cet article est-il utile ? Oui Non