web-dev-qa-db-ja.com

たくさんの POST GoogleBotから/xmlrpc.phpへのリクエストはサーバーを停止しますか?

私はいくつかのホストされたワードプレスのブログを持っています、そして、私はそれらを訪問しようとしていました、そして、それらは本当に遅いです。私は私のサーバーログを見て、私はこれを見つけました

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"

私はGoogleBotからいくつかのサイトへのファイル/xmlrpc.phpに毎秒10ヒットを得ています、そしてこれはサーバーを遅くしているようです。私は走っています

tail -f 

ログファイルを見れば、これらの要求が継続していることがわかります。なぜこれが起きているのか、それを止めるためにあなたができることを誰かが知っていますか?

8
jkeesh

それが私であるなら、そしてあなたがそのような種類のサーバーレベルのアクセス権を持っていれば、私はiptablesでIPをブロックします。

Xmlrpcを無効にすることもできます。残念ながら、3.5以降、この機能を無効にする管理画面オプションは削除されました。ただし、1行のコードで無効にする必要があります。add_filter( 'xmlrpc_enabled', '__return_false' );要求からのオーバーヘッドをいくらか減らすことができますが、すべてを排除することはできません。

6
s_ha_dum

"Googlebot"にxmlrpc.phpにアクセスする理由はありませんこれをあなたのxmlrpc.phpの先頭に追加することができます

// Block fake Googlebot
if ( strpos($_SERVER['HTTP_USER_AGENT'], "Googlebot") === true ) { exit(); }

私はそれがWordPressの中核ファイルだと思います。それで、これを更新し続けるのは面倒かもしれません。 AutomatticがすべてのWPスクリプトからこれらのIPをブラックリストに登録するためにAkismetを使用したなら、素晴らしいでしょう。

更新日:DDoSによるサーバーへの課税が開始された後、私はchmod 0 xmlrpc.php(自分のコメントを参照)で権限を削除しました。言い換えれば、この条件付きPHPコードは攻撃的な攻撃者があなたのブログを一時的に無効にするのを阻止しないかもしれません。いずれにせよ、彼らは通常かなり速くあきらめます。

5
PJ Brunet

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
1
3m1l

最近これが起こっていて、それがサーバーを殺していたのであれば、問題を軽減するために 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から来たわけではないので、正規表現はもう少し広くなっていますが、私の目的では、IPが5分でxmlrpcを30回以上攻撃する理由はほとんどありません。

0
billynoah