mod_evasive20
是我 httpd 服务器上加载的模块之一。我读到过关于它可以阻止 DOS 攻击的好文章,想在我的本地主机上试用一下。搜索 mod_evasive 会出现博客文章作者简要描述了它的功能。
除此之外,我似乎找不到关于Apache 模块站点。我想知道它是否是 Apache 认可的模块,因为其网站上没有提及它。
我的文件夹mod_evasive.conf
中有一个文件/etc/http/conf.d
,其中包含以下几行:
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
我从设置中了解到,如果我在一秒钟的间隔内单击刷新或发送表单超过两次,apache 将发出一个403 error
并禁止我访问网站 10 秒钟。但这并没有发生在我的本地主机上。我想知道原因。谢谢。
答案1
Apache 模块站点仅列出随 Apache 官方源代码提供的模块。第三方模块(如 mod_evasive)未列出。每个第三方模块的文档通常由其作者完成,有时文档过于简短甚至缺失。
对于 mod_evasive 来说,也许文档太简短了,因为模块真的很简单,README 文件解释了最重要的细节,选项有“有用的”名称,并且通常默认值对大多数人来说都很好。
至于您在尝试从 localhost 触发 mod_evasive 时没有被阻止的原因,可能是浏览器缓存、过滤代理或其他原因。您可以尝试从控制台使用 wget(或 curl,或类似工具):
while true ; do { wget --output-document=x.txt --no-proxy --no-cache http://localhost ; } ; done
(要停止,只需在控制台中按 Ctrl-C)
通常输出将是类似的(获得 200 或 404 响应):
--2012-07-11 07:29:00-- http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
然后当 mod_evasive 触发时,您将收到类似 403 个响应:
--2012-07-11 07:29:00-- http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2012-07-11 07:29:00 ERROR 403: Forbidden.