从Googlebot到/xmlrpc.php的许多POST请求正在关闭服务器吗?

时间:2013-08-18 作者:jkeesh

我有几个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 
并且可以看到这些请求正在继续。有人知道为什么会发生这种情况,或者你能做些什么来阻止它吗?

4 个回复
最合适的回答,由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网友:3m1l

使用iptables阻止IP:

for ip in $(grep xmlrpc /var/log/apache2/access.log | cut -d\' \' -f1 | sort | uniq -c | sort -rn | head -n8 | awk \'{print $2}\'); do \\
iptables -A INPUT -s $ip -j DROP; \\
done

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多次。

结束

相关推荐