首页 > 解决方案 > 通过 Referrer、Agent 或 Page 使用 htaccess 阻止 BotNet

问题描述

我们一直受到僵尸网络的抨击。

我设置了两条规则,减少了 80% 的流量,但这些请求仍然通过。

172.69.34.192 - - [21/Nov/2019:06:03:12 -0600] "POST /wp-login.php HTTP/1.1" 200 453750 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
172.69.34.192 - - [21/Nov/2019:06:03:15 -0600] "GET /wp-login.php HTTP/1.1" 200 452909 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"

这个僵尸网络每天更改 +3,000 个不同的 IP 地址,但总是先发布,然后获取。流量是直接的,没有页面引用。

我怎样才能在我的htaccess中使用post和get到wp-login.php的组合来阻止这些并且没有页面:“-”?

到目前为止,我已经准备好这些来阻止 80% 的其他不受欢迎的机器人。

# Stop Bots with Bogus User Agents
SetEnvIf User-Agent "^-$" bad_user
SetEnvIf User-Agent "^$" bad_user
<Files ~ "^(wp-login|xmlrpc)\.php">
        order allow,deny
        allow from all
        Deny from env=bad_user
</Files>

# Block Specific Bots by Name
SetEnvIfNoCase User-agent (yandex|baidu|mj12bot|ahrefsbot|blexbot|dotbot|exabot|seznambot|aihitbot|spbot|mj12bot|obot|deusu|ia_archiver|metauri|flipboardproxy|flicky|pycurl|casper|cmsworldmap|diavol|purebot|comodo|feedfinder|planetwork) not-allowed
<Limit GET POST PUT>
    Order Allow,Deny
    Allow from all
    Deny from env=not-allowed
</Limit>

我正在寻找的是阻止“-”的引用者的东西。也许是这样的,但我不确定这是否是正确的语法,或者我是否可以将它与上面的#Stop Bots 条目结合起来。

SetEnvIf Referrer "^-$" bad_bot
<Files ~ "^(wp-login|xmlrpc)\.php">
        order allow,deny
        allow from all
        Deny from env=bad_bot
</Files>

标签: apache.htaccess

解决方案


但是我可以添加一个规则,如果它是wp-login页面,那么页面引用者就会"-"被阻止。我只是不知道它的语法

你可以试试这条规则作为你的最高规则(就在下面RewriteBase一行):

RewriteEngine On

RewriteCond %{THE_REQUEST} /wp-login\.php [NC]
RewriteCond %{HTTP_REFERER} ^-?$
RewriteRule ^ - [F]

对于上述两种情况,这将返回403(禁止)错误。


推荐阅读