У меня есть Ubuntu Server 16, и я использую iptables
как брандмауэр. HTTP
и HTTPS
трафик находится за обратным прокси, который я не могу контролировать, но у меня есть X-Forwarded-For
поле активировано.
Можно ли отфильтровать трафик на iptables
stage вместо добавления правил в Apache?
Если нет, то как лучше всего реализовать черный список в Apache?
На самом деле это вполне возможно, хотя в зависимости от вашего дистрибутива может потребоваться исправление ядра. Здесь string
netfilter, которое позволяет сопоставлять определенные пакеты в зависимости от того, содержится ли в них строка. Мы использовали его в прошлом для обработки 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
iptables
не умеет так глубоко инспектировать пакеты. Даже если бы это было возможно, он мог бы проверять только HTTP-трафик, а не HTTPS. В apache вы можете занести в черный список, используя Limit
директива.