WordPressのxmlrpc.phpにDos攻撃されました。Dos攻撃とは、サーバーに大量のデータを送り付け、サービスを妨害する攻撃です。攻撃者には、xmlrpc.phpにランダムなパスワードを送信しサーバーの乗っ取りを図ります。xmlrpc.phpファイルが公開フォルダー直下(デフォルトの位置)にあると攻撃者に狙われやすいみたいです。
WordPressのxmlrpc.phpは、管理画面以外からもAPIを使い記事の投稿ができるサービスに使用されるファイルです。

問題が発覚した背景
 Dos攻撃を受け続けapacheのログデータでディスク容量が最大まで増えました。そして、mysqlがダウンし、ウエブページにアクセスができなくなったため問題が発覚しました。アクセスログファイルを分析すると、アクセスが1秒間に何回もありまし。ログに記載されていたIPアドレスは実際に攻撃してきたサイトのアドレスです。たぶん、攻撃者は、IPを偽装しているのでIPアドレスに意味がないかもしれませんが場所はアメリカでした。

(攻撃者の生ログ)
216.158.230.206 – – [31/Jul/2015:16:51:37 +0900] “POST /xmlrpc.php HTTP/1.1” 403 212 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”

 攻撃された場合の対応策は、下記のような方法があります。

1. プラグインで対策する

プラグイン「Disable XML-RPC Pingback」をインストールします。インストールするだけで対策ができます。

2. apacheの「.htaccess」で対策する

 apacheの「.htaccess」ファイルに「RewriteRule ^xmlrpc\.php$ “http\:\/\/0\.0\.0\.0\/” [R=301,L」一行追記します。この方法は、xmlrpc.phpにアクセスをした場合、http://0.0.0.0にリダイレクトします。xmlrpc.phpを使用している場合は使えません。

記入例

 xmlrpc.phpが公開フォルダー直下にある場合です。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^xmlrpc\.php$ “http\:\/\/0\.0\.0\.0\/” [R=301,L] ←追記する
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

3. apacheの「.htaccess」で対策する(其の2)

 xmlrpc.phpにくるアクセスを禁止する。

記入例

 xmlrpc.phpが公開フォルダー直下にある場合です。
<Files “xmlrpc.php”>
order deny,allow
deny from all
</Files>

4. apacheの「.htaccess」で対策する(其の3)

 IPアドレス単位でアクセス制限をする。xmlrpc.phpを使用している場合は、この方法が現実的です。ただし、攻撃者がIPアドレスを変更した場合は、それに対応するする必要があります。

記入例

 xmlrpc.phpが公開フォルダー直下にある場合です。
<Files “xmlrpc.php”>
order deny,allow
deny from all
deny from 216.158.230.206
</Files>

お勧めの対策 

 xmlrpc.phpを使用していない場合、2番目の対策がお勧めです。攻撃してきたリクエストを別ページにリダイレクトすることで攻撃できないことを、攻撃者にわからせることが大切です。3番目の対策のようにアクセスを拒否しても攻撃が続く場合があります。