2

我正在尝试为 CentOS 上的 Apache 2.4.6 配置 mod_evasive,版本 7.5.1804。我得到了 CentOS 的全新安装,Apache 的全新安装而不提供任何页面或任何东西(例如 index.html 说你好世界),我使用本教程安装了 mod_evasive: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 Bad Request。

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

有什么建议么?

4

3 回答 3

4

您很可能必须更改 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/

于 2020-03-05T21:03:00.993 回答
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 持有无限多个并发连接。

希望这可以节省您的一天!

于 2021-07-06T16:48:27.450 回答
-1

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

我纠正了它,发现安装没问题。

于 2018-07-16T12:30:30.877 回答