Configuration de sécurité dans Apache Httpd

· 3 minutes de lecture
Configuration de  sécurité dans Apache Httpd

Suite à la lecture de l'article : Un service signé Mozilla teste la sécurité de sites Web de Ariane Beky sur le site Silicon, j'ai décidé de tester la sécurité de mon blog avec le service Observatory de Mozilla.

Le résultat du premier test fut ... catastrophique avec la plus mauvaise note :

Même si ce n'est pas un réconfort mon site faisait partie des 9 sites sur 10 ayant une mauvaise note.

J'ai donc décidé de prendre les choses en main en modifiant la configuration de mon serveur Apache 2.4 :

Je vous propose ici le fichier de configuration que j'ai réalisé :

/etc/httpd.d/conf.d/securite-perso.conf

<IfModule mod_headers.c>
# Content Security Policy (CSP)
Header set Content-Security-Policy` "script-src 'self'; object-src 'self'"
<FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$">
Header unset Content-Security-Policy

# Reducing MIME type security risks 
Header set X-Content-Type-Options "nosniff"

# HTTP Strict Transport Security (HSTS)  
Header always set Strict-Transport-Security "max-age=16070400; includeSubDomains"

# Clickjacking   
Header set X-Frame-Options "DENY"
<FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$">
Header unset X-Frame-Options

# Reflected Cross-Site Scripting (XSS) attacks  
Header set X-XSS-Protection "1; mode=block"
 <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$">
Header unset X-XSS-Protection 

# Server software information  
ServerSignature Off
Header unset X-Powered-By

# Weak SSL protocols
SSLProtocol  all -SSLv2 -SSLv3 -TLSv1 
</IfModule>

Après ces modifications et un redémarrage du service httpd le résultat est bien meilleur.

Attention toute fois en désactivant certains protocoles SSL, vous allez bloquer l’accès à certains devices comme par exemple

  • Android < 4.4
  • Internet Explorer < 11

Si vous souhaitez ne pas brider les utilisateurs d'Internet Explorer 8 à 10 sous windows 7 il suffit de retirer -TLSv1 de l'avant dernière ligne du fichier.

J'ai profité de ce moment de tests pour vérifier aussi le certificat SSL de let's encrypt du site avec les services SSL Labs de Qualys.

Le résultat fut tout aussi bon :

Il ne me reste plus qu'à supprimer quelques Cipher Suites désuètes.

Ressources :