Geeek - Le blog Geek & High-tech

Je vous avais précédemment présenté une manière de valider facilement la sécurité du SSL de votre site via SSL Labs, voici SecurityHeaders.com un autre outil en ligne complémentaire permettant de valider le bon usage des entêtes HTTP afin de garantir le bon niveau de sécurité de votre site Web.

Quelles sont les entêtes HTTP pour renforcer la sécurité de son site Web ?

Les entêtes HTTP permettant de renforcer la sécurité de votre site Internet sont souvent omises car assez peu connues des développeurs. Elles sont pourtant indispensables pour garantir un bon niveau de sécurité de votre site Web.

Le portail SecurityHeaders.io est libre d'utilisation, sans pub et s'inspire fortement du mécanisme de notation de SSL Labs de Qualys.

Il offre une note entre A+ et R en fonction du respect de l'usage des entêtes liés à la sécurité de la norme HTTP.

La note A+ n'est pas simple à obtenir et nécessite un renforcement de tous les aspects de la sécurité.

Les 6 entêtes HTTP les plus simples à positionner et accessibles tous sont les suivantes :

  • Strict-Transport-Security
  • X-Frame-Options
  • X-Content-Type-Options
  • X-XSS-Protection
  • Referrer-Policy
  • Permissions-Policy

Comment configurer des entêtes HTTP sécurisées ?

Ces entêtes HTTP peuvent se configurer tout simplement au travers d'un fichier de configuration sur votre serveur Web.

Dans mon cas j'utilise NGINX comme serveur Web, il dispose de l'instruction "add_header" pour ajouter des entêtes aux réponses HTTP réalisées par mon serveur.

J'ai créé un fichier "/etc/nginx/snippets/security.conf" dans lequel j'ai positionné toutes les optimisations de sécurité pour mes sites Web.
J'ai ensuite réalisé un "include" de ce fichier sur la configuration de mes sites dans le répertoire "site-enabled".

Voici un exemple de configuration simple pour NGINX :

add_header Content-Security-Policy "default-src 'self' 'unsafe-inline';" always;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload' always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Xss-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin" always;
add_header Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()";

Ce paramétrage est le paramétrage le plus mimimal qui vous permettra de passer les premiers niveaux de tests de sécurité.

Content Security Policy et Public Key Pinning : Deux entêtes plus complexes à configurer

Les entêtes de Content-Security-Policy et de Public-Key-Pins, recommandés par Securityheaders.com, sont les plus complexes à configurer.

D'une part parce que les CSP nécessitent une excellente maîtrise des ressources embarquées sur les pages de votre site, vous devrez détailler méticuleusement tous les domaines Internet qui seront autorisés à intégrer du contenu sur votre site Web. Cela nécessite une phase de test importante des pages de votre site Web car une mauvaise entête CSP pourrait rendre le contenu de votre site illisible et produire des erreurs de sécurité sur les navigateurs de vos visiteurs. Pour vous aider à construire votre règle de CSP, vous pouvez utiliser le plugin "Policy Generator" de csper.io.

Enfin, l'entête "public key pinning", qui permet de se protéger d'attaques via l'utilisation certificats frauduleux émis par des autorités de certification nécessite de bonnes compétences techniques afin de ne pas bloquer le trafic sur votre site. D'autant plus si vous utilisez des certificats Letsencrypt qui sont renouvelés tous les 3 mois ... Enfin, Si comme moi vous utilisez un CDN comme Cloudflare, cette entête HTTP ne peux pas être mise en oeuvre comme l'indique la documentation du produit.

En conclusion

Si vous souhaitez vérifier dès maintenant la sécurité de votre site, l'outil est disponible en ligne à cette adresse : SecurityHeaders.com

N'oubliez pas de décocher la case "Hide result" pour éviter que le résultat de l'audit de votre site soit affiché à l'ensemble des visiteurs de cette plateforme.

Si vous souhaitez aller plus loin dans la sécurisation de votre serveur Web, je vous invite à lire mon article sur le déploiement de Portsentry et Fail2ban.


Vous êtes correctement abonné à Geeek
Bienvenue ! Vous êtes correctement connecté.
Parfait ! Vous êtes correctement inscrit.
Votre lien a expiré
Vérifiez vos emails et utiliser le lien magique pour vous connecter à ce site