如何阻止网站上的机器人攻击?


14

我有一个网站(使用wordpress构建),目前正受到机器人攻击(据我所知)。一遍又一遍地请求文件,并且引荐来源网址为(几乎每次)turkyoutube.org/player/player.swf。所请求的文件位于主题文件的深处,并且始终后跟“ ?v=”和长字符串(即r.php?v=Wby02FlVyms&title=izlesen.tk_Wby02FlVyms&toke)。

我尝试为该引荐来源网址设置.htaccess规则,该规则似乎可以正常运行,只是现在我的404页面一遍又一遍地加载,而这仍然占用大量带宽。有没有办法创建不需要我占用带宽的.htaccess规则?

我还尝试创建了robots.txt文件,但攻击似乎忽略了这一点。

#This is the relevant part of the .htaccess file:
RewriteCond %{HTTP_REFERER} turkyoutube\.org [NC]
RewriteRule .* - [F]

2
攻击是否每次都来自同一个IP?
Ben Hoffman 2010年

您的.htaccess规则是否有意触发404文件?好像抛出一个普通的权限被拒绝错误将减少带宽使用。
artlung 2010年

这是.htaccess文件的相关部分:RewriteCond%{HTTP_REFERER} turkyoutube \ .org [NC] RewriteRule。*-[F]
Travis Northcutt 2010年

但是,即使我的访问日志显示“ Http Code:404”,当我更改.htaccess时,带宽使用也似乎停止了。
特拉维斯·诺斯卡特

.htaccess在主要的wordpress .htaccess规则之前或之后,您是否拥有发布的代码?
artlung

Answers:


8

一点软白云母的动作怎么样?

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?turkyoutube.org.*$ [NC]
RewriteRule ^(.*)$ http://127.0.0.1/$1 [R=401,L]

请注意,未经测试,但应使用401 Not Authorized状态代码将请求重定向回自身。也就是说,如果漫游器甚至处理重定向(极不可能),但仍会看到状态代码。404状态码可能更有效。任何人都应该告诉该机器人它可能应该放弃。

如果您扩大表达范围以与主持人再匹配一点,那么您在评论中发布的规则也绰绰有余。我使用接近(根据实际规则)来阻止用户代理匹配libwww-perl

RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* - [F,L]

您是否发现许多机器人都有HTTP_USER_AGENT = libwww-perl?这似乎是大多数机器人都会撒谎的东西。
利亚姆2010年

@Liam-令人惊讶的是,其中相当一部分人从未尝试伪装成真正的浏览器(尽管可以肯定的是,有很多事情比不做)。我也觉得这很奇怪:)
蒂姆·波斯特

请注意,您在此处使用了很多非常慢的正则表达式。在.*$相当于什么是快了很多。也是RewriteRule .* - [F,L],不需要,*因为您还是会忽略该条目。
Alexis Wilke 2014年

2

除了IP阻止之外,我还将仔细检查正在请求的文件。对于诸如WordPress和Joomla之类的开源系统而言,这是相当普遍的事情,这就是它们经常更新的原因之一。如果您忽略了一些更新,则可能有人入侵了您的网站。

我曾经两次遇到过这种情况,一次是在从未完全部署(但是留在原地)的测试站点上,另一次是在公司网站上,该站点具有有效访问权限的员工为他的家人“吸食”了phpBB进行沟通-更新会避免出现问题。在这两种情况下,分析都发现了问题,因为在您的情况下似乎确实如此。Joomla攻击注入了JavaScript,这导致用户的浏览器加载了软件,而后者允许黑客将文件上传到服务器,该文件属于分布式“替代” google网站的一部分,导致用户每次登录时都无法访问。尽管这并非完全常见,但为以防万一,请检查数据库用户表。

我当然不是要引起警报,但是花一些时间不时地浏览您的站点来了解发生的事情永远不会造成伤害。有时您会惊讶于发现的东西。


实际上,我认为这正是正在发生的事情。看起来被请求的文件甚至不应该存在。值得庆幸的是,一位友好的wordpress核心贡献者与我联系,所以我觉得我们会解决这个问题的。
特拉维斯·诺斯卡特

1

如果每次攻击都是来自相同的IP号(或一小组IP号),则应在防火墙中阻止该IP号。那不应该花费任何带宽或在您的Web服务器上负载。

如果您将其托管在Linux机器上,则您具有root访问权,本文将介绍如何执行此操作。


并非每次都来自同一个IP。
特拉维斯·诺斯卡特

0

我在所有服务器上使用DenyHosts [1]。DenyHosts禁止n次后无法登录的所有IP。您还可以发送通知。因此,您对登录来自哪个ips /主机有了一个很好的了解。并且还具有网络更新功能和其他强大功能。但是安装仍然非常简单。

另一种方法是禁止来自中国或非您目标组的其他国家(例如)的所有IP范围/阻止。这可以通过在线“黑名单”或仅通过hosts.deny文件(例如DenyHosts)来完成。

[1] http://denyhosts.sourceforge.net/


-1

只需将301重定向到fbi站点即可。

RewriteCond%{HTTP_REFERER} ^ http(s?://://(www。)?turkyoutube.org上的RewriteEngine。$ [NC] RewriteRule ^(。)$ http://www.fbi.gov [R = 301,L]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.