HAPROXY 背后的 mod_evasive

Ela*_*dar 6 haproxy x-forwarded-for apache-2.2

我在 HAPROXY 设置后面有几台 Apache 2 机器,我尝试在这些 Apache 机器上设置 mod_evasive,同时还使用 mod_rpaf 来获取真正的 X-FORWARDED 客户端 IP。

出于某种原因,mod_evasive 获取并阻止了一些 ips(使用 ApacheBench 进行测试),但有些可以继续打开更多连接,并且基本上对我的服务器进行 DOS 处理。

知道什么可以在 mod_evasive 中从另一个 ip 中排除一个 ip 吗?考虑到它位于代理后面并且真实的客户端 ip 在 apache 日志中可见?

mod_evasive的定义是默认值时,DOSWhitelist设定为我们的子网掩码(192.168 例如)。

rpaf 模块有 RPAFproxy_ips 定义和我们的 HAPROXY ip。有任何想法吗?

Mar*_*erg 2

您遇到的问题可能是 mod_evasive 设计的一部分:用于阻止的统计信息保存在每个子进程中。因此,如果您使用 Prefork MPM 并将 MaxClients 设置为 50,则将独立跟踪这 50 个客户端中每个客户端的连接。

此外,还有 MaxRequestsPerChild 设置。一旦达到这个目标,孩子就会被杀死,统计数据也会随之被杀死。所以,在某些情况下,mod_evasive根本不起作用。

很抱歉,目前我没有更好的选择可以推荐。我正在寻找自己。(我还没有确认它是否与其他 MPM 配合使用会更好。)

参考: