Rouler en classe A avec Nginx
La fondation Mozilla a beaucoup travaillé ces derniers temps sur l’amélioration de la sécurité du Web.
Pour les sysadmins, le site SSL Configuration Generator est génial car il vous permet d’obtenir une configuration sécurisée de votre serveur Web. Il vous suffit de choisir votre serveur Web, la version que vous utilisez et la version d’openssl et le tour est joué.
Sauf que ce n’est pas encore suffisant pour protéger les utilisateurs des principales failles Web comme XSS, par exemple.
Pour le voir, il suffit de faire un tour sur l’observatoire Mozilla pour reçevoir une (très) mauvaise note.
Mais comme toutes vos erreurs sont expliquées, vous allez pouvoir revoir votre copie avant le prochain examen.
Comment être un bon élève chez Mozilla ?
Pour être un bon élève, vous allez devoir jouer avec les en-têtes HTTP (à ajouter dans votre site /etc/nginx/sites-enabled/monsite).
# Eviter de se faire piller son site (merci dsfc.net) add_header X-Robots-Tag "index,follow,noarchive"; # HSTS permet de déclarer au client directement dans la réponse HTTP qu'il faut communiquer en HTTPS # Cette en-tête permet d'éviter le vol de cookies et le downgrade SSL add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; # Evite que le contenu soit interprété différemment que définit dans le mime Type add_header X-Content-Type-Options nosniff; # Protection contre le clickjacking add_header X-Frame-Options "SAMEORIGIN"; # Protection contre les failles X-XSS add_header X-XSS-Protection "1; mode=block"; # Faille spécifique à IE8 add_header X-Download-Options noopen; # Interdire l'embarquement de tout ou partie de votre site dans un site ou logiciel tiers add_header X-Permitted-Cross-Domain-Policies none; # Enfin, les CSP permettent de vérifier l'origine des éléments du site # Plutôt complexes à mettre en place, voir #add_header Content-Security-Policy "default-src 'self';" always;
Après un redémarrage de Nginx, l’observatoire Mozilla doit être content de vous.
Comment être un bon élève chez SSLLabs ?
SSLLabs ne regarde pas les en-têtes HTTP mais plutôt comment vous avez implémenté le TLS.
Voici une solution simple de configuration de TLS :
ssl on; ssl_certificate /etc/letsencrypt/fullchain.pem; ssl_certificate_key /etc/letsencrypt/privkey.pem; ssl_dhparam /etc/letsencrypt/dhparams.pem; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
Le fichier DHParams se génère comme ça :
openssl dhparam -out /etc/letsencrypt/dhparams.pem 4096
Et après un redémarrage, SSLLabs est lui-aussi content de vous.