Тема: Invalid http requests
Є робочий додаток на django. В продакшині вже півроку. Коли лише вийшли в прод сипались помилки, типу
Invalid HTTP_HOST header: 'some-domain'. You may need to add 'some-domain' to ALLOWED_HOSTS
В django така поведінка, коли ти не визначаєш налаштування ALLOWED_HOSTS = ['list', 'of', 'domains', 'where deployed'], джанго далі запит не просукає, повертає 400, і на пошту адмінам лист про такі хрінь.
Ну от типу цього: https://stackoverflow.com/questions/405 … ost-header але замість
some-domain
були якісь підозрілі імена, clientapi.ipip.net, her.net (реально) і ще купу іншого, вже не пригадую. Виглядає так що хтось робить запит на сайт, і підробляє `host` http header.?
Але чому nginx пропустив запити до django аппки? В нього ж явно вказано server_name.
В мене в ALLOWED_HOSTS визначено лише домен на якому аппка розгонута.
Потім (через місяць-два) ці запити зникли.
Django слухає 0.0.0.0:8000 через guicorn в докер контейнері. nginx:
server {
listen 80;
server_name mydomain.name www.mydomain.name;
charset utf-8;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name mydomain.name www.mydomain.name;
charset utf-8;
ssl_certificate /etc/letsencrypt/live/...;
ssl_certificate_key /etc/letsencrypt/live/...;
gzip on;
... gzip config here
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header User-Agent $http_user_agent;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
}
}
слухає 80, редіректить на 443 https, і proxy_pass на 127.0.0.1:8000 (аппка з guincorn)
А зараз приходять запити прям ну дуже підозрілі:
Invalid HTTP_HOST header: 'ip_of_server:8000'. You may need to add 'ip_of_server' to ALLOWED_HOSTS.
Request Method: GET
Request URL: http://ip_of_server:8000/public/index.php?s=/index/%5Cthink%5Capp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20%5E%3C?php%20$action%20=%20$_GET['xcmd'];system($action);?%5E%3E%3Ehydra.php
8000 порт відкрити назовні, можна заблокувати через firewall, є сенс?
Або помилка на 0.0.0.0:8000
Invalid HTTP_HOST header: '0.0.0.0:8000'. You may need to add '0.0.0.0' to ALLOWED_HOSTS.
Тут взагалі дивно запит без header? Куди копати, що зробити? Чи забити і все?