Header HTTP : comment cacher le numéro de version de Nginx ?

I. Présentation

Dans ce tutoriel, nous allons voir comment configurer Nginx pour cacher le numéro de version dans le header HTTP ou sur les pages d'erreurs générées par le serveur Web.

Lorsque l'on configure un serveur Web, que ce soit avec Nginx ou Apache, l'applicatif se montre un peu trop bavard dans sa configuration par défaut. Si l'on regarde les en-têtes HTTP (Header HTTP) ou que l'on génère une page d'erreur, on peut facilement obtenir le numéro de version du serveur Nginx. Une information importante si l'on se place dans la peau d'un attaquant : le numéro de version peut permettre de savoir si le serveur est à jour ou non, et s'il n'est pas à jour, cela permet de rechercher d'éventuelles failles de sécurité associée à la version installée.

Le numéro de version est récupérable avec une simple requête CURL ou en générant une erreur sur le site Web avec un navigateur. Par exemple :

Je pars du principe que votre serveur Nginx est déjà en place. Si besoin, référez-vous à ce tutoriel : Installation de Nginx

II. Nginx et la directive server_tokens

Tout va se jouer dans le fichier de configuration de Nginx, que je vous propose de modifier avec votre éditeur de texte préféré. Pour ma part, ce sera avec nano, ce qui donne :

sudo nano /etc/nginx/nginx.conf

Pour ne plus afficher la version de Nginx, il faut ajouter la directive server_tokens au sein du bloc "http{ }". Cette directive devra avoir la valeur "off". En fait, soit vous l'ajoutez vous-même, soit vous décommentez la ligne existante et prête à l'emploi (en retirant le caractère "#") :

server_tokens off;

En image, cela donne :

Pour afficher de nouveau le numéro de version, il suffit de commenter la ligne ou d'indiquer "on" comme valeur. Une fois que la modification est effectuée : sauvegardez et fermez le fichier.

Redémarrez le service Nginx :

sudo systemctl restart nginx

Ensuite, rendez-vous dans votre navigateur et accédez à une page qui génère une erreur. Et là, vous verrez que c'est simplement précisé "nginx" mais que le numéro de version n'est plus spécifique : c'est top !

Grâce à cette modification, on peut savoir que le serveur est sous Nginx mais on ne connaît pas le numéro de version.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5471.Voir tous les posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.