web-dev-qa-db-fra.com

Impossible de supprimer le serveur: en-tête Apache

J'ai "Server: Apache" dans mes en-têtes de réponse HTTP et je veux le supprimer. J'ai suivi des instructions comme l'ajout de ceci à httpd.conf:

ServerSignature Off  
ServerTokens Prod
Header unset Server

Mais la dernière ligne n'a aucun effet. Les deux premières lignes ont changé le contenu de l'en-tête (auparavant, il contenait également des informations sur OS et PHP), mais je dois le supprimer complètement. Comment faire ça?

15
Audiophile

Apache ne vous permet pas de supprimer complètement cela. En fait, certains développeurs s'opposent avec véhémence à l'ajout, bien qu'il s'agisse d'un simple changement de code qui a été suggéré (et même écrit!) Plusieurs fois. Voir ici et ici pour quelques-unes des discussions où cela a été soulevé et rejeté.

Ils donnent diverses raisons à cela, notamment:

  1. Il pourrait être plus difficile de compter le nombre d'installations d'Apache dans la nature. C'est, je suppose, la principale raison. L'utilisation du serveur Web est farouchement contestée et l'un des rivaux d'Apache (qui peut ou non commencer par un N) publie régulièrement comment il gagne du terrain sur Apache et la plupart des analyses seront basées sur l'en-tête HTTP, donc je peux comprendre cette réticence à faire il est plus facile de cacher cela.

  2. La sécurité par obscurité est un mythe et donne un faux sentiment de sécurité car il est facile de prendre les empreintes digitales d'un serveur pour voir de quel logiciel il s'agit, en fonction de la façon dont il répond à certaines demandes. Bien qu'il y ait une idée de la vérité, le fait de spécifier ServerTokens comme complet par défaut définitivement est un problème de sécurité qui fuit beaucoup trop d'informations que ce qui devrait être affiché par défaut. sur un site Web public.

  3. Il peut être contraire à la spécification HTTP de ne pas fournir d'en-tête de serveur. Cela semble être dans certains litiges et ne répond toujours pas pourquoi ils ne vous permettent pas de le changer en une chaîne aléatoire plutôt qu'en Apache.

  4. Il est difficile de déboguer les problèmes, mais vous penseriez que quiconque ayant besoin de déboguer connaîtrait ou serait en mesure de connaître les versions exactes.

  5. Les serveurs proxy "pourraient" traiter les demandes différemment s'ils connaissent le type de serveur à l'autre extrémité. Ce qui est faux des serveurs proxy à mon humble avis et je doute que ce soit fait beaucoup plus.

  6. Si les gens veulent vraiment modifier ou masquer cet en-tête, ils peuvent modifier le code source. Ce qui est, franchement, une recommandation dangereuse à conseiller aux personnes n'ayant aucune expérience du code à faire et pourrait entraîner d'autres problèmes de sécurité s'ils s'exécutent à partir d'une version non packagée juste pour ajouter cela.

Ils vont même jusqu'à l'ajouter dans la documentation officielle :

Il n'est pas recommandé de définir ServerTokens sur moins que minimal car cela rend plus difficile le débogage des problèmes interopérationnels. Notez également que la désactivation de l'en-tête Server: ne fait rien du tout pour rendre votre serveur plus sécurisé. L'idée de "sécurité par l'obscurité" est un mythe et conduit à un faux sentiment de sécurité.

Ce raisonnement est, à mon humble avis, ridicule et, comme je l'ai dit, si c'est la principale raison de ne pas l'autoriser, je ne vois pas pourquoi ils ne changent pas de position. Dans le pire des cas, cela n'ajoute rien comme ils disent et cela empêche que cette question ne soit soulevée de temps en temps, bien que personnellement, je pense que moins les informations que vous donnez sont inutiles, mieux c'est, alors préférez pouvoir désactiver cela.

Jusqu'à ce demi-tour improbable, vous vous retrouvez avec:

  1. Réglage minimal (il affichera donc "Apache") - ce qui est probablement assez bon
  2. Modifier le code source - ce qui est exagéré sauf pour les plus paranoïaques, et signifie que le même changement doit être appliqué sur chaque nouvelle version.
  3. Installer ModSecurity - qui (au moins utilisé pour) vous permet d'écraser (mais pas de supprimer) cet en-tête sur ce que vous vouliez cacher le logiciel serveur. Probablement exagéré pour installer ce juste pour cela, bien qu'il y ait d'autres avantages à un WAF.
  4. Proxy Apache derrière un autre serveur Web qui vous permet de modifier ce champ.
  5. Basculez vers un autre serveur Web.

Il convient toutefois de noter, pour les points 4 et 5, que la plupart des autres serveurs Web ne vous permettent pas de désactiver cela non plus, ce n'est donc pas un problème propre à Apache. Par exemple, Nginx ne permet pas de désactiver cela sans modifier de la même manière le code source.

39
Barry Pollard