Назад | Перейти на главную страницу

'iptables' перенаправляет определенные IP-адреса

У меня есть несколько сайтов с высокой посещаемостью, и я страдаю от оскорбительных пользователей.

Я бы хотел их заблокировать и попросить сказать 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 Вот который мог бы вам помочь.