143 votes

Puis-je masquer toutes les informations relatives au serveur et au système d'exploitation ?

Je ne veux pas que quelqu'un puisse détecter que j'utilise NGINX ou même Ubuntu depuis Internet. Il existe des outils (comme BuiltWith) qui analysent les serveurs pour détecter les outils qu'ils utilisent. De même, certains outils de craquage pourraient aider à la détection. Quelle est la meilleure solution / la plus proche que je puisse obtenir pour cacher toutes ces informations de l'extérieur ?

186voto

Andy Points 3666

Vous pouvez l'empêcher d'afficher la version de Nginx et le système d'exploitation en ajoutant

server_tokens off;

à un http , server ou location le contexte.

Si vous souhaitez supprimer complètement l'en-tête Server, vous devez compiler Nginx avec le module Headers More, car l'en-tête est codé en dur dans le code source de Nginx, et ce module permet de modifier n'importe quel en-tête http.

 more_clear_headers Server;

Cependant, il existe de nombreuses façons cachées que les serveurs exécutent par accident via leur implémentation et qui peuvent aider à identifier le système. Par exemple, la façon dont il répond à une mauvaise demande SSL. Je ne vois pas de moyen pratique d'empêcher cela.

Certaines des choses que je pourrais suggérer :

  • modifier les modèles d'erreur
  • bloquer tous les ports sauf les services nécessaires

58voto

packetlord Points 741

Si vous avez installé nginx à l'aide d'apt-get dans Debian ou Ubuntu, vous devrez peut-être installer le paquet nginx-extras pour définir ou supprimer l'en-tête "Server".

Une fois ceci fait, vous pouvez ajouter les lignes ci-dessous dans nginx.conf (habituellement /etc/nginx/nginx.conf) :

Pour effacer complètement l'en-tête "Server" :

more_clear_headers Server; 

Pour définir une chaîne personnalisée comme "Serveur".

more_set_headers 'Server: some-string-here';

25voto

fearless_fool Points 213

@Martin F. Oui, c'est possible. Vous devrez le compiler à partir des sources et modifier ce qui est nécessaire avant de compiler les sources.

Je suppose que vous avez téléchargé la dernière version stable, que vous l'avez décompressée et que vous savez où se trouvent les fichiers. Si c'est le cas, faites ce qui suit :

nano src/http/ngx_http_header_filter_module.c

Ensuite, cherchez la ligne 48 si je me souviens bien.

static char ngx_http_server_string[] = "Server: nginx" CRLF;

Remplacer nginx par MyWhateverServerNameIWant, par ex.

static char ngx_http_server_string[] = "Server: MyWhateverServerNameIWant" CRLF; 

Dann

nano src/core/nginx.h 

cherchez la ligne

#define NGINX_VER          "nginx/" NGINX_VERSION

changez "nginx/" en "MyWhateverServerNameIWant/" pour qu'il soit lu

#define NGINX_VER          "MyWhateverServerNameIWant" NGINX_VERSION

Enfin, si vous voulez aussi changer le numéro de version

cherchez la ligne #define NGINX_VERSION "1.0.4"

et remplacez "1.0.4" par la version que vous souhaitez. Par exemple, cela donnera

#define NGINX_VERSION      "5.5.5"

J'espère que cela vous aidera. Néanmoins. La sécurisation d'un serveur va bien au-delà du fait de ne pas montrer ce qui est en cours d'exécution. PHP est par nature peu sûr, tout comme linux. Bien sûr, Linux peut être assez sécurisé si toutes les mesures nécessaires sont prises pour obtenir une sécurité décente. En ce qui concerne PHP, je recommande l'utilisation de Suoshin pour aider à renforcer la sécurité de votre code.

18voto

Aamish Baloch Points 191

1) Installer nginx-extras à côté de nginx :

apt install nginx-extras

2) Ouvrir nginx.conf et ajoutez les lignes suivantes à l'intérieur http bloc :

more_clear_headers Server;
server_tokens off;

remove nginx server header

3) Redémarrer nginx

7voto

matschaffer Points 329

Après avoir passé beaucoup de temps à travailler sur la façon de faire une saveur personnalisée de nginx sur ubuntu, j'ai réalisé que vous pouvez utiliser le module lua pour cela.

Sur ubuntu 14.04, si vous installez le fichier nginx-extras vous pouvez supprimer l'en-tête du serveur en utilisant :

header_filter_by_lua 'ngx.header["server"] = nil';

Lancez ceci dans le bloc http et chaque requête sera dépourvue d'un Server en-tête.

Si cela ne fonctionne pas, exécutez nginx -V pour vérifier que le module lua est compilé dans votre copie de nginx. Si ce n'est pas le cas, il existe probablement un autre paquetage que vous pouvez utiliser pour l'obtenir.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X