Пользователь каким-то образом избегает IP-блокировки в apache 2.2 / 2.4, и я не могу понять, как это сделать. Компания, в которой я работаю, размещает сотни сайтов в разных центрах обработки данных; этот пользователь атакует несколько сайтов, которые мы размещаем.
В зависимости от центра обработки данных, пользователь входит со своим IP в remote_addr
или X-Forwarded-For
поля. Мы ведем два списка «плохих участников», которые находятся в файле, на основе их IP-адресов в полях remote_addr или X-Forwarded_For, и этот файл включается в apache.conf
. Линии либо выглядят как SetEnvIf X-Forwarded-For 41\.216\.xxx\.xxx BlockedBot
или SetEnvIf Remote_Addr 41\.216\.xxx\.xxx BlockedBot
. Затем в нашем apache.conf, внизу, у нас есть следующее:
<Location />
<IfVersion < 2.4>
AuthType none
Require valid-user
Satisfy any
Order Deny,Allow
Deny from env=BlockedBot
Deny from env=EmptyHost
</IfVersion>
<IfVersion >= 2.4>
<RequireAll>
Require all granted
Require not env BlockedBot
Require not env EmptyHost
</RequireAll>
</IfVersion>
</Location>
Моя проблема в том, что после помещения ip этого плохого актера в оба файла, убедившись, что они оба включены, его запросы все равно проходят нормально. Чтобы дважды проверить, я использовал curl с IP-адресом плохого актера в поле X-Forwarded-For, и он правильно блокирует мой запрос:
curl --header "X-Forwarded-For: 41.216.xxx.xxx" www.testexample.com/images/fpo/check-14aca5cd1a.png
Плохой субъект, отправляющий такой же точный запрос с его IP в поле XFF, получает код состояния 200, без проблем. Как это возможно?