Любой способ заблокировать IP-адрес хоста спуфинга заголовка?
Я уже добавил следующее в мою конфигурацию nginx для работы с поддельными доменами:
if ($host !~* ^(.*example.org|\d+\.\d+\.\d+\.\d+)$ ) {
return 444;
}
Прямо сейчас это заносит в белый список IP-адреса, так как мне нужно принять их для определенных запросов.
Это за AWS ELB, поэтому он также должен отвечать на IP-адрес.
В идеале я бы хотел, чтобы он принимал только свой собственный общедоступный и собственный частный IP-адрес. Однако я не хочу жестко кодировать это в конфигурации, так как это экземпляры AWS.
Поэтому я думаю, мне интересно, если кто-нибудь придумал решение для блокировки поддельных заголовков хоста, которое конкретно ограничивает желаемые IP-адреса.
Лучшая идея, которую я могу придумать, - это скрипт, который генерирует файлы конфигурации, добавляет правильные IP-адреса при запуске, а затем копирует их в папку конфигурации nginx. Но я чувствую, что должно быть более элегантное решение, которое не требует от меня написания сценария запуска.
Почему
Поскольку кто-то спросил, почему я хочу это сделать, у меня есть две цели:
- устранить ошибки Django, которые я получаю в результате ошибок HOST_HEADER SuspiciousOperation
- не позволяйте ботам (которые составляют 99,9% этих запросов на подделку) даже достичь уровня моего веб-приложения.
1 ответ
Ваш лучший вариант - создать часть файла конфигурации и включить ее, потому что nginx не может узнать авторизованные IP-адреса в заголовке Host без него.
server {
listen 80;
server_name mypublicdomain.com anotherdomain.com;
include conf.d\domain-ips;
[ ... ]
}
С файлом domain-ips, содержащим:
server_name x.x.x.x; # Public IP
server_name x.x.x.x; # Private IP