我的VPS越来越受到我的服务器上不存在的随机文件/目录的尝试,每秒大概两次。 据推测,这只是一个机器人,试图找出是否有任何安全漏洞在我的服务器上的脚本,或者我的服务器是否可以用作代理。 日志条目如下:
组合(访问)日志:
- - - [02/Mar/2011:14:10:18 +0000] "GET http://ad.xtendmedia.com/st?ad_type=iframe&ad_size=728x90§ion=1697270 HTTP/1.0" 403 204 "http://www.findthemovies.net/" "Mozilla/4.0 (Windows; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
错误日志:
[Wed Mar 02 14:10:18 2011] [error] [client 61.139.105.162] client denied by server configuration: /var/sites/***/public/st, referer: http://www.findthemovies.net/
请求来自随机引用的随机IP地址,所以没有特定的IP阻塞,我似乎能够做到。 没有安装任何可以滥用的脚本,并且我的服务器上没有启用代理,但主要担心的是这些不断请求正在耗尽资源,并减缓了对我的站点的真正请求。
是否有阻止这些请求,通过能够识别它们,阻止它们被Apache处理并使用分配给它的所有资源? (我使用的是Prefork,所以很显然,请求量开始启动Apache进程,并消耗客户端和资源)。
您可以使用像denyhosts或fail2ban这样的工具 – 它们匹配日志文件中的模式,并根据这些模式执行命令。 你可以用简单的tcpwrappers(hosts.deny / allow)来阻塞,也可以随意发送防火墙规则。
或者,也许你可以在你的虚拟主机中使用RewriteRules,过滤适当的东西,禁止返回或更有趣,最后redirect到迪斯尼乐园,这可能会扰乱机器人(如果他们接受redirect,他们将下载迪斯尼乐园,他们会被占用一段时间):
RewriteEngine On RewriteCond [apache constant] [yourrewritecond] [OR] RewriteCond [apache constant] [yourrewritecond] [OR] RewriteCond [apache constant] [yourrewritecond] [OR] RewriteCond [apache constant] [yourrewritecond] [OR] ... RewriteCond [apache constant] [yourrewritecond] RewriteRule (.*) http://disneyland.com$1 [QSA,R=301,L]
您可以在DMZ接口的端口80上安装HAProxy(并且将后端指向在您的LAN或本地主机接口上运行的Apache),并创build一些ACL规则,以便在匹配(或不匹配)特定path/标题/域标准。
一个tarpait的好处是,它会减慢机器人,并防止(大部分)他们连续打电话。