在apache中阻止域名*

在apache中阻止域名*

问题描述:

我一直在接收来自几个特定域名(如“hydrogen084.a.ahrefs.com”,“hydrogen172.a.ahrefs.com”等)的ahrefs bot的大量bot攻击,这些攻击最终导致我的服务器挂起并且不允许站点出现。有什么办法可以阻止这个域名的氢* .a.ahrefs.com停止点击我的服务器(Apache)。任何帮助赞赏。谢谢!在apache中阻止域名*

第一个想法是阻止这种机器人和类似的在你的.htaccess

# Block abusive spiders 
BrowserMatchNoCase "Baiduspider" bots 
BrowserMatchNoCase "Yandex" bots 
BrowserMatchNoCase "MegaIndex" bots 
BrowserMatchNoCase "AhrefsBot" bots 
BrowserMatchNoCase "HTTrack" bots 

Order allow,deny 
Allow from all 
Deny from env=bots 

然后看看这篇文章。 https://perishablepress.com/eight-ways-to-blacklist-with-apaches-mod_rewrite/

通过用户代理和其他部分的想法查看部分黑名单。

通过用户代理列入黑名单是一种常见的策略,会产生可疑的结果。将用户代理列入黑名单的概念围绕这样的想法:访问您服务器的每个浏览器,机器人和蜘蛛都使用特定的用户代理字符串来标识自己。因此,与恶意,不友好或其他有害行为相关联的用户代理可能被识别并列入黑名单,以防止未来访问。这是一个众所周知的黑名单策略,导致了一些广泛和有效的用户代理黑名单。

当然,这种方法的缺点在于用户代理信息易于伪造,难以确定黑名单客户的真实身份。通过简单地将其用户代理更改为未知身份,恶意机器人可能会绕过Internet上的所有黑名单。许多邪恶的“大笨蛋”确实在做这件事,这就解释了大量黑名单的用户代理。即便如此,某些用户代理字符串可能会发生变化的程度也有一定的限制。例如,GNU的Wget和cURL命令行工具很难伪造,并且许多其他客户端都有难以更改的硬编码的用户代理字符串。

在Apache服务器上,通过HTTP_USER_AGENT变量很容易识别用户代理并将其列入黑名单。下面是一个例子:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} ^$                [OR] 
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).*       [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^.*(HTTrack|clshttp|archiver|loader|email|nikto|miner|python).* [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|libwww\-perl|curl|wget|harvest|scan|grab|extract).* [NC] 
RewriteRule ^(.*)$ - [F,L] 
</IfModule> 
+0

非常感谢@John Hanley。看起来它对我有效。你摇滚!!!! ....我的服务器中也有Fail2Ban,它可以帮助我限制传入IP的速率。所以看起来我现在已经安全了,这两个就位了......再次感谢! –