Guide de sécurité et de renforcement du serveur Web Nginx

Meilleures pratiques de sécurité Nginx.


Nginx est le serveur Web à la croissance la plus rapide de l’industrie et détient actuellement la deuxième place en part de marché.

Il a été initialement publié en 2004, et depuis lors, il a acquis une excellente réputation et utilisé dans le million de sites les plus fréquentés..

Il y a une raison à cela – Nginx est brûlant vite.

Dans cet article, je vais parler de certains des guides essentiels pour sécuriser le Nginx pour un environnement de production. Alors commençons.

SSL / TLS

Implémenter un certificat SSL

La première étape de la sécurité Web consiste à implémenter SSL afin que vous puissiez accéder aux applications Web avec https et ajouter une couche de chiffrement dans la communication..

  • Utilisez OpenSSL pour générer un CSR avec 2048 bits et sha-2

openssl req -nodes -new -sha256 -newkey rsa: 2048 -keyout bestflare.key -out bestflare.csr

  • La commande ci-dessus générera directement la CSR et les fichiers de clés en cours de fonctionnement. N’oubliez pas de changer le nom du fichier .csr et .key.

Faites signer le CSR par une autorité de certification et une fois que vous avez le certificat signé, vous pouvez les implémenter dans Nginx comme ci-dessous.

  • Connectez-vous au serveur Nginx
  • Accédez au dossier conf où vous avez un fichier ssl.conf.

Remarque: Dans l’installation par défaut sous Linux, vous aurez ce fichier sous /etc/nginx/conf.d.

  • Modifiez le fichier et ajoutez ce qui suit, ce qui permettra à Nginx d’écouter sur le port 443

serveur {
écouter 443 ssl;
nom_serveur bestflare.com;
ssl on;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
}

Remarque: n’oubliez pas de modifier le certificat et le chemin du fichier de clés.

  • Enregistrez la configuration et redémarrez le Nginx. Un certificat SSL est implémenté avec succès.

bestflare-ssl-cert

Optimisation SSL / TLS

Avoir SSL ne signifie pas qu’il est entièrement sécurisé et c’est là qu’en tant qu’expert en sécurité Web, vous devez appliquer une configuration pour sécuriser le serveur Web.

Pour commencer, je recommanderais d’exécuter un Analyse SSL contre le site pour trouver le score et la vulnérabilité essentielle.

ssl-labs-rating-c

La note actuelle des SSL Labs est donc “C” et un objectif est de le faire “A.”

Désactivez les protocoles SSL / TLS faibles

SSL 3, TLS 1.0 et TLS 1.1 sont vulnérables, et nous n’autoriserons qu’un protocole TLS 1.2 puissant.

  • Modifier le fichier ssl.conf et ajouter ci-dessous dans le bloc serveur

ssl_protocols TLSv1.2;

  • Enregistrez le fichier ssl.conf et redémarrez Nginx

Désactiver les suites de chiffrement faible

Des suites de chiffrement faibles peuvent entraîner une vulnérabilité comme un blocage de journal, et c’est pourquoi nous devons autoriser uniquement un chiffrement fort.

  • Ajoutez ce qui suit au bloc serveur dans le fichier ssl.conf

ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RC4 EECDH EDH + aRSA HIGH! RC4! A!!! ! MD5! EXP! PSK! SRP! DSS";

  • Enregistrez le fichier et redémarrez Nginx

Installer le certificat de chaîne

Ne pas avoir de certificat de chaîne affecte également la note globale et cela peut afficher une erreur lors de la navigation dans un navigateur moderne comme Chrome. Vous devez obtenir un certificat de chaîne de l’autorité. Surtout, vous trouverez sur leur site Web ou simplement sur Google.

  • Ajoutez le contenu du certificat de chaîne dans le certificat du site Web comme ci-dessous. Dans mon exemple, ce serait /opt/cert/bestflare.pem

chaîne cert

  • Enregistrez le fichier et redémarrez le Nginx

Diffie-Hellman sécurisé pour TLS

Diffie-Hellman est moins sûr qu’on ne le pensait. L’une des meilleures pratiques récemment ajoutées dans une liste est de sécuriser Diffie-hellman. Générer DH GROUP unique et ajouter ssl_dhparam dans le fichier ssl.conf fait cela.

  • Générer un groupe DH unique à l’aide d’OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Cela prendra quelques minutes et générera un fichier dhparams.pem sur un répertoire de travail courant
  • Copiez dhparams.pem dans le dossier cert
  • Modifiez ssl.conf et ajoutez ce qui suit dans le bloc serveur

ssl_dhparam /opt/cert/dhparams.pem;

  • Enregistrez le fichier et redémarrez le Nginx

Cela devrait être suffisant pour l’optimisation SSL / TLS et testons à nouveau l’URL pour voir la note.

ssllabs-a-rating

Woo ho! Alors maintenant, vous pouvez voir que c’est “UNE” évaluation par SSLLabs. Bien joué!

Voici ssl.conf complet

# Configuration du serveur HTTPS
serveur {
écouter 443 ssl;
nom_serveur bestflare.com;
ssl on;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RC4 EECDH EDH + aRSA HIGH! RC4! A!!! ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Fuite d’informations

Dans l’installation par défaut de Nginx, vous aurez beaucoup d’informations sensibles révélées, qui peuvent aider les pirates à se préparer à une attaque.

Si vous travaillez sur un environnement de conformité PCI, cela est considéré comme une vulnérabilité de fuite d’informations et doit corriger l’élément.

Vous devez utiliser server_tokens off pour désactiver la fuite d’informations. Je l’ai expliqué dans mon article précédent. Supprimer la version de la bannière d’en-tête de serveur dans Nginx

Sécurité des applications Web

La configuration par défaut de Nginx n’est pas parfaite et peut présenter de nombreuses vulnérabilités, c’est pourquoi nous les renforçons pour la sécuriser.

Désactivez les méthodes HTTP indésirables

La plupart du temps, il vous suffit de GET, HEAD & POSTEZ la requête HTTP dans votre application Web. Autoriser TRACE ou DELETE est risqué car il peut permettre une attaque de suivi intersite et potentiellement permettre à un pirate de voler les informations de cookie.

  • Modifiez nginx.conf et ajoutez ce qui suit sous le bloc serveur

if ($ request_method! ~ ^ (GET | HEAD | POST) $)
{
retour 405;
}

Enregistrez le fichier et redémarrez le Nginx. Cela affichera désormais 405 non autorisé si quelqu’un essaie d’utiliser TRACE, DELETE, PUT, OPTIONS.

Chandans-iMac: ~ chandan $ telnet bestflare.com 80
Essayer 128.199.100.162…
Connecté à bestflare.com.
Le caractère d’échappement est ‘^]’.
TRACE / HTTP / 1.1
Hôte: test
HTTP / 1.1 405 non autorisé
Serveur: nginx
Date: sam.11 juillet 2015 06:04:34 GMT
Type de contenu: texte / html
Longueur du contenu: 166
Connexion: fermer

Clickjacking Attack

Vous pouvez injecter X-FRAME-OPTIONS dans l’en-tête HTTP pour empêcher une attaque de détournement de clics.

Ceci est réalisé en ajoutant ci-dessous dans le fichier nginx.conf

add_header X-Frame-Options "SAMEORIGINE";

L’en-tête ci-dessus demandera à un navigateur de charger les ressources UNIQUEMENT à partir de la même origine.

Protection X-XSS

Injecter l’en-tête HTTP avec la protection X-XSS pour atténuer l’attaque de script intersite.

  • Modifiez le fichier nginx.conf pour ajouter ce qui suit

add_header X-XSS-Protection "1; mode = bloc";

  • Enregistrez le fichier de configuration et redémarrez Nginx. Vous pouvez utiliser le Test des en-têtes outil pour vérifier après la mise en œuvre.

Vous pouvez également être intéressé par la mise en œuvre des en-têtes sécurisés recommandés par l’OWASP qui sont expliqués ici.

Implémenter Mod Security WAF

Ajoutez une couche de sécurité supplémentaire en implémentant ModSecurity du pare-feu d’application Web avec l’ensemble de règles OWASP Core.

Alternativement, si vous envisagez d’utiliser une sécurité basée sur le cloud comme SUCURI devant le serveur Nginx.

Gardez Nginx à jour

Enfin, vous devez maintenir votre Nginx à jour car de nombreuses améliorations de performances, correctifs de sécurité et nouvelles fonctionnalités sont ajoutés.

J’espère que cela vous aide à garder votre Nginx en sécurité.

Ensuite, vous pourriez être intéressé à apprendre à construire Nginx pour de hautes performances à partir de zéro.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map