我们正在使用 HAproxy 作为前端负载平衡器/代理,并正在寻找解决方案来阻止随机 IP 地址堵塞集群。
有谁知道 HAProxy 的配置,如果请求在规定的时间内超过某个阈值,该配置可以阻止来自单个 IP 的请求。或者有谁能建议一种可以放在 HAProxy 前面来处理这种阻止的软件解决方案。
答案1
失败2ban能够添加防火墙(iptables)规则来阻止响应日志文件条目的流量,因此如果您可以让 HAProxy 为请求写入日志条目,fail2ban 就可以为您限制速率。
答案2
只需使用常规 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”模块,但我还没有尝试过
答案3
这取决于您是否希望在重新启动后保留被拒绝的 IP。这些路由在重新启动时会丢失(除非您添加到 rc.local 等)。但在紧急情况下,当我遇到一些恶意的人攻击我们的某些系统时,我只是向 haproxy 服务器添加一个空路由。
route add -host[net] 目标[/prefix] gw 127.0.0.1
这很快,不需要编辑 iptables,只需删除路由即可。