📒  Confiance et sécurité

Comment prévenir une attaque ddos sur Nginx

Comment prévenir les attaques ddos sur nginx, apprenez à bloquer certaines attaques DDoS avec le serveur Web Nginx avec cette configuration de protection ddos nginx, cela aidera votre serveur à prévenir et à bloquer certaines attaques DDoS courantes, avec la configuration et le durcissement de Nginx vous pouvez bloquer certaines attaques sur votre serveur.

Alexhost offreune protection anti-DDoS gratuite contre certaines attaques, vous pouvez utiliser nos serveurs VPS ou nos serveurs dédiés, nous offrons une protection anti-DDoS gratuite, cependant la capacité d’atténuation, les méthodes, le filtrage seront différents en fonction de l’emplacement que vous choisissez.

Exigences :
Nginx (Nginx doit être installé sur votre serveur actuel)
Quelques connaissances (il est nécessaire de savoir comment utiliser les commandes de base de Linux et comment accéder à certains fichiers Nginx, le savoir-faire est attendu)
Serveur VPS ou Serveur Dédié (vous pouvez utiliser une VM dans votre hôte local)
Protection DDoS (votre fournisseur d’hébergement doit être en mesure d’atténuer les attaques DDoS plus complexes)
Linux (toute distribution permettant l’installation de Nginx)
Nginx (vous pouvez avoir besoin de lire leur documentation Nginx afin de tester et de vérifier s’il est toujours fiable)

Limites : Ce tutoriel n’est pas une protection à toute épreuve contre toutes les attaques DDoS, il limitera probablement l’attaque en bloquant certains types d’attaques courantes et aidera votre serveur à rester en ligne. Il y a des limitations contre certaines attaques DDoS, vous aurez besoin que votre fournisseur d’hébergement offre une sorte de protection DDoS afin de bloquer et de prévenir, cette configuration ne peut pas protéger contre toutes les attaques contre votre serveur. Cette configuration permet de prévenir et de bloquer certaines attaques, mais elle ne bloquera pas toutes les attaques sans la protection DDoS de votre hébergeur.

Avertissement : Alexhost ne vous recommande pas d’utiliser cette configuration dans votre serveur de production, nous vous recommandons de la tester avant de faire quoi que ce soit. Alexhost n’est pas responsable de tout type de problème que cela pourrait créer ou non. Pratiquer une bonne sécurité du serveur, avant d’implémenter quoi que ce soit, sauvegarder tout au cas où vous auriez besoin de restaurer. Veuillez lire la documentation de Nginx pour la protection DDoS pour comprendre comment cela fonctionne.

Prévenir les attaques DDoS en renforçant Nginx

La configuration de Nginx pour la protection DDoS et le durcissement contre les couches d’attaque courantes implique la mise en œuvre de diverses stratégies pour atténuer et prévenir les attaques. Voici un guide sur la façon de configurer Nginx pour améliorer la sécurité et apprendre Comment prévenir une attaque ddos sur nginx en durcissant votre serveur web :

  1. Mettez à jour Nginx: Assurez-vous d’utiliser la dernière version stable de Nginx pour bénéficier des derniers correctifs et améliorations de sécurité.
  2. Limitez les connexions: Utilisez le module limit_conn pour limiter le nombre de connexions à partir d’une seule adresse IP. Cela permet d’éviter que les attaques DDoS ne submergent votre serveur avec un trop 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 de serveur...
    }
}

Liste blanche/liste noire d’adresses IP: Utilisez les directives allow et deny pour mettre sur liste blanche les adresses IP fiables et bloquer les adresses malveillantes.
nginx

http {
    # Liste blanche d'adresses IP de confiance
    allow 192.168.1.0/24 ;
    deny all ;
    # Autres configurations du serveur...
}

Mettre en place un pare-feu d’application Web (WAF): Utiliser des modules tiers comme ModSecurity avec Nginx pour détecter et bloquer le trafic HTTP malveillant.

Activer HTTPS: crypter les communications entre les clients et le serveur à l’aide de HTTPS pour empêcher l’interception des données et les attaques de type “man-in-the-middle”.

Désactiver les modules inutilisés: Désactiver les modules Nginx inutiles pour réduire la surface d’attaque et améliorer les performances.
nginx

./configure --sans-module-http_autoindex --sans-module-http_ssi
  1. Optimiser la configuration de Nginx: Optimisez les paramètres de configuration de Nginx tels que les processus de travailleur, les connexions de travailleur et les délais d’attente en fonction des capacités matérielles de votre serveur et du trafic prévu.
  2. Surveillance et journalisation: Surveillez régulièrement les journaux du serveur pour détecter toute activité suspecte et mettez en place des systèmes d’alerte pour informer les administrateurs des attaques potentielles.
  3. Mise en œuvre de services de protection contre les attaques DDOS: Envisagez d’utiliser des services ou des appareils spécialisés dans la protection contre les attaques DDoS en amont de Nginx, tels que Cloudflare, AWS Shield ou Akamai.
  4. Sauvegardes régulières: Assurer des sauvegardes régulières des données critiques afin de minimiser l’impact des attaques réussies.

N’oubliez pas que la sécurité est un processus continu et qu’il est essentiel de se tenir au courant des dernières pratiques et menaces en matière de sécurité afin de protéger efficacement votre serveur contre les attaques potentielles.

Configuration de la protection ddos de Nginx :

#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 ;
        nom_du_serveur exemple.com ;
        # Limitation du nombre de requêtes
        limit_req zone=req_limit_per_ip burst=20 ;
        # Limite le nombre maximum de connexions à partir d'une même IP
        limit_conn conn_limit_per_ip 20 ;
        # Refuser les requêtes dont le corps est volumineux afin de se prémunir contre certains types d'attaques
        client_body_buffer_size 1k ;
        taille_du_titre_du_client 1k ;
        taille_max_du_corps_du_client 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 améliorer la sécurité
        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 agents utilisateurs vulnérables courants
        if ($http_user_agent ~* (wget|curl) ) {
            retour 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_ {
            refuser tout ;
            return 403 ;
        }
        # Inscrire votre IP sur la liste blanche pour l'accès administratif
        location /admin {
            allow votre_ip_admin ;
            deny all ;
        }
        # Interdire l'accès à certains répertoires
        location ~ /(system|vendor) {
            refuse tout ;
            retour 403 ;
        }
        # Transférer les requêtes vers votre serveur d'application
        location / {
            proxy_pass http://your_backend_server ;
            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 permet d’effectuer les opérations suivantes :

  1. Limitation du débit: Limite le nombre de requêtes provenant de chaque adresse IP à 10 requêtes par seconde avec une rafale de 20 requêtes.
  2. Limitation des connexions: Limite le nombre maximum de connexions à partir de chaque adresse IP à 20.
  3. Limitation de la taille des requêtes: Limite la taille des corps de requête afin d’atténuer les attaques qui envoient des corps de requête volumineux.
  4. Compression Gzip: Active la compression gzip pour économiser la bande passante.
  5. En-têtes de sécurité: Ajoute des en-têtes de sécurité pour améliorer la sécurité.
  6. Blocage des agents utilisateurs vulnérables: Bloque les requêtes provenant d’agents utilisateurs vulnérables courants.
  7. Blocage des fichiers cachés: Bloque l’accès aux fichiers et répertoires cachés.
  8. Liste blanche pour l’accès à l’administration: Autorise l’accès à la zone d’administration uniquement à partir de votre adresse IP.
  9. Interdiction d’accès à certains répertoires: Bloque l’accès à des répertoires sensibles tels que le système et le fournisseur.
  10. Passage par un proxy: Transmet les demandes à votre serveur d’application.

Veillez à personnaliser la configuration en fonction de vos besoins spécifiques, tels que les noms de domaine, les adresses des serveurs dorsaux et les adresses IP administratives. En outre, surveillez régulièrement les journaux de votre serveur et ajustez les configurations si nécessaire pour vous adapter à l’évolution des menaces.

La configuration fournie est destinée à être ajoutée au fichier nginx.conf ou incluse dans des fichiers de configuration distincts. Voici un guide étape par étape sur l’endroit où ajouter la configuration :

  1. Localisez le fichiernginx.conf : En fonction de votre installation de Nginx, le fichier nginx.conf peut être situé dans différents répertoires. Les emplacements courants sont /etc/nginx/nginx.conf, /usr/local/nginx/conf/nginx.conf, ou /etc/nginx/sites-available/default.
  2. Ouvrez le fichiernginx.conf : Vous pouvez ouvrir le fichier à l’aide d’un éditeur de texte ou d’un éditeur de texte en ligne de commande comme nano, vim ou emacs.
  3. Ajoutez la configuration dans le blochttp: Dans le bloc http, qui définit les paramètres du serveur HTTP, vous ajouterez la configuration fournie. Généralement, le bloc http se trouve en haut du fichier nginx.conf.
  4. Coller la configuration fournie: Collez l’ensemble de la configuration fournie précédemment dans le bloc http. Assurez-vous de remplacer les valeurs de remplacement comme example.com, your_admin_ip, et your_backend_server par vos valeurs réelles.
  5. Enregistrez et quittez le fichier: Après avoir ajouté la configuration, enregistrez le fichier nginx.conf et quittez l’éditeur de texte.
  6. Testez la configuration de Nginx: Avant de redémarrer Nginx, il est conseillé de tester la configuration pour vérifier qu’elle ne contient pas d’erreurs de syntaxe.
  7. Vous pouvez le faire en exécutant la commande suivante :
    nginx -t

S’il n’y a pas d’erreurs de syntaxe, vous verrez un message indiquant que le test du fichier de configuration est réussi.

Redémarrez Nginx: Enfin, redémarrez Nginx pour appliquer les modifications. Vous pouvez le faire à l’aide de la commande suivante :
sudo service nginx restart

  1. Si vous n’utilisez pas un système avec systemd, vous pouvez utiliser des commandes différentes pour redémarrer Nginx.

En suivant ces étapes, vous ajouterez la configuration fournie à votre serveur Nginx, améliorant sa sécurité avec la protection DDoS et d’autres mesures de sécurité, ce tutoriel vous aidera àprévenir les attaques ddos sur nginx en configurant Nginx.