我正在尝试在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模式设置为宽松。
有什么建议吗?
答案 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 持有无限多个并发连接。
希望这可以节省您的时间!