给大家一个快速的问题 - 在我的 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"
...
你明白了,一个漏洞扫描脚本。由于我没有将我的网络应用程序安装到标准甚至远程命名的安装中,我几乎总是返回 404,但观看起来仍然很烦人。所以我的问题是,有没有办法检测/减轻此类攻击,也许使用 mod_rewrite 和已知的阻止列表等?或者这是 Web 服务器管理员必须忍受的事情?
谢谢。
您可以使用mod_security或其他 Web 应用程序防火墙 (waf)。这样请求仍然会访问您的网络服务器,但 mod_security 会过滤掉标记为可疑的请求。
设置 waf 有不同的可能性:
最佳解决方案很大程度上取决于您的设置,因此没有通用答案。但是文档应该可以帮助您决定采取什么解决方案。
还有一点需要考虑:
waf 给你的系统增加了一些复杂性,所以要确定你是否想使用它。
总是有Fail2Ban;将其设置为在一分钟内观看 Apache 的日志并禁止十个 404 或类似的东西。
简短的回答 - 你不能。从 Web 服务器的角度来看,脚本只是另一个浏览器,尽管它行为不端。您能做的最好的事情就是让防火墙检测并阻止此类扫描。详细信息当然取决于您使用的防火墙。
正如约翰所说,你真的不能。
您可以尝试使用 mod_rewrite 阻止一些错误的请求,但没有什么其他的了。例如,我们阻止查询字符串中包含 [sysobject] 的所有请求(我们不使用 MSSQL,但它们有很多,它们会降低站点速度)。如果您使用 mod_rewrite,请确保不要阻止合法请求。