Мы используем HAproxy в качестве внешнего балансировщика нагрузки / прокси и ищем решения для блокировки случайных IP-адресов от засорения кластера.
Кто-нибудь знаком с conf для HAProxy, который может блокировать запросы, если они превышают определенный порог с одного IP в течение определенного периода времени. Или кто-нибудь может предложить программное решение, которое можно было бы разместить перед HAProxy для обработки такого рода блокировки.
fail2ban может добавлять правила брандмауэра (iptables) для блокировки трафика в ответ на записи файла журнала, поэтому, если вы можете сделать записи журнала для запросов HAProxy, fail2ban может ограничить скорость для вас.
Просто используйте обычные IPtables. Пример ниже для ssh, надеюсь, вы уловили идею.
из http://www.debian-administration.org/articles/187
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Также есть модуль "hashlimit", но я его не пробовал
В зависимости от того, хотите ли вы, чтобы запрещенные IP-адреса сохранялись при перезагрузке или нет. Эти маршруты теряются во время перезагрузки (если вы не добавили в rc.local и т. Д.). Но в крайнем случае, когда у меня были неприятные люди, забивающие некоторые из наших систем, я просто добавлял нулевой маршрут к серверу haproxy.
route add -host [net] Target [/ prefix] gw 127.0.0.1
Это быстро, не требует редактирования iptables и может быть извлечено, просто удалив маршрут.