Comment faire taire Apache ou Nginx ?

silence

Quand un serveur est en écoute sur un port, il donne certaines informations au client. Ces informations, l’utilisateur ne les voit pas mais le logiciel si.

Ainsi, si vous visitez un site Web avec NetCat ou Telnet, vous en savez plus sur le serveur d’en face :

nc monserveur 80
get /
...
Server: nginx/1.6.2 (Ubuntu)
...
<hr><center>nginx/1.6.2 (Ubuntu)</center>
...

 

A partir de là, un attaquant peut fouiller sur Internet pour voir les failles de sécurité connues de cette version de serveur.

Attention, ce n’est pas parce que vous cachez le numéro de version qu’un attaquant expérimenté ne peut pas connaître quel serveur vous utilisez. Chaque serveur a une signature bien a lui (une façon de communiquer qui est à chaque version un petit peu différente).

 

Les opérations décrites ici sont un début mais ne suffisent pas à sécuriser les serveurs.

 

Apache, tais-toi !

 

Pour cacher la version de Apache, il faut modifier ces paramètres de /etc/apache2/conf-enabled/security.conf :

ServerTokens Prod
ServerSignature Off

Si vous utilisez PHP, vous devez aussi cacher la version de php.

Dans /etc/php5/apache2/php.ini, désactiver le paramètre suivant :

expose_php = Off

 

Nginx, tais-toi !

 

Pour cacher la version de Nginx, il faut décommenter cette ligne de /etc/nginx/nginx.conf (ou la rajouter si elle n’existe pas) :

server_tokens off;

Si vous utilisez PHP, vous devez aussi cacher la version de php.

Dans /etc/php5/fpm/php.ini, désactiver le paramètre suivant :

expose_php = Off

 

MySQL, fais-gaffe !

 

Et tant qu’à faire, on va aussi sécuriser MariaDB (ou MySQL pour les nostagiques de Sun) gràce à ce script :

secure_mysql

ou bien

mysql_secure_installation

 

Ils font moins les malins maintenant :

 

Après un redémarrage des services, voilà, plus d’information de version :

 

nc localhost 80
get /
HTTP/1.1 400 Bad Request
Server: nginx
Date: Wed, 04 Feb 2015 22:11:38 GMT
Content-Type: text/html
Content-Length: 166
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>

 

Bon maintenant, ce qui vaut pour les serveurs Web vaut aussi pour les autres services :

nmap -A -T4 mon.serveur.fr

 

Sur le même sujet :