0

我按照https://www.atlantic.net/vps-hosting/how-to-install-and-configure-modevasive-with-apache-on-ubuntu-18-04/中的说明安装了 mod_evasive,但配置如下:

    DOSHashTableSize    3097
    DOSPageCount        1
    DOSSiteCount        10
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10

但是当我运行 perl 脚本时,我没有看到 IP 被列入黑名单,所有请求都得到响应 200 ok,而我期待 403 Forbidden :(

我哪里错了??

附加细节:当我重新启动我的 Apache 时,我看到了 6 个实例。当我运行测试 perl 脚本时,立即检查 apache 实例的数量,我看到 30-ish 实例的计数在一段时间后下降到 10。

我的 Apache 配置如下所示:

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

我的 mpm_prefork_module 配置如下所示:

StartServers             5
MinSpareServers          5
MaxSpareServers          10
MaxRequestWorkers        80
MaxConnectionsPerChild   1

这是Apache配置的问题吗?

4

1 回答 1

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-06T14:24:50.610 回答