我有几个wordpress的博客,我一直在尝试访问它们,但速度很慢。我查看了我的服务器日志,发现了这个
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:31 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:31 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:31 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
我每秒对文件/xmlrpc的点击率约为10次。php从GoogleBot扩展到多个站点,这似乎会减慢服务器的速度。我正在跑步
tail -f
并且可以看到这些请求正在继续。有人知道为什么会发生这种情况,或者你能做些什么来阻止它吗?
最合适的回答,由SO网友:s_ha_dum 整理而成
我会用iptables
如果是我,如果你有这种服务器级别的访问权限。
您还可以禁用xmlrpc。不幸的是,自3.5版以来,用于禁用该功能的管理屏幕选项已被删除。但是,一行代码应该禁用它:add_filter( \'xmlrpc_enabled\', \'__return_false\' );
这可能会从请求中节省一些开销,但不会消除所有开销。
SO网友:PJ Brunet
“Googlebot”没有理由访问xmlrpc。phpYou可以将其添加到xmlrpc的顶部。php
// Block fake Googlebot
if ( strpos($_SERVER[\'HTTP_USER_AGENT\'], "Googlebot") === true ) { exit(); }
我猜这是一个核心WordPress文件。因此,保持此更新可能很烦人。如果Automatic使用Akismet将所有WP脚本中的这些IP列入黑名单,那就太好了。
更新:我最终删除了以下权限chmod 0 xmlrpc.php
(请参阅我的评论)在DDoS开始对我的服务器征税之后。换句话说,这种有条件的PHP代码可能无法阻止攻击者暂时禁用您的博客。无论如何,他们通常会很快放弃。
SO网友:Eaten by a Grue
如果最近发生这种情况,它会杀死服务器,我们现在正在使用fail2ban 缓解问题。
已将此配置添加到jail.local:
[apache-xmlrpc]
enabled = true
port = http,https
filter = xmlrpc
logpath = /var/log/apache2/*access.log
maxretry = 30
findtime = 300
bantime = -1
并在中创建过滤器
filter.d/apache-xmlrpc.conf:
[Definition]
failregex = ^<HOST> -.*"(GET|POST) .*xmlrpc.php
ignoreregex =
在我的情况下,这些攻击并不总是来自googlebot,因此regex的范围更广了一些,但就我而言,几乎没有任何理由让任何IP在5分钟内攻击xmlrpc 30多次。