Aller au contenu

Sécuriser son site web sous nginx avec l’ajout d’en-têtes (headers)


Ldfa

Messages recommandés

Un petit mémo pour connaitre les en-têtes à ajouter dans la configuration du serveur web Nginx pour bloquer les attaques les plus courantes.

Effectivement, que ce soit un CMS ou un site développé entièrement à la main peut contenir des failles, qui peuvent être exploitées par des personnes malveillantes. Afin de se protéger des exploits les plus courants, il sera ajouter des en-têtes qui seront exécutées par le navigateur internet.

Les en-têtes sont soit ajoutées directement dans le fichier de configuration nginx.conf ou dans les différents « block server« . Un descriptif succinct est accompagné pour chaque en-tête.

Cet en-tête permet de se protéger contre le détournement de clic (clickjacking) :

add_header X-Frame-Options "SAMEORIGIN" always;

Cet en-tête permet de faire une vérification stricte des types Mime. Elle n’accepte qu’une seule directive : nosniff.

add_header X-Content-Type-Options nosniff;

Cet en-tête permet d’activer les filtres anti-xss incorporés dans certains navigateurs.

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

L’en-tête CSP permet d’autoriser seulement les domaines déclarés à exécuter du script JavaScript, une feuille de style css, etc.

Exemple pour WordPress avec gestion de sous domaine et accès aux fonts google :

add_header Content-Security-Policy "default-src 'self' *.memo-linux.com; img-src 'self' data: http: https: *.memo-linux.com; font-src 'self' data: http: https: fonts.googleapis.com";

HSTS est un dispositif de sécurité par lequel un site web peut déclarer aux navigateurs qu’ils doivent communiquer avec lui en utilisant exclusivement le protocole HTTPS, au lieu du HTTP. De plus, cela permet d’éviter la réécriture de tous les chemins lorsqu’un site web passe au tout https.

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

Pour la prise en compte des ajouts dans la configuration du block serveur, il faut relancer le service nginx :

systemctl restart nginx

Avec l’aide de la commande curl, on va vérifier les différentes en-tètes :

curl -I http://memo-linux.com
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 04 Sep 2015 10:29:21 GMT
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
X-Pingback: http://memo-linux.com/xmlrpc.php
Content-Security-Policy: default-src 'self' *.memo-linux.com; img-src 'self' data: http: https: *.memo-linux.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.memo-linux.com; style-src 'self' 'unsafe-inline' http: https: fonts.googleapis.com; font-src 'self' data: http: https: fonts.googleapis.com
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubdomains
X-Varnish: 887463
Age: 0
Via: 1.1 varnish-v4
Connection: keep-alive

Pour plus d’infos : www.lexsi.com


Afficher l’article complet

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.