Как предотвратить "уязвимость внедрения заголовка хоста" в прокси-сервере Nginx
Пожалуйста, помогите мне предотвратить "уязвимость внедрения заголовка хоста" в данном "файле конфигурации Nginx"
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";
}}
Примечание. Указанный выше сервер используется в качестве прокси-сервера.
1 ответ
"Уязвимость внедрения заголовка хоста" означает, что ваш сервер принимает любой заголовок хоста, даже если это недопустимое имя хоста для любого из ваших веб-сайтов. В вашем случае вы настроили универсальную
server
блок, который отвечает на любое имя хоста и отправляет все такие запросы вашему веб-приложению.
Это легко исправить в nginx.
Во-первых, вам нужно оставить в покое значение по умолчанию
server
блок, поставляемый с nginx. Ни в коем случае не меняйте. Это перехватит запросы с недопустимыми заголовками Host и отправит им только безобидный документ "веб-сервер работает" или ошибку 403 Forbidden, или и то, и другое.
Во-вторых, вам нужно указать только действительные имена хостов для вашего сайта в
server_name
директива вашего обычая
server
блок. Не использовать
_
. Например
server_name example.com www.example.com;