1 votes

Comment éviter la "vulnérabilité d'injection d'en-tête d'hôte" dans le serveur proxy Nginx

Veuillez m'aider à prévenir la "vulnérabilité d'injection d'en-tête d'hôte" dans le "fichier de configuration Nginx" donné

 server {
    listen 80 default_server;
    listen [::]:80 default_server;       
    root /var/www/html;        
    index index.html index.htm index.nginx-debian.html;
    server_name _;
            location / {
            proxy_pass http://IP_1/;
            proxy_set_header Host $http_host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Scheme $scheme;
            add_header Cache-Control "no-cache";                
    }
    location /kuphubadmin/ {                
            proxy_pass http://IP_2/;
            proxy_set_header Host $http_host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Scheme $scheme;
            add_header Cache-Control "no-cache";
   }}

Remarque: Le serveur ci-dessus est utilisé comme serveur mandataire.

3voto

Michael Hampton Points 232226

La "vulnérabilité de l'injection d'en-tête d'hôte" signifie que votre serveur accepte n'importe quelle en-tête Host même si ce n'est pas un nom d'hôte valide pour l'un de vos sites web. Dans votre cas, vous avez configuré un bloc server par défaut qui répond à n'importe quel nom d'hôte et envoie toutes ces demandes à votre application web.

C'est facile à corriger dans nginx.

Tout d'abord, vous devez laisser inchangé le bloc server par défaut qui est livré avec nginx. Ne le modifiez en aucun cas. Cela interceptera les requêtes avec des en-têtes Host invalides et ne renverra qu'un document inoffensif "le serveur web fonctionne" ou une erreur 403 Forbidden, ou les deux.

Deuxièmement, vous devez spécifier seulement les noms d'hôtes valides pour votre site dans la directive server_name de votre bloc server personnalisé. Ne pas utiliser _. Par exemple server_name example.com www.example.com;

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