access.log中奇怪的请求,如何阻止?

我在我自己的服务器上使用nginx,我注意到前几天在我的access.log中有一些奇怪的请求:

77.50.217.37 - - [19/Aug/2011:17:50:50 +0200] "GET http://images.google.com/ HTTP/1.1" 200 151 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; .NET CLR 1.1.4322; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)" 174.142.123.42 - - [19/Aug/2011:17:51:59 +0200] "GET http://l08.member.ird.yahoo.com/?.src=ym&login=_420_club_chick_&passwd=112211 HTTP/1.0" 200 151 "-" "MobileRunner-J2ME" 65.52.227.217 - - [19/Aug/2011:17:52:30 +0200] "GET http://javaddiction.biz/index.php HTTP/1.1" 404 570 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 188.72.199.25 - - [19/Aug/2011:17:52:35 +0200] "CONNECT google.com:80 HTTP/1.1" 400 172 "-" "-" 188.72.199.25 - - [19/Aug/2011:17:53:40 +0200] "CONNECT google.com:80 HTTP/1.1" 400 172 "-" "-" 

这些是我不拥有的域的请求(谷歌,雅虎….)

我想这可能是networking爬虫,或机器人或…

有没有办法阻止这种types的数据包,使用fail2ban,iptables或者我不知道还有什么…?

这些都是互联网上的每个Web服务器都看到的无害垃圾请求 – 很可能是脚本小子在寻找一个严重错误configuration的Web服务器,并允许您发出代理请求并使用CONNECT方法。

您的服务器似乎被适当地configuration为拒绝尝试使用CONNECT方法(返回HTTP/400 - Bad Request ),我敢打赌你是一个shiny的一分钱,如果你远程login并尝试GET http://www.google.com/你会得到一个页面closures您的网站,为您的麻烦。

使这种东西消失的唯一方法是阻止除了“已知好”主机列表之外的所有HTTP通信,这违背了公共Web服务器的目的。 我最好的build议是放松一下,喝一杯啤酒,而不要在你的Web服务器的访问/错误日志中logging条目,除非你想解决一个特定的问题。

正如voretaq7所说的,你可能只想让那些孤单一人。 毕竟,他们没有做任何事情(已经被nginx阻止了)。

其他请求,虽然可能会造成麻烦,如果他们通过,你有一个应用程序可能是敏感的某些无效命中。

我用过的一个模块(使用Apache,尽pipe可以用于nginx)是mod_security 。 通过此模块,您可以input用于比较传入(甚至传出)stream量的各种规则(如方法)的规则,并根据需要阻止此类访问。

作为一个侧面说明,我跑了:

 dig -x 188.72.199.25 

和输出说:

 199.72.188.in-addr.arpa. 3600 IN SOA ns0.leaseweb.nl. Postmaster.leaseweb.nl. 2013121501 14400 7200 604800 3600 

哪一个不是Google也不是Yahoo! 自从你发布你的问题以来,它可能已经发生了变化,但是这样的请求通常是由无效的机器人或知识渊博的黑客运行的。 不是那种比自己的资源好得多的大公司。