我在 Apache 服务器(共享主机)上托管了一个 Wordpress 博客。由于某些原因,几天来我每秒都会收到大约 100 个对 xmlrpc.php 的请求。
access.log 如下所示:
...
188.138.33.149 - - [16/Oct/2013:17:46:03 +0200] "POST /xmlrpc.php HTTP/1.1" 403 212 "-" "GoogleBot/1.0"
188.138.33.149 - - [16/Oct/2013:17:46:03 +0200] "POST /xmlrpc.php HTTP/1.1" 403 212 "-" "GoogleBot/1.0"
188.138.33.149 - - [16/Oct/2013:17:46:03 +0200] "POST /xmlrpc.php HTTP/1.1" 403 212 "-""
...
在 .htaccess 中我应用了以下规则:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
有没有更好的方法来防止垃圾邮件?
答案1
如果你的大多数垃圾邮件连接都来自少数 IP,那么你可以按照以下说明从 .htaccess 中阻止这些 IP:此链接。
答案2
最近发生了这种情况,导致服务器崩溃,我们现在正在使用失败2ban以缓解该问题。
将此配置添加到监狱.本地:
[apache-xmlrpc]
enabled = true
port = http,https
filter = xmlrpc
logpath = /var/log/apache2/*access.log
maxretry = 30
findtime = 300
bantime = -1
并在中创建过滤器过滤器.d/apache-xmlrpc.conf:
[Definition]
failregex = ^<HOST> -.*"(GET|POST) .*xmlrpc.php
ignoreregex =
就我而言,攻击并不总是来自 googlebot,因此使正则表达式更广泛一些,但就我的目的而言,几乎没有任何理由让任何 IP 在 5 分钟内攻击 xmlrpc 30 多次。