mod_evasive无法在Apache 2.4.6上运行

时间:2018-07-04 11:46:18

标签: apache http-status-code-400 mod-evasive

我正在尝试在CentOS发行版7.5.1804上为Apache 2.4.6配置mod_evasive。我获得了CentOS的全新安装,而Apache的全新安装却未提供任何页面或任何内容(仅示例index.html表示您好,世界),并且我使用了本教程https://www.digitalocean.com/community/tutorials/how-to-protect-against-dos-and-ddos-with-mod_evasive-for-apache-on-centos-7

一切正常,除非我必须运行测试脚本,否则该脚本应将请求发送到服务器并由于mod_evasive而导致403错误。相反,我收到了400错误请求。

我为IPtables切换了firewalld,并且打开了80端口,实际上,示例页面在浏览器中可以正常工作。另外,SELinux模式设置为宽松。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

几天后,我发现mod_evasive提供的测试脚本中出现错误...

我已更正它,发现安装正常。

答案 1 :(得分:0)

例如,您很可能必须更改perl脚本(通常保存在/usr/share/doc/libapache2-mod-evasive/examples/test.pl中)才能使这项工作生效,例如

原始行:

print $SOCKET "GET /?$_ HTTP/1.0\n\n";

返工线路:

print $SOCKET "GET /?$_ HTTP/1.0\r\nHost: 127.0.0.1\r\n\r\n";

来自https://centosfaq.org/centos/apache-mod_evasive-problem-with-testpl/

答案 2 :(得分:0)

问题不在于 mod_evasive 或其配置。就我而言,我必须像下面那样调整 mpm_prefork_module 的配置才能使 mod_evasive 配置工作:

StartServers             10
MinSpareServers          10
MaxSpareServers          10
MaxRequestWorkers        80
MaxConnectionsPerChild   0

通过设置 StartServers = MinSpareServers = MaxSpareServers = {your_magic_number} 和设置 MaxConnectionsPerChild=0 基本上将服务器数量固定为常数,这样就不会产生新的服务器进程,也不会发生连接的回收,允许 Child 持有无限多个并发连接。

希望这可以节省您的时间!