如何根据 IP 对 Apache 服务器进行速率限制?

如何根据 IP 对 Apache 服务器进行速率限制?

我目前在 PHP/mysql 中有一个自定义实现,用于跟踪 Web 访问并阻止超过同一 IP 特定速率的访问。即,如果给定源 IP 在过去 Y 秒内访问服务器超过 X 次,则它将被重定向到预定义位置 Z,并且正常请求处理将被中止。

它运行正常,但是给 MySQL 带来了很大的压力。

所以我想知道是否有一个专门的工具可以实现这个功能?也许是 Apache 模块或某种过滤器?

答案1

最好的

  • mod_evasive(更加注重减少 DoS 攻击)
  • mod_cband(最适合‘正常’带宽控制的功能)

以及其余

另一个选项-mod_qos

配置并不简单——但功能强大。

http://opensource.adnovum.ch/mod_qos/

答案2

您可能能够使用 iptables 在较低级别执行此操作并完全绕过 apache/mysql....匹配并转发到另一个主机/端口?我只删除了:

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 6 -j DROP

相关内容