Comment atténuer une attaque DDoS sur son site web avec Nginx
Découvrez comment utiliser le serveur web Nginx pour bloquer certaines attaques DDoS grâce à une configuration sécurisée. Cette approche aidera votre serveur à se prémunir contre des attaques DDoS fréquentes. En améliorant la configuration de Nginx, vous pouvez protéger votre serveur contre divers types d'attaques.
OuiHeberg propose une protection Anti-DDoS gratuite contre certaines attaques ciblées. En utilisant nos serveurs VPS ou dédiés, vous bénéficiez d'une protection Anti-DDoS sans frais supplémentaires. Néanmoins, les capacités de mitigation, les méthodes employées et le filtrage peuvent varier selon le lieu que vous sélectionnez.
Prérequis
- Nginx : Assurez-vous que Nginx est installé sur votre serveur.
- Connaissances de base : Vous devez être à l'aise avec les commandes Linux de base et savoir comment accéder aux fichiers de configuration de Nginx.
- Serveur VPS ou dédié : Un serveur virtuel privé ou dédié, ou une machine virtuelle sur votre hôte local.
- Protection DDoS : Votre hébergeur doit fournir une forme de protection DDoS pour pouvoir atténuer les attaques plus sophistiquées.
- Linux : Toute distribution compatible avec Nginx.
Limitations
Ce guide n'est pas une solution complète pour se défendre contre toutes les attaques DDoS. Il contribuera probablement à atténuer certaines attaques courantes et à maintenir votre serveur opérationnel. Toutefois, pour certaines attaques DDoS complexes, il est nécessaire que votre hébergeur fournisse une protection DDoS adéquate pour les bloquer et les prévenir. Cette configuration ne peut pas protéger contre toutes les formes d'attaques sur votre serveur ; elle est conçue pour prévenir et bloquer certains types d'attaques, mais ne sera pas efficace sans la protection DDoS de votre fournisseur.
Avertissement
OuiHeberg vous déconseille d'appliquer cette configuration directement sur votre serveur de production sans l'avoir testée au préalable. Nous déclinons toute responsabilité pour les problèmes éventuels que cela pourrait causer. Assurez-vous de suivre les bonnes pratiques en matière de sécurité serveur et effectuez des sauvegardes avant toute modification, au cas où une restauration serait nécessaire. Veuillez consulter la documentation de Nginx concernant la protection DDoS pour bien comprendre le fonctionnement.
Renforcer Nginx pour prévenir les attaques DDoS
Pour protéger Nginx contre les attaques DDoS et renforcer sa résistance aux attaques courantes, il est nécessaire d'implémenter diverses stratégies d'atténuation et de prévention. Voici comment configurer Nginx pour améliorer sa sécurité :
1. Mettre à jour Nginx
Vérifiez que vous utilisez la version stable la plus récente de Nginx afin de profiter des correctifs de sécurité et des améliorations les plus récents.
2. Limiter les connexions
Employez le module limit_conn
pour restreindre le nombre de connexions provenant d'une même adresse IP. Ceci aide à prévenir les attaques DDoS qui tentent de saturer votre serveur avec un grand nombre de connexions simultanées.
http {
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;
server {
limit_req zone=req_limit_per_ip burst=5;
# Autres configurations du serveur...
}
}
3. Gestion des listes blanche et noire des IP
Utilisez les directives allow
et deny
pour autoriser des adresses IP fiables et bloquer celles qui sont malveillantes.
http {
# Autoriser les adresses IP de confiance
allow 192.168.1.0/24;
deny all;
# Autres configurations du serveur...
}
4. Installer un pare-feu applicatif web (WAF)
Intégrez des modules tiers tels que ModSecurity avec Nginx pour détecter et bloquer le trafic HTTP malveillant.
5. Activer HTTPS
Utilisez HTTPS pour chiffrer les communications entre les clients et le serveur, ce qui prévient l'interception des données et les attaques de type homme du milieu.
6. Désactiver les modules non utilisés
Désactivez les modules Nginx dont vous n'avez pas besoin pour réduire la surface d'attaque et optimiser les performances.
./configure --without-http_autoindex_module --without-http_ssi_module
7. Optimiser la configuration de Nginx
Ajustez les paramètres de configuration de Nginx, comme les processus de travail, les connexions de travail et les délais d'attente, en fonction des ressources matérielles de votre serveur et du volume de trafic anticipé.
8. Surveillance et journalisation
Examinez régulièrement les logs du serveur pour repérer toute activité suspecte et mettez en place des systèmes d'alerte afin d'informer les administrateurs en cas d'attaques potentielles.
9. Utiliser des services de protection DDoS
Envisagez de recourir à des services ou appliances spécialisés en protection DDoS en amont de Nginx, comme Cloudflare, AWS Shield ou Akamai.
10. Effectuer des sauvegardes régulières
Veillez à sauvegarder fréquemment les données essentielles pour minimiser les impacts en cas d'attaques réussies.
N'oubliez pas que la sécurité est un processus continu. Il est essentiel de se tenir informé des dernières menaces et des meilleures pratiques en matière de sécurité pour protéger efficacement votre serveur contre les attaques potentielles.
Configuration de protection DDoS pour Nginx
Voici une configuration que vous pouvez ajouter à votre fichier nginx.conf
pour renforcer la sécurité :
# Définir une zone pour suivre les connexions de chaque IP
http {
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
# Définir une zone pour suivre les requêtes de chaque IP
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
server {
listen 80;
server_name exemple.com;
# Limiter le taux de requêtes
limit_req zone=req_limit_per_ip burst=20;
# Limiter le nombre maximum de connexions d'une seule IP
limit_conn conn_limit_per_ip 20;
# Refuser les requêtes avec de grands corps de requête pour atténuer certains types d'attaques
client_body_buffer_size 1k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
# Activer la compression Gzip pour économiser de la bande passante
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
# Ajouter des en-têtes de sécurité pour renforcer la protection
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options "SAMEORIGIN";
add_header Referrer-Policy "same-origin";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Bloquer les User-Agents vulnérables courants
if ($http_user_agent ~* (wget|curl) ) {
return 403;
}
# Bloquer l'accès aux fichiers cachés
location ~ /\. {
deny all;
}
# Bloquer l'accès à certains types de fichiers
location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
deny all;
return 403;
}
# Mettre en liste blanche votre IP pour l'accès à l'administration
location /admin {
allow votre_ip_admin;
deny all;
}
# Interdire l'accès à certains répertoires
location ~ /(system|vendor) {
deny all;
return 403;
}
# Proxy pour transférer les requêtes à votre serveur d'application
location / {
proxy_pass http://votre_serveur_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
Cette configuration accomplit les actions suivantes :
- Limitation du taux : Restreint chaque adresse IP à 10 requêtes par seconde avec une rafale autorisée de 20 requêtes.
- Limitation des connexions : Limite chaque adresse IP à un maximum de 20 connexions simultanées.
- Limitation de la taille du corps des requêtes : Restreint la taille des corps de requête pour atténuer les attaques qui envoient de grandes quantités de données.
- Compression Gzip : Active la compression gzip pour économiser la bande passante.
- En-têtes de sécurité : Ajoute des en-têtes pour renforcer la sécurité.
- Blocage des User-Agents vulnérables : Bloque les requêtes provenant de User-Agents couramment utilisés pour des activités malveillantes.
- Blocage des fichiers cachés : Interdit l'accès aux fichiers et répertoires cachés.
- Liste blanche pour l'accès admin : Autorise uniquement votre adresse IP à accéder à la zone d'administration.
- Interdiction d'accès à certains répertoires : Bloque l'accès à des répertoires sensibles tels que
system
et vendor
.
- Proxy Pass : Transfère les requêtes à votre serveur d'application.
Veillez à adapter cette configuration selon vos besoins spécifiques, notamment les noms de domaine, les adresses du serveur backend et les adresses IP pour l'administration. De plus, surveillez régulièrement les logs de votre serveur et ajustez les configurations en fonction de l'évolution des menaces.
Comment intégrer cette configuration dans Nginx
Voici les étapes à suivre pour ajouter cette configuration :
-
Localisez le fichier nginx.conf
: Selon votre installation, le fichier nginx.conf
peut être situé à différents emplacements, tels que /etc/nginx/nginx.conf
, /usr/local/nginx/conf/nginx.conf
ou /etc/nginx/sites-available/default
.
-
Ouvrez le fichier nginx.conf
: Utilisez un éditeur de texte ou un éditeur en ligne de commande comme nano
, vim
ou emacs
pour ouvrir le fichier.
-
Ajoutez la configuration dans le bloc http
: À l'intérieur du bloc http
, qui définit les paramètres du serveur HTTP, insérez la configuration fournie. Ce bloc se trouve généralement près du début du fichier nginx.conf
.
-
Insérez la configuration fournie : Collez l'ensemble de la configuration précédente à l'intérieur du bloc http
. Assurez-vous de remplacer les valeurs par défaut telles que exemple.com
, votre_ip_admin
et votre_serveur_backend
par vos informations spécifiques.
-
Enregistrez et fermez le fichier : Après avoir intégré la configuration, enregistrez les modifications et fermez l'éditeur.
-
Vérifiez la configuration de Nginx : Avant de redémarrer Nginx, il est recommandé de tester la configuration pour détecter d'éventuelles erreurs de syntaxe en exécutant :
nginx -t
Si tout est correct, un message indiquera que le test du fichier de configuration est réussi.
-
Redémarrez Nginx : Pour appliquer les modifications, redémarrez Nginx avec la commande :
sudo service nginx restart
Si vous n'utilisez pas systemd
, vous devrez peut-être employer une autre commande pour redémarrer Nginx.
En suivant ces étapes, vous intégrerez la configuration proposée à votre serveur Nginx, renforçant ainsi sa sécurité grâce à la protection DDoS et à d'autres mesures de sécurité. Ce guide vous aidera à prévenir les attaques DDoS sur Nginx en le configurant correctement.
OuiHeberg s'engage à vous offrir les meilleures solutions pour sécuriser vos services en ligne. N'hésitez pas à nous contacter pour toute question ou assistance supplémentaire.
Nom de l'auteur
OUIHEBERG SARL
Catégories
Tutoriels
Date
19/09/2024