CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

巷では、少し前からWordPressのxmlrpc.phpへの攻撃というのが流行りだしたようです。
今回、私もその被害に合うことになり、経緯と対策をまとめておきたいと思います。

問題の発端

ある日突然、当ブログへのアクセスが悪くなりました。
ブラウザでアクセスしようとすると、8割ぐらいの頻度で503エラーになってしまいます。

503 Service Temporarily Unavailable

共有サーバで複数サイトを運用しているので、試しに他のサイトにアクセスしてみると同じ症状です。
ページのほとんど503エラーが返され、サイトにアクセスすることができません。

503エラーなので、サーバにアクセスが集中して高負荷状態になり、繋がりにくくなっていることが考えられます。

「爆発的に人気が急上昇したページでも?」と淡い思いを抱きながらも、アクセス解析サイトを確認してみました。
しかし、解析結果に特に目立った変化はありません。
それもそのはず、503はそもそもサイトにアクセスできていないエラーなので、Google Analyticsなどの解析結果には反映されません。

サーバアクセス解析

今回、サーバにはさくらレンタルサーバを利用しているので、コントロールパネルからアクセス状況を確認してみます。
「リソース情報」を確認すると、大量の503エラーが発生していました。

xmlrpc

お恥ずかしいお話ですが、月に1万アクセスもないサイトなので、グラフのように1日に25万回の503エラーが発生するなんて異常事態です。

次に、これらアクセスはどのページに向けられているのか、アクセスログを確認しました。

...
xxx.xxx.xxx.xxx - - [06/Jun/2016:23:58:32 +0900] "POST /xmlrpc.php HTTP/1.0" 503 323 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
...

これと同等のログが永遠と残っているのですが、一通りみたところ、明らかに大量のアクセスは「xmlrpc.php」をターゲットとしています。

xmlrpc.phpとは?

WordPressにはメールで投稿する機能があります。
機能には「xmlrpc.php」というファイルが活用されているようで、そこを経由して不正侵入を図ろうとブルートフォースアタックを仕掛ける攻撃方法があるようです。
詳細までは分かりませんが、とにかく総当たり的にこのファイルにアタックして、なんとかWordPressの管理側に侵入しよう試みているのでしょう。

対応と対策

主流な攻撃方法のようなので、その対応と対策の事例は多く見つけることができました。
具体的な攻撃を防ぐ方法として、いくつかあるのですが、、、

まず、一つの方法として、攻撃元はログから特定できるので、IPアドレスでアクセスをブロックできます。
しかし、無数の端末から25万回もアクセスされていることを考えれば、現実的ではありません。

そもそも、私の場合「メールで投稿」なんて機能は利用しないので、「xmlrpc.php」を消してしまうのが有効的です。
「xmlrpc.php」を消すこと自体は、WordPress本体に影響はないようなのですが、WordPressアップグレードの際に、ファイルは復活してしまうようです。

そこで、今回は「.htaccess」に、二度と「xmlrpc.php」にアクセスさせないような設定を追記しました。

<Files "xmlrpc.php">
order deny,allow
deny from all
</Files>

試しにアクセスしてみますが、もちろん403エラーでアクセスすることはできません。

Forbidden
You don't have permission to access /xmlrpc.php on this server.

設定した直後、めでたく503エラーは発生しなくなりました。
2、3日経過しましたが問題なしです。
めでたしめでたし。

このエントリーをはてなブックマークに追加

Monthly Archives

Search