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.