我有一个CentOS 5.8服务器,Apache 2.2.3上有20个网站。 服务器最后几周无法访问(太多的数据库连接和大量的CPU使用)。 我不得不重新启动服务器再次获得ssh / ftp / http访问。 当我检查服务器的httpd日志文件时,我通过yourthumbnails.com每天都会看到10.000次“访问尝试”。 这里是一个访问日志的例子:
98.224.147.78 - - [19/Apr/2012:14:20:06 +0200] "GET /yourthumbnails.com/?id=2&%20121 HTTP/1.1" 404 278 "http://yourthumbnails.com/tgp44.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB7.1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; WinNT-PAI 23.10.2009)"
和错误日志
[Thu Apr 19 14:19:15 2012] [error] [client 24.3.144.129] File does not exist: /var/www/vhosts/default/htdocs/yourthumbnails.com, referer: http://yourthumbnails.com/tgp44.html
正如你可以看到yourthumbnails.com是推荐人和实际访问者都有不同的IP地址。 所以我不能阻止一个IP地址。
我已经search了Google如何阻止推荐人,但这似乎是非常困难的。 一种方法是通过htaccess这样做:
RewriteEngine on # Options +FollowSymlinks RewriteCond %{HTTP_REFERER} ^http://(www\.)?yourthumbnails\.com RewriteRule .* - [F]
但是,我查看了我的所有网站的个人httpd访问日志,并找不到一个你的节点在哪里。所以看起来我的服务器正在被直接攻击? 而我不能使用htaccess方法。
我的问题:有没有办法阻止这种“引用者攻击”在服务器上,而不使用大量的服务器资源?
我联系了我的提供商,甚至不能提出解决scheme。 所以如果这里有人有一个想法,我会很高兴。
我查看了我的所有网站的个人httpd访问日志,并找不到一个你的umbumbs在哪里
但在错误日志中正在报告。 看起来你只是没有把访问日志写入引用者。
然而它并不能解决你所描述的问题 – 你所显示的请求会导致一个404响应 – 这不应该导致大量的数据库连接(除非你在404处理器中有一些智能),它应该需要很多web服务器处理这个比处理有效的请求更less的努力。
所以要么有其他的事情你没有告诉我们,或者你需要处理httpd上面的这些(例如,一个fail2ban规则,syn限速在iptables中)。 您可能还想与运行thumbnails.com的人联系。