web-dev-qa-db-fra.com

À quoi sert le champ d'en-tête de réponse HTTP "Serveur"?

Ce n'est que récemment que j'ai commencé à remettre en question l'utilisation du champ Server dans l'en-tête de réponse HTTP.

J'ai fait des recherches:

La RFC 2616 déclare:

Serveur 14,38

Le champ d'en-tête de réponse du serveur contient des informations sur le logiciel utilisé par le serveur d'origine pour gérer la demande. Le champ peut contenir plusieurs jetons de produit (section 3.8) et des commentaires identifiant le serveur et les sous-produits importants. Les jetons de produit sont répertoriés par ordre d'importance pour identifier l'application.

   Server         = "Server" ":" 1*( product | comment )

Exemple:

   Server: CERN/3.0 libwww/2.17

Si la réponse est transmise via un proxy, l'application proxy NE DOIT PAS modifier l'en-tête de réponse du serveur. Au lieu de cela, il DEVRAIT inclure un champ Via (comme décrit dans la section 14.45).

  Note: Revealing the specific software version of the server might
  allow the server machine to become more vulnerable to attacks
  against software that is known to contain security holes. Server
  implementors are encouraged to make this field a configurable

Ceci, cependant, ne fait aucune mention de l'objectif de ce champ. Cela me semble divulgation d'informations pour moi. Ces chaînes de serveur donnent beaucoup d'informations, ce qui est idéal pour quiconque essaie de prendre les empreintes digitales du serveur. Des outils d'analyse automatisés identifieraient rapidement les serveurs non corrigés ou vulnérables. Le fait que mon serveur Web présente des informations de version pour lui-même et des modules comme OpenSSL semble être une mauvaise idée.

  • Ce champ est-il nécessaire ... pour quoi que ce soit? Si oui, quoi?
  • Est-ce déjà la meilleure pratique/lieu commun de désactiver ou de modifier ce champ sur les serveurs?

Je pense que, du point de vue de la sécurité, nous voudrions donner à l'ennemi (c'est-à-dire: tout le monde) le moins d'informations possible tout en permettant aux affaires de continuer. Ici est un article intéressant sur la guerre de l'information.

37
ZnArK

Les informations sur le serveur doivent être supprimées des réponses HTTP, et c'est une valeur par défaut non sécurisée pour divulguer ces données. Ce n'est pas un risque de sécurité majeur, ni même un risque de sécurité moyen - mais je ne me sens pas à l'aise d'annoncer de tels détails à mes adversaires. Avoir un numéro de version exact fuit quand et à quelle fréquence vous corrigez vos systèmes de production - même si la version est à jour . Un adversaire connaissant le cycle du patch signifie qu'il sait quand vous êtes le plus faible.

L'en-tête Host HTTP est probablement le plus utile pour Netcraft Web Server Survey . Mais en termes de HTTP, cela ne devrait pas avoir d'importance. C'est pourquoi nous avons des normes, afin que les clients et les serveurs écrits par différents fournisseurs puissent travailler ensemble.

27
rook

Il est utilisé pour tout ce que vous souhaitez utiliser. Je l'ai trouvé utile dans le passé pour les problèmes de conformité de rétro-ingénierie; par exemple. IIS casse HTTP/1.1 ( RFC 2616 ) de nombreuses façons, mais la plupart sont à l'avantage de l'utilisateur en termes de performances et pris en charge par la plupart des navigateurs. En fait la plupart des navigateurs actuels ne respectent plus les règles de la RFC 2616 (maintenant âgée de 13 ans).

J'ai rencontré des problèmes avec des bogues dans le code du serveur HTTP et la configuration dans le passé. Savoir ce qui s'exécute à l'extrémité distante est d'une grande aide pour diagnostiquer et résoudre ces problèmes.

Oui, dans Security 101, on vous dit que masquer ce type d'informations améliore la sécurité, IME les avantages sont limités:

  • Les script kiddies/attaques automatisées ne se soucient pas de voir quel logiciel vous utilisez - ils tirent simplement tous leurs pistolets et espèrent le meilleur.

  • Toute personne raisonnablement compétente devrait être en mesure de déterminer le type de serveur (même si je n'ai pas essayé cela avec des serveurs HTTP, il y a quelques années, je menais une enquête sur les serveurs SMTP - avec une moyenne de 2,1 commandes, j'ai pu trouver le tapez et devinez bien le numéro de version principal des MTA de 12 fournisseurs différents).

11
symcbean