Вчера мы подверглись DDoS-атаке, достигшей бэкэндов нашего веб-сервера (apache2). Интерфейс состоит из подключений haproxy для балансировки нагрузки к веб-серверам. В access.log apache мы увидели тысячи запросов от двух IP-адресов, и через пару часов мы поняли, что это были поддельные / спуфинговые, а не настоящие IP-адреса.
Для пояснения мы сделали "curl GET /" с IP "137.137.136.136", и это действительно тот IP (поддельный), который мы видели в наших веб-журналах
. в другом кластере, где мы используем nginx в качестве обратного прокси, изменение / создание заголовка X-Forwarded-For не работает. Это означает, что даже если вы введете случайный IP-адрес в конкретный заголовок, nginx все равно передаст правильный IP-адрес внутреннему веб-серверу?
Это связано с haproxy?
Кто-нибудь может подтвердить, что созданные заголовки X-Forwarded-For могут проходить через haproxy?
Почему этого не происходит в nginx?
Как вы предотвратите это?
В haproxy, если у вас нет ничего, что могло бы предотвратить это, это нормально, я не знаю ngnix, но я решил таким образом с помощью haproxy:
в параметрах по умолчанию :
forwardfor
В моем определении внешнего интерфейса haproxy у меня есть:
reqidel ^X-Forwarded-For:.*
Это удаляет X-Forwarded-For
в HTTP-запросе, если клиент пытается подделать, а haproxy возвращает настоящий заголовок в HTTP-ответе с истинный IP-адрес
Если вы хотите использовать X-Forwarded-For
для проверки IP-адреса HTTP-клиентов, вам необходимо удалить его, если он существует в HTTP-запросе, потому что клиент, использующий HTTP-прокси иногда устанавливайте локальный IP-адрес в X-Forwarded-For