====== Masquer la version de Apache ======
Après installation de Apache 2, il est facile pour n'importe qui de voir quelle version est utilisée. Cela peut s'avérer dangereux car quelqu'un connaissant les failles de sécurités pour une version donnée pourra deviner comment attaquer le serveur. Il est possible de masquer la version de Apache afin de ne pas donner trop d'informations à quelqu'un de potentiellement malveillant.
Sous Debian (et ses dérivées), il faut modifier le fichier ///etc/apache/conf.d/security//. Ce fichiers contient deux directives : **ServerTokens** et **ServerSignature**.
**ServerTokens** est la directive qui permet de contrôler le type de version qui sera renvoyée dans l'en-tête de la réponse envoyée au navigateur. Cette directive peut avoir plusieurs valeurs.
^ Valeur ^ Version renvoyée ^
| Full | Server: Apache/2.2.16 (Debian) PHP/5.3.3 mod_ssl/2.8.31 OpenSSL/0.9.8o |
| OS | Server: Apache/2.2.16 (Debian) |
| Minimal | Server: Apache/2.2.16 |
| Minor | Server: Apache/2.2 |
| Major | Server: Apache/2 |
| Prod | Server: Apache |
Par défaut Apache 2 utilise la valeur **Full** mais pour un serveur en production il est recommandé d'utiliser la valeur **Prod** qui est celle qui donne le moins d'informations concernant Apache 2 et son utilisation.
**ServerSignature** est la directive qui permet de contrôler le bas de page lorsque le serveur renvoie des pages comme des erreurs 404. Cette directive a trois valeurs possibles :
- **On** qui est la valeur par défaut. Elle ajoute une ligne contenant le serveur, sa version, les éventuels modules utilisés, etc... Cela dépend tout de même de la valeur attribuée à la directive **ServerTokens**.
- **Off** n'ajoute pas de ligne en bas de page.
- **EMail** inclut toutes les informations comme **On** mais ajoute en plus un champ **mailto:** vers l'adresse configurée avec la directive **ServerAdmin**.
Par défaut, les serveurs sous Debian utilisent la valeur **On**, il est donc plutôt conseillé d'utiliser la valeur **Off**.
Une fois les valeurs modifiés en redémarre Apache 2.
service apache2 restart
Et l'on peut maintenant voir ce que le serveur renvoie comme signature.
telnet respawner.fr 80
Trying 2a01:e0b:1:126:ca0a:a9ff:fec8:e11b...
Connected to respawner.fr.
Escape character is '^]'.
HEAD / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Thu, 26 Jan 2012 17:14:14 GMT
Server: Apache
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=iso-8859-1
Connection closed by foreign host.
Dans la même veine, il est possible de cacher la version de PHP. Pour cela, on édite le fichier //php.ini// utilisé. Sous Debian, on le trouve dans ///etc/php5/[type]/// où //[type]// dépend de la façon dont PHP est utilisée (apache2, cgi, cli). Dans le fichier on recherche la variable **expose_php** et on lui attribut la valeur **Off**.