问大家一个快速问题 - 我经常在我的 httpd 日志中看到这样的内容:
66.11.122.194 - - [29/Jan/2010:11:06:44 +0000] "GET HTTP/1.1 HTTP/1.1" 400 418 "-" "Toata dragostea mea pentru diavola"
66.11.122.194 - - [29/Jan/2010:11:06:44 +0000] "GET /roundcube//bin/msgimport HTTP/1.1" 404 417 "-" "Toata dragostea mea pentru diavola"
66.11.122.194 - - [29/Jan/2010:11:06:44 +0000] "GET /rc//bin/msgimport HTTP/1.1" 404 413 "-" "Toata dragostea mea pentru diavola"
66.11.122.194 - - [29/Jan/2010:11:06:44 +0000] "GET /mss2//bin/msgimport HTTP/1.1" 404 415 "-" "Toata dragostea mea pentru diavola"
66.11.122.194 - - [29/Jan/2010:11:06:45 +0000] "GET /mail//bin/msgimport HTTP/1.1" 404 415 "-" "Toata dragostea mea pentru diavola"
66.11.122.194 - - [29/Jan/2010:11:06:45 +0000] "GET /mail2//bin/msgimport HTTP/1.1" 404 416 "-" "Toata dragostea mea pentru diavola"
66.11.122.194 - - [29/Jan/2010:11:06:45 +0000] "GET /roundcubemail//bin/msgimport HTTP/1.1" 404 420 "-" "Toata dragostea mea pentru diavola"
...
您明白了,这是一个漏洞扫描脚本。由于我没有将 Web 应用程序安装到标准或远程命名安装中,因此我几乎总是返回 404,但看到这种情况仍然很烦人。所以我的问题是,有没有办法检测/缓解此类攻击,也许可以使用 mod_rewrite 和已知的阻止列表等?或者这是 Web 服务器管理员必须忍受的事情?
谢谢。
答案1
您可以使用mod_security或其他 Web 应用程序防火墙 (waf)。这样,请求仍然会到达您的 Web 服务器,但是 mod_security 会过滤掉标记为可疑的请求。
设置 waf 有多种不同的可能性:
- 在每个 Web 服务器上
- 在中央反向代理上
最好的解决方案在很大程度上取决于您的设置,因此没有通用的答案。但文档应该可以帮助您决定采取什么解决方案。
还有一点需要考虑:
waf 会给你的系统增加更多的复杂性,因此请确定你是否要使用它。
答案2
总是有失败禁止;将其设置为监视 Apache 的日志,并在一分钟内出现十次 404 错误后禁止,或类似情况。
答案3
简短回答 - 不能。从 Web 服务器的角度来看,该脚本只是另一个浏览器,尽管是行为不当的浏览器。您能做的最好的事情就是让防火墙检测并阻止此类扫描。当然,细节取决于您使用的防火墙。
答案4
正如约翰所说,你真的不能。
您可以尝试使用 mod_rewrite 阻止一些不良请求,但除此之外别无他法。例如,我们会阻止查询字符串中包含 [sysobject] 的所有请求(我们不使用 MSSQL,但此类请求很多,可能会降低网站速度)。如果您使用 mod_rewrite,请确保不要阻止合法请求。