偽 Googlebot がモシャスして WordPress の xmlrpc.php に剣の舞してたお話


エラー!エラー!エラー!

妻は「サイトが止まっている」と言った。

僕は「またぁ?」と答えた。

ブラウザーで妻のサイトにアクセスしてみるが応答がない。ついでに、自分の(この)サイトにもアクセスしてみた。返事がない。サイトは死んでしまった……。

一体何が起こったのだろう?ぼくは、詳しく調べてみることにした。

サイトにアクセス出来ない以上、サーバーに何か起きたのは間違いない。

まずは、サイトをホストしてもらっている Amazon Web Services のコンソールから CloudWatch でリソース状況を確認してみることにした。

CloudWatch の CPU モニターが80%超え!

Oh…orz

CPU 使用率が80%を超えている。たいして人気がない、私ら夫婦のサイトが久々の Yahoo 砲をもらったのかな?

…などといい方向に考えるほど人間ができていない僕が最初に疑ったのは、ログが肥大化しているのかな、ということだった。すぐにnginx のログがあるディレクトリを確認してみると…

error.log が 68.6 MB !!!

うぉぉぃ、またなんかエラーはいてるのか? すぐに vi で表示する。

2015/08/03 21:50:42 [error] 2837#0: *1980514 connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: unix:, server: eternal-tears.com, request: "POST /xmlrpc.php HTTP/1.0", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "eternal-tears.com"
2015/08/03 21:50:43 [error] 2837#0: *1980518 connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: unix:, server: eternal-tears.com, request: "POST /xmlrpc.php HTTP/1.0", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "eternal-tears.com"
2015/08/03 21:50:43 [error] 2837#0: *1980522 connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: unix:, server: eternal-tears.com, request: "POST /xmlrpc.php HTTP/1.0", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "eternal-tears.com"

というエラーが延々と続いている。本当に延々と続いている。変化するのは時刻とエラーの回数だけ。カーソルを動かすと、それはとてもとても綺麗なアニメーションである。いやいや、嬉しくない。

うぉぉぃ、妻よ、またおまえのところか

戦犯が分かったところで、今度は eternal-tears.com のアクセスログを見てみる。

54.149.25.125 - - [03/Aug/2015:03:11:03 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"
52.27.179.6 - - [03/Aug/2015:03:11:03 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"
52.27.163.28 - - [03/Aug/2015:03:11:03 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"
54.148.210.66 - - [03/Aug/2015:03:11:05 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"
54.149.51.205 - - [03/Aug/2015:03:11:07 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"
52.10.165.55 - - [03/Aug/2015:03:11:07 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"
54.69.228.145 - - [03/Aug/2015:03:11:07 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"
52.25.199.249 - - [03/Aug/2015:03:11:07 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"
54.149.51.19 - - [03/Aug/2015:03:11:08 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"
54.149.51.108 - - [03/Aug/2015:03:11:09 +0900] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" "-"

Googlebot が延々と xmlrpc.php にアクセスしていたようだ。しかも尋常な量じゃない。こちらも延々と続いている。こちらは時刻と IP アドレスが変化する。カーソルを動かすと、それはとてもとても綺麗なアニメーションである。全く嬉しくない。リソース不足の原因はこの一連の Googlebot のアクセスのせいのようだ。

xmlrpc.php というのは XML-RPC プロトコルを使うための WordPress のインターフェースである。リモート投稿する場合やトラックバックを投げる時に使うものなのだけど、果たして Googlebot が POST で投げてくるのだろうか?

おまえ、本当に Googlebot か!?

 

とりあえず、ログファイルをアニメーションさせていても始まらない。このログを集計してることにする。

Mac 用のログ解析ソフトは持っていないので、古典的に ピポットテーブルで集計する。

集計の仕方を以下にまとめたので、ぜひご覧頂きたい


Google スプレッドシートでピボットテーブル集計 | 8bitodyssey.com

 

IP アドレス
回数
52.10.165.55
2436
52.24.47.119
3559
52.25.199.249
3573
52.26.48.237
3548
52.26.7.151
3590
52.27.163.28
3496
52.27.179.6
3107
54.148.164.248
3238
54.148.210.66
1230
54.148.9.134
3286
54.149.25.125
1821
54.149.32.142
3503
54.149.51.108
3374
54.149.51.19
3463
54.149.51.205
1439
54.149.6.148
3415
54.149.8.94
3481
54.69.228.145
3678
54.69.229.22
3406
54.69.3.69
3516

ログの量が膨大で Google スプレッドシートが読み込めなかったので、1/4(約10MB 分)に限定してやってみたが、見事に20 IP に収斂した。

散々頑張った後に、以下のようにすればわざわざ Google スプレッドシートで集計しなくてもいいことに気づいた。箸とコマンドラインは使いようって死んだじっちゃんも言ってた。

$ grep xmlrpc /var/log/nginx/access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn
19300 54.149.8.94
18884 52.26.48.237
16472 54.149.32.142
16415 52.26.7.151
15857 52.25.199.249
14259 52.24.47.119
14227 54.69.228.145
13615 54.149.51.108
13576 54.69.3.69
12925 52.27.163.28
12835 54.149.6.148
12617 54.69.229.22
12112 54.149.51.19
10854 54.148.164.248
10209 54.148.9.134
10208 52.27.179.6
6144 52.10.165.55
5714 54.149.25.125
4125 54.149.51.205
3616 54.148.210.66

次にこの IP の正体を暴いてやる。

ターミナルで host コマンドを実行($ dig -x IP アドレス でもいいのだけど、host コマンドのほうが結果がシンプルで見やすい)。それにしても host だの、dig だの、コマンドがいやらしい。

~ $ host 52.10.165.55
55.165.10.52.in-addr.arpa domain name pointer ec2-52-10-165-55.us-west-2.compute.amazonaws.com.
~ $ host ec2-52-10-165-55.us-west-2.compute.amazonaws.com
ec2-52-10-165-55.us-west-2.compute.amazonaws.com has address 52.10.165.55

52.10.165.55 の正体は AWS の EC2 らしい。リージョンは海を超えた us-west-2。遠くからわざわざご苦労なこった。

サイトにアクセスすれと ”please fok off. ok thanks.” と表示される。”fok” ってなんだよ。fuck off (失せろ)ってことかな。

本当に Googlebot の時は以下のようになる。

~ $ host 66.249.71.44
44.71.249.66.in-addr.arpa domain name pointer crawl-66-249-71-44.googlebot.com.
~ $ host crawl-66-249-71-44.googlebot.com
crawl-66-249-71-44.googlebot.com has address 66.249.71.44

参考:Googlebot かどうかの確認 – Search Console ヘルプ

…というわけで、ひたすら host コマンドを叩いた結果が以下の通り。

IP アドレス
回数
ホスト名
52.10.165.55
2436
ec2-52-10-165-55.us-west-2.compute.amazonaws.com
52.24.47.119
3559
ec2-52-24-47-119.us-west-2.compute.amazonaws.com
52.25.199.249
3573
ec2-52-25-199-249.us-west-2.compute.amazonaws.com
52.26.48.237
3548
ec2-52-26-48-237.us-west-2.compute.amazonaws.com
52.26.7.151
3590
ec2-52-26-7-151.us-west-2.compute.amazonaws.com
52.27.163.28
3496
ec2-52-27-163-28.us-west-2.compute.amazonaws.com
52.27.179.6
3107
ec2-52-27-179-6.us-west-2.compute.amazonaws.com
54.148.164.248
3238
ec2-54-148-164-248.us-west-2.compute.amazonaws.com
54.148.210.66
1230
ec2-54-148-210-66.us-west-2.compute.amazonaws.com
54.148.9.134
3286
ec2-54-148-9-134.us-west-2.compute.amazonaws.com
54.149.25.125
1821
ec2-54-149-25-125.us-west-2.compute.amazonaws.com
54.149.32.142
3503
ec2-54-149-32-142.us-west-2.compute.amazonaws.com
54.149.51.108
3374
ec2-54-149-51-108.us-west-2.compute.amazonaws.com
54.149.51.19
3463
ec2-54-149-51-19.us-west-2.compute.amazonaws.com
54.149.51.205
1439
ec2-54-149-51-205.us-west-2.compute.amazonaws.com
54.149.6.148
3415
ec2-54-149-6-148.us-west-2.compute.amazonaws.com
54.149.8.94
3481
ec2-54-149-8-94.us-west-2.compute.amazonaws.com
54.69.228.145
3678
ec2-54-69-228-145.us-west-2.compute.amazonaws.com
54.69.229.22
3406
ec2-54-69-229-22.us-west-2.compute.amazonaws.com
54.69.3.69
3516
ec2-54-69-3-69.us-west-2.compute.amazonaws.com

全部 EC2 かよ

もう許さん!次回はこの20個の IP アドレスをギッタギタのメタメタにブロックしてやる!

,

フォームは コメントしてほしそうに こちらを見ている……!

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。