Comment supprimer l'en-tête Server: de la réponse HTTP avec Apache?

20

Je voudrais supprimer la ligne:

Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g

à partir des réponses HTTP de mon serveur, mais je n'ai rien trouvé d'autre que de modifier include/ap_release.het de compiler Apache moi-même. Je me demandais s'il y avait un moyen que je ne connais pas?

Néo
la source

Réponses:

16

Vous pouvez supprimer ou masquer l'identification du serveur de l'en-tête Http en utilisant le pare-feu d'application Web open source ModSecurity .

Masquage d'identité du serveur

Le changement d'identité du serveur Web est souvent une technique qui aide souvent à ralentir et à confondre les attaquants. Les serveurs Web envoient généralement leur identité avec chaque réponse HTTP dans l'en-tête Server. Apache est particulièrement utile ici, non seulement en envoyant son nom et sa version complète par défaut, mais il permet également aux modules de serveur d'ajouter leurs versions également.

Pour changer l'identité du serveur Web Apache, vous devez entrer dans le code source, trouver où le nom "Apache" est codé en dur, le changer et recompiler le serveur. Le même effet peut être obtenu en utilisant

Directive SecServerSignature:

SecServerSignature "Microsoft-IIS/5.0"

Il convient de noter que même si cela fonctionne assez bien, des attaquants (et outils) qualifiés peuvent utiliser d'autres techniques pour "prendre les empreintes digitales" du serveur Web. Par exemple, les fichiers par défaut, les messages d'erreur, l'ordre des en-têtes sortants, la façon dont le serveur répond à certaines demandes et similaires - peuvent tous révéler la véritable identité. Je chercherai à améliorer encore la prise en charge du masquage d'identité dans les futures versions de mod_security.

Si vous modifiez la signature Apache mais que vous êtes ennuyé par l'étrange message dans le journal des erreurs (certains modules sont toujours visibles - cela n'affecte que le journal des erreurs, de l'extérieur, il fonctionne toujours comme prévu):

[Fri Jun 11 04:02:28 2004] [notice] Microsoft-IIS/5.0 mod_ssl/2.8.12 OpenSSL/0.9.6b \ configured -- resuming normal operations

Ensuite, vous devez réorganiser l'ordre de chargement des modules pour permettre à mod_security de s'exécuter en dernier, exactement comme expliqué pour le chrootage.

Remarque

Pour que cette directive fonctionne, vous devez laisser / définir ServerTokens sur Full.

Lorsque la directive SecServerSignature est utilisée pour modifier la signature du serveur public, ModSecurity commencera à écrire la vraie signature dans le journal des erreurs, pour vous permettre d'identifier le serveur Web et les modules utilisés.

Source: Manuel de référence ModSecurity

Chris_O
la source
Il fonctionne en ce moment mais je pense qu'il n'est pas intelligent d'utiliser un autre nom de serveur existant car vous pouvez déclencher des actions d'attaque.
Codebeat
27

Si vous définissez ServerTokenssur " Prod", vous pouvez réduire l'en-tête sur " Server: Apache". Voir la documentation pour la liste complète des options:

Documentation pour Apache 2.2

Documentation pour Apache 2.4

Remarque: Les paramètres sont les mêmes dans les deux versions, mais la documentation 2.4 ajoute cette note:

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é.

Si vous souhaitez supprimer complètement le mot "Apache", vous devrez modifier la source.

user1686
la source
+1 tnx pour la réponse, j'ai oublié de mentionner à la question que j'étais au courant mais je veux qu'il dise Microsoft IIS ou quelque chose. J'aurais dû le dire clairement.
Neo