Les "Security Headers"
On trouve sur internet de nombreux tutoriels et outils pour tester et améliorer la sécurité de son site.
securityheaders.com fait parti de ces sites.
Il est important de tester et mettre régulièrement à jour votre site afin de le rendre le plus résistant possible aux différentes attaques et vulnérabilités.
Les "Security Headers" ou en-têtes de sécurité donnent des indications aux navigateurs et clients Http sur ce qu'ils sont autorisés à faire ou ne pas faire.
Les directives sont à intégrer dans les fichiers de configuration Apache ou dans le fichier .htaccess de votre site.
Vous trouverez ici de nombreux renseignements :
https://www.justegeek.fr/activer-len-tete-hsts-sur-apache-pour-proteger-son-site-web/
Un petit tour ici sera également utile :
et ici aussi :
https://www.php.net/manual/fr/security.hiding.php
ainsi que là avec l'outil de test gratuit de la fondation Mozilla :
https://developer.mozilla.org/en-US/observatory
Subresource Integrity (SRI)
La SRI permet au navigateur de vérifier que les fichiers externes qu'il charge (comme les scripts ou les styles CSS) n'ont pas été modifiés. Elle fonctionne en ajoutant un attribut integrity dans la balise <script> ou <link>, qui contient un hash de l'asset.
Si le fichier chargé ne correspond pas à ce hash, le navigateur bloquera son chargement.
Voilà un exemple de code l'utilisant :
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
Si le CDN que vous utilisez ne founit pas le SRI vous pouvez le calculer en ligne à partir de cette adresse :
Les informations sur le serveur web et le système d'exploitation
De la même façon, il est possible de configurer Apache pour qu'il donne le moins d'informations possibles :
sudo nano /etc/apache2/apache2.conf
Ce qui est possible en intégrant les 2 lignes suivantes à votre fichier de configuration Apache :
ServerSignature Off
ServerTokens Prod
Puis un rédémarrage pour le prise en compte :
sudo systemctl restart apache2
Avant :
Le serveur renvoi l'information : Apache/2.4.52 (Ubuntu)
Après :
Le serveur renvoi l'information : Apache
Mais vous pouvez encore aller plus loin en cachant le nom du serveur web !
Il faut installer le module security2 :
sudo apt-get install libapache2-mod-security2
Puis éditer le fichier security2.conf
sudo nano /etc/apache2/mods-available/security2.conf
Pour y ajouter la ligne suivante :
SecServerSignature " "
N'oubliez pas ensuite de redemarrer Apache :
sudo service apache2 restart
Le principe est simple, moins vous donnez d'indications à un éventuel hacker plus ce sera compliqué pour lui.
Vous pouvez également effectuer le réglage suivant :
<IfModule mod_headers.c>
Header edit Set-Cookie ^(.*)$ $1;Secure;HttpOnly;SameSite=Strict
</IfModule>
La directive "Header edit Set-Cookie" permet :
- Secure : le cookie n'est envoyé que sur des connexions HTTPS.
- HttpOnly : empêche l'accès au cookie via JavaScript, réduisant le risque de vol de session via des scripts malveillants.
- SameSite=Strict : empêche le cookie d'être envoyé lors de requêtes intersites, renforçant ainsi la protection contre les attaques CSRF.
Un audit complet et rapide
https://web-check.xyz/ est un outil de sécurité tout-en-un, permettant de révéler le fonctionnement interne de n'importe quel site Web.
Il affichera l'architecture d'un serveur, les configurations de sécurité et les technologies utilisées et donc pour un pirate, les vecteurs d'attaque potentiels.
Vous y trouverez aussi une importante liste de liens pour approfondir vos recherches.
keycdn
Enfin, un dernier outil de test pour tester des url afin de résoudre rapidement les problèmes de site Web, de réseau et de CDN.
Il permet nottement de tester si le http2 fonctionne bien sur votre serveur.