Question

Il existe une option pour masquer la version afin d’afficher uniquement nginx, mais existe-t-il un moyen de le masquer également pour ne rien afficher ni changer d’en-tête?

Était-ce utile?

La solution

Comme Apache, il s’agit d’une modification rapide de la source et de la recompilation. De Calomel.org :

  

Le Server: string est l'en-tête qui   est renvoyé au client pour lui dire   leur quel type de serveur http vous êtes   en cours d'exécution et éventuellement quelle version.   Cette chaîne est utilisée par des endroits comme   Alexia et Netcraft à collectionner   statistiques sur combien et de quoi   type de serveur Web sont en direct sur le   L'Internet. Soutenir l'auteur et   statistiques pour Nginx nous vous recommandons   garder cette chaîne telle quelle. Mais pour   la sécurité que vous ne voulez peut-être pas que les gens   sais ce que tu cours et tu peux   changez cela dans le code source. modifier   le fichier source    src / http / ngx_http_header_filter_module.c   regardez les lignes 48 et 49. Vous pouvez   changer la chaîne à tout ce que vous   veux.

## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49)
static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF;
static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;

Modification du mois de mars 2011: Merci à Flavius ??ci-dessous pour avoir signalé une nouvelle option, en remplacement du standard de Nginx HttpHeadersModule avec la HttpHeadersMoreModule fourchue. La recompilation du module standard reste la solution miracle. Elle est logique si vous souhaitez utiliser le module standard et que vous ne modifiez pas souvent la chaîne du serveur. Mais si vous voulez plus que cela, HttpHeadersMoreModule est un projet solide et vous permet de faire toutes sortes de magie noire à l'exécution avec vos en-têtes HTTP.

Autres conseils

Si vous utilisez nginx pour créer un proxy pour une application dorsale et souhaitez que le back-end annonce son propre en-tête Server: sans que nginx ne l'écrase, vous pouvez accéder à votre . serveur {…} strophe et définissez:

proxy_pass_header Server;

Cela convainc Nginx de laisser cet en-tête seul et de ne pas réécrire la valeur définie par le back-end.

La dernière mise à jour date d'il y a quelque temps, voici donc ce qui a fonctionné pour moi sur Ubuntu:

sudo apt-get update
sudo apt-get install nginx-extras

Ajoutez ensuite les deux lignes suivantes à la section http de nginx.conf , qui se trouve généralement à /etc/nginx/nginx.conf:

sudo nano /etc/nginx/nginx.conf
server_tokens off; # removed pound sign
more_set_headers 'Server: Eff_You_Script_Kiddies!';

N'oubliez pas non plus de redémarrer nginx avec le service sudo nginx restart .

Simple, éditez /etc/nginx/nginx.conf et supprimez un commentaire de

#server_tokens off;

Recherchez la section http .

C’est très simple: ajoutez ces lignes à la section serveur:

server_tokens off;
more_set_headers 'Server: My Very Own Server';

Il existe un module spécial: http://wiki.nginx.org/NginxHttpHeadersMoreModule

  

Ce module vous permet d'ajouter, de définir ou d'effacer toute sortie ou en-tête d'entrée que vous spécifiez.

     

Ceci est une version améliorée de la en-têtes standard module car il fournit davantage d’utilitaires tels que la réinitialisation ou la suppression des " en-têtes intégrés " comme type de contenu , longueur de contenu et serveur .

     

Il vous permet également de spécifier un critère de code d'état HTTP facultatif à l'aide de l'option -s et un critère de type de contenu optionnel à l'aide de l'option -t lors de la modification des en-têtes de sortie. avec les more_set_headers et plus_clear_headers directives ...

Installer les suppléments Nginx

sudo apt-get update
sudo apt-get install nginx-extras

Les détails du serveur peuvent être supprimés de la réponse en ajoutant les deux lignes suivantes dans le fichier nginx.conf (sous la section http)

more_clear_headers Server;
server_tokens off;

Si vous ne souhaitez que changer l'en-tête pour une autre chaîne de cinq lettres ou moins, vous pouvez simplement patcher le fichier binaire.

sed -i 's/nginx\r/thing\r/' `which nginx`

Ce qui, en tant que solution, présente quelques avantages notables. Autrement dit, vous pouvez autoriser le gestionnaire de paquets à gérer votre gestion des versions de nginx (donc, aucune compilation à partir des sources), même si nginx-extras n’est pas disponible pour votre distribution, et vous n'avez pas à vous soucier des autres code de quelque chose comme nginx-extras étant vulnérable.

Bien sûr, vous voudrez également définir l'option les appels de serveur hors , afin de masquer le numéro de version ou corriger la chaîne de formatage.

Je dis "cinq lettres ou moins". bien sûr, vous pouvez toujours remplacer:

  

nginx \ r \ 0

avec

  

bob \ r \ 0 \ r \ 0

laissant les deux derniers octets inchangés.

Si vous voulez réellement plus de cinq caractères, vous voudrez laisser server_tokens et remplacer la chaîne de format (légèrement plus longue), bien qu'une fois encore, il existe une limite supérieure à cette longueur imposée par la longueur de la chaîne de format - 1 (pour le retour de chariot).

... Si rien de ce qui précède n’a de sens pour vous, ou si vous n’avez jamais mis à jour un binaire, vous voudrez peut-être rester à l’écart de cette approche.

Le seul moyen est de modifier le fichier src / http / ngx_http_header_filter_module.c. J'ai changé nginx à la ligne 48 en une autre chaîne.

Ce que vous pouvez faire dans le fichier de configuration nginx consiste à désactiver serveurs_tokens . Cela empêchera nginx d’imprimer le numéro de version.

Pour vérifier les choses, essayez curl -I http://vurbu.com/ | serveur grep

Il devrait revenir

Server: Hai

Après avoir lu la réponse de Parthian Shot, je fouille dans le fichier binaire / usr / sbin / nginx . Ensuite, j'ai découvert que le fichier contenait ces trois lignes.

Server: nginx/1.12.2
Server: nginx/1.12.2
Server: nginx

En gros, les deux premiers sont destinés à la directive server_tokens on; (version du serveur incluse). Ensuite, je modifie les critères de recherche pour qu'ils correspondent à ces lignes du fichier binaire.

sed -i 's/Server: nginx/Server: thing/' `which nginx`

Après avoir creusé plus loin, j'ai découvert que le message d'erreur généré par nginx était également inclus dans ce fichier.

<hr><center>nginx</center>

Il y en a trois, une sans la version, deux d'entre elles incluaient la version. J'ai donc lancé la commande suivante pour remplacer la chaîne nginx dans le message d'erreur.

sed -i 's/center>nginx/center>thing/' `which nginx`

Selon nginx, documentation prend en charge les valeurs personnalisées ou même les exclusion:

Syntax: server_tokens on | off | build | string;

mais malheureusement seulement avec un abonnement commercial :

  

De plus, dans le cadre de notre abonnement commercial, à partir de   version 1.9.13, la signature sur les pages d'erreur et le & # 8220; Serveur & # 8221; réponse   la valeur du champ d'en-tête peut être définie explicitement à l'aide de la chaîne avec   variables. Une chaîne vide désactive l’émission de & # 8220; Serveurs & # 8221;   champ.

Je sais que le message est un peu vieux, mais j’ai trouvé une solution simple qui fonctionne sur une distribution basée sur Debian sans compiler nginx à partir des sources.

Installez d'abord le paquet nginx-extras

  

sudo apt install nginx-extras

Chargez ensuite le module more en-têtes nginx http en modifiant nginx.conf et en ajoutant la ligne suivante à l'intérieur du bloc serveur

  

modules load_module / ngx_http_headers_more_filter_module.so;

Une fois terminé, vous aurez accès aux directives more_set_headers et more_clear_headers.

Voulez-vous parler de la valeur de l'en-tête du serveur dans la réponse? Vous pouvez essayer de changer cela avec une directive add_header, mais je ne sais pas si cela fonctionnera. http://wiki.codemongers.com/NginxHttpHeadersModule

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top