У меня Ubuntu Server 16, и я использую iptables
в качестве межсетевого экрана. Трафик HTTP
и HTTPS
находится за обратным прокси-сервером, который я не могу контролировать, но у меня активировано поле X-Forwarded-For
.
Можно ли отфильтровать трафик на этапе iptables
вместо добавления правил в Apache?
Если нет, то как лучше всего реализовать черный список в Apache?
iptables
не может проверять это глубоко в пакетах. Даже если бы это было возможно, он мог бы проверять только HTTP-трафик, а не HTTPS. В apache вы можете занести в черный список с помощью директивы Limit
.
На самом деле это вполне возможно, хотя может потребоваться исправление ядра в зависимости от вашего дистрибутива. Существует расширение netfilter string
, которое позволяет сопоставлять определенные пакеты в зависимости от того, содержится ли в них строка. Мы использовали его в прошлом для обработки DDOS-трафика.
Непроверенный пример здесь:
# iptables -A INPUT -m string --string 'X-Forwarded-For: badIP' -j DROP
Имейте в виду, что это довольно грубый инструмент и может привести к неожиданному прекращению трафика - убедитесь, что вы тщательно и четко формулируете свои правила. Как также заявило EEAA, он не будет работать с зашифрованным трафиком.
Дополнительная информация находится здесь: https://www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO-3.html#ss3 .18