Masquer les spécifications techniques de son serveur est un bon point en terme de sécurité. Cela permet d'éviter une exposition de vos outils et de leurs versions, donnant directemment accès aux failles et aux vecteurs d'attaque associés.
Un exemple avec la simple commande telnet nous permet de récupérer l'OS, le serveur HTTP utilisé et sa version : Apache/2.4.18 (Ubuntu).
Ces informations sont directemment accessibles via la réponse HTTP et l'entête Server. J'utilise Chromium, mais ces informations sont accessibles avec les inspecteurs de tous les navigateurs web modernes.
Certaines configurations peuvent aller jusqu'à vous donner les langages d'interprétation associés (PHP, Perl ...) et leurs versions. Dans le cas du serveur Apache, deux clés de configuration sont disponibles et vont nous permettre de manipuler ces informations :
- ServerSignature : https://httpd.apache.org/docs/2.2/fr/mod/core.html#serversignature
- ServerTokens : https://httpd.apache.org/docs/2.2/fr/mod/core.html#servertokens
J'utilise Apache 2.4.12 pour Ubuntu, le fichier de configuration à modifier est le suivant :
/etc/apache2/conf-available/security.conf
Placer le ServerSignature à Off permet de désactiver la signature du serveur sur les pages qu'il génère automatiquement (comme les pages d'erreurs par exemple).
Placer le ServerTokens à Prod ne renverra plus que le vendor de votre serveur Web (dans mon cas Apache). Sa version et les outils/mods associés seront masqués.
Après modification, il est nécessaire de redémarrer le serveur :
Finalement, seul le vendor de votre serveur est exposé :