У меня есть несколько сайтов с высокой посещаемостью, и я страдаю от оскорбительных пользователей.
Я бы хотел их заблокировать и попросить сказать apache
на port 8080
обслуживание сообщения как
Вас заблокировали, свяжитесь с blabla
Возможно ли это с iptables
?
Ручное обновление iptables нормально, если это всего лишь несколько IP-адресов.
Если их много, взгляните на Fail2Ban для автоматического обновления брандмауэра, например, из сценария python, который анализирует ваш файл журнала Apache.
Конечно.
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -s w.x.y.z -j DNAT --to-destination a.b.c.d:8080
где w.x.y.z
это враждебный адрес, и a.b.c.d
это ваш собственный адрес.
cjc предложил вам fail2ban
, который является отличным инструментом.
Вы не указали, что такое «высокий трафик» и нагружены ли ваши веб-серверы процессором или нет. Если вам нужно записать несколько циклов процессора, mod_security также отлично подходит для блокировки нежелательных посетителей. Он может сразу же блокировать известные IP-адреса из черного списка, а также может блокировать запросы, содержащие некоторые неприятные вещи.
mod_security содержит множество наборов правил из коробки, и вы можете загрузить больше в сети и / или создать свои собственные правила. Считайте его SpamAssassin для HTTP-трафика.
В зависимости от ваших потребностей mod_security может быть излишним для вас и fail2ban
лучшее решение. Взгляните на mod_security и решите сами.
Есть ли причина не использовать сам Apache?
<Directory />
Allow from any
Deny from 198.51.100.37
Order allow,deny
</Directory>
Результатом для пользователя из 198.51.100.37 будет 403
ошибка.
Как предлагали другие, вы можете использовать fail2ban, mod_security, mod_evasive и даже перенаправлять их на другой хост (последнее просто бессмысленно, потому что вы потратите впустую ресурсы).
Мой подход немного отличается - я обычно ограничиваю максимальное количество подключений IP к определенному порту в секунду. Например, я установил где-то около 20-30 соединений в секунду на IP:
iptables -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP
Так что, если кто-то наводняет ваш сервер, это поможет его остановить. Я также рекомендую использовать fail2ban, поскольку это лучший инструмент, который вы можете найти. Он может анализировать практически все типы журналов, которые вы ему вводите, и вы можете настроить действия, которые fail2ban будет выполнять против злоумышленников.
P.S. Вы также можете проверить мой ответ на аналогичный вопрос о DoS / DDoS Вот который мог бы вам помочь.