Il y a quelques jours, j'ai découvert, un peu par hasard, securityheaders, un site permettant de tester un peu le sécurité de son site internet, du moins en ce qui concerne les mécanismes contenus dans les en-têtes de trame HTTP. Cela fait maintenant un moment que JusteGeek tourne en HTTPS puisque j'ai effectué la migration en juin 2015 et confiant en moi même, je me suis dis que j'allais le tester pour voir un peu ce que cela donne. J'ai donc soumis Justegeek.fr à l'examen du site securityheaders et j'ai eu une drôle de surprise, puisque j'ai obtenu la note de... F soit la pire note du site il me semble... En même temps, je ne suis pas un professionnel de la sécurité et j'apprends au fur et à mesure donc cela ne me choque pas tant que ça (mais c'est vexant quand même 😆 ). J'ai donc analysé tout cela et procédé à quelques modifications côté serveur. Ce billet va porter sur l'un des changements effectués concernant le mécanisme HSTS sur Apache. D'autres billets paraîtront dans les prochains jours sur d'autres aspects, le but étant de transformer cette note F en une bien meilleure note (le A si possible^^).
HTTP Strict Transport Security
HTTP Strict Transport Security, plus connu sous le sigle HSTS est un mécanisme qui demande au client (le navigateur) de remplacer tous les liens non sécurisés par des liens sécurisés. Ce mécanisme permet donc de s'assurer que seules des requêtes HTTPS seront utilisées au cours de la navigation sur le site, quels que soient les liens contenus dans la page Web. Ce mécanisme peut également s'appliquer aux sous-domaines si l'on précise la directive includeSubDomains dans la configuration. Ainsi, les sous domaines seront eux aussi affichés en HTTPS.
Configurer HSTS sur Apache
Pour activer le protocole HSTS sur Apache dans les en-têtes de trames, le plus simple est de modifier la configuration du serveur Apache. Ainsi, si le serveur héberge plusieurs sites, tous bénéficieront de cette directive. Pour cela, il convient d'éditer le fichier /etc/apache2/conf-available/security.conf pour ajouter la ligne ci-dessous :
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Une fois que c'est fait, rechargez simplement la configuration d'Apache :
service apache2 reload
Si vous n'avez pas le main sur la configuration Apache (si par exemple vous utilisez un hébergement mutualisé), vous pouvez activer HSTS grâce au fichier .htaccess à la racine de votre site. Il vous suffira d'y ajouter la ligne suivante dans la section mod_headers :
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>
HSTS Preloading
Comme expliqué plus haut dans ce billet, implémenter le protocole HSTS permet de garantir que, lors de la session, tous les liens utiliseront HTTPS. C'est très bien, mais est-ce suffisant à 100% ? Non ! Car il faut aussi protéger le début de la session. En effet, le premier échange ne sera pas effectué en HTTPS, puisque le client ne sait pas encore que le site web utilise HSTS. C'est là qu'intervient la notion de HSTS preloading. L'idée ici est de faire inscrire son domaine sur un liste internationale utilisée par les navigateurs internet. Ainsi, les navigateurs savent qu'ils devront utiliser HTTPS dès le début de la session.
Pour activer le HSTS preloading, il est important de bien préciser la directive preload lorsque l'on met en place HSTS. Ensuite, il convient de s'inscrire sur la liste officielle pour que cela soit effectif. Pour tester son éligibilité et demande son enregistrement sur la liste HSTS preloading, cela se passe ici.
Bon, en toute transparence, je ne l'ai pas encore fait puisque je dois d'abord retravailler sur les mécanisme de redirection afin d'être éligible au préchargement HSTS.
Conclusion
Et bien voilà. C'est terminé. L'effort pour la mise en oeuvre du mécanisme HSTS sur Apache est donc relativement faible et cela permet d'améliorer un peu la sécurité de son site internet. Pour ma part, cela m'a permis de passer JusteGeek.fr au grade D sur le site SecurityHeaders !
Bien sûr, je ne me suis pas arrêté là. Je vous présenterai dans les prochains jours les autres mécanismes que j'ai mis en place et contribuant à l'amélioration de la sécurité du site.
Partager la publication "Activer l'en-tête HSTS sur Apache pour protéger son site web"