【问题标题】:Blocking Domain* in apache在 apache 中阻止域*
【发布时间】:2023-12-19 01:27:01
【问题描述】:

我收到了来自多个特定域(如“hydrogen084.a.ahrefs.com”、“hydrogen172.a.ahrefs.com”等)的 ahrefs 机器人的大规模机器人攻击,最终导致我的服务器挂起并且不允许网站上来。有什么办法可以阻止这个域hydro*.a.ahrefs.com 停止访问我的服务器(Apache)。任何帮助表示赞赏。谢谢!

【问题讨论】:

    标签: linux apache amazon-web-services block blacklist


    【解决方案1】:

    第一个想法是在你的 .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>
    

    【讨论】:

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