HAPROXY 背后的 mod_evasive

HAPROXY 背后的 mod_evasive

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

由于某种原因,mod_evasive 抓取并阻止了一些 ip(使用 ApacheBench 测试),但有些可以继续打开更多连接,并且基本上对我的服务器实施 DOS 攻击。

有什么想法可以在 mod_evasive 中将一个 IP 与另一个 IP 区分开来吗?考虑到它位于代理后面,并且真正的客户端 IP 在 apache 日志中可见?

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

rpaf 模块具有与我们的 HAPROXY ip 相同的 RPAFproxy_ips 定义。有什么想法吗?

答案1

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

此外,还有 MaxRequestsPerChild 设置。一旦达到此值,子进程将被终止,统计数据也随之终止。因此,在某些情况下,mod_evasive 根本不起作用。

抱歉,目前我没有更好的替代方案可以推荐。我正在自己寻找。(我还没有确认它是否能更好地与其他 MPM 配合使用。)

参考:

答案2

您可以使用mod_evasive_x使用 X-Forwarded-For 标头值作为客户端 IP 地址和最新稳定版本的mod_rpaf您可以在其中为 RPAF_ProxyIPs 值设置网络子网掩码。对于我在 AWS 中负载均衡器 (ELB) 后面的实例,它可以正常工作。

相关内容