我有一台 ubuntu 10.04 服务器,我使用 apt-get 安装了 mod_evasiveinstall libapache2-mod-evasive
我已经尝试了几种配置,结果保持不变。
阻止确实有效,但是是随机的。
我尝试了低限制、长阻塞期以及短限制。
我期望的行为是,我可以请求网站,直到达到给定时间间隔内的页面或站点限制。之后,我期望被阻止,直到我在阻止期内没有发出任何请求。
然而,情况是,我可以请求网站,过了一会儿,我得到了随机的 403 个块,它们的百分比时而增加时而减少,但它们非常分散。
这是围攻的输出,所以你明白了:
HTTP/1.1 200 0.09 secs: 75 bytes ==> /robots.txt
HTTP/1.1 403 0.08 secs: 242 bytes ==> /robots.txt
HTTP/1.1 200 0.08 secs: 75 bytes ==> /robots.txt
HTTP/1.1 403 0.08 secs: 242 bytes ==> /robots.txt
HTTP/1.1 200 0.11 secs: 75 bytes ==> /robots.txt
HTTP/1.1 403 0.08 secs: 242 bytes ==> /robots.txt
HTTP/1.1 200 0.08 secs: 75 bytes ==> /robots.txt
HTTP/1.1 403 0.09 secs: 242 bytes ==> /robots.txt
HTTP/1.1 200 0.08 secs: 75 bytes ==> /robots.txt
HTTP/1.1 200 0.09 secs: 75 bytes ==> /robots.txt
HTTP/1.1 200 0.08 secs: 75 bytes ==> /robots.txt
HTTP/1.1 200 0.09 secs: 75 bytes ==> /robots.txt
HTTP/1.1 403 0.08 secs: 242 bytes ==> /robots.txt
HTTP/1.1 200 0.08 secs: 75 bytes ==> /robots.txt
HTTP/1.1 403 0.08 secs: 242 bytes ==> /robots.txt
HTTP/1.1 200 0.10 secs: 75 bytes ==> /robots.txt
HTTP/1.1 403 0.08 secs: 242 bytes ==> /robots.txt
HTTP/1.1 200 0.08 secs: 75 bytes ==> /robots.txt
HTTP/1.1 403 0.09 secs: 242 bytes ==> /robots.txt
HTTP/1.1 200 0.10 secs: 75 bytes ==> /robots.txt
HTTP/1.1 403 0.09 secs: 242 bytes ==> /robots.txt
HTTP/1.1 200 0.09 secs: 75 bytes ==> /robots.txt
HTTP/1.1 200 0.08 secs: 75 bytes ==> /robots.txt
HTTP/1.1 200 0.09 secs: 75 bytes ==> /robots.txt
HTTP/1.1 200 0.08 secs: 75 bytes ==> /robots.txt
HTTP/1.1 200 0.10 secs: 75 bytes ==> /robots.txt
HTTP/1.1 200 0.08 secs: 75 bytes ==> /robots.txt
本次测试运行期间实施的精确限制如下:
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 100
DOSPageInterval 10
DOSSiteInterval 10
DOSBlockingPeriod 120
DOSLogDir /var/log/mod_evasive
DOSEmailNotify ***@gmail.com
DOSWhitelist 127.0.0.1
因此我预计被阻止一次后至少还会被阻止 120 秒。
对此有什么想法吗?
我还尝试在不同的地方(vhost、服务器配置、目录上下文)添加我的配置,以及使用或不使用 ifmodule 指令……
这并没有改变任何事情。
答案1
该问题可能是由在 prefork 模式下使用 apache 引起的,mod_evasive 的每个计数器未在进程之间共享。