WordPress xmlrpc.phpへの対策とスマホアプリ有効化

ある日、自分のWordPressサーバにアクセスしようとしたら、

データベースへの接続エラー

と表示されて接続できない状態へ

ログを確認するとWordPressにxmlrpc.phpに大量のアクセスが

#/less/var/log/apache/access.log
185.130.5.165 - - [02/Apr/2016:07:04:05 +0900] "POST /xmlrpc.php HTTP/1.0" 500 561 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
185.130.5.165 - - [02/Apr/2016:07:04:07 +0900] "POST /xmlrpc.php HTTP/1.0" 500 561 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
185.130.5.165 - - [02/Apr/2016:07:04:08 +0900] "POST /xmlrpc.php HTTP/1.0" 500 561 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
185.130.5.165 - - [02/Apr/2016:07:04:15 +0900] "POST /xmlrpc.php HTTP/1.0" 500 561 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
185.130.5.165 - - [02/Apr/2016:07:04:27 +0900] "POST /xmlrpc.php HTTP/1.0" 500 561 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
185.130.5.165 - - [02/Apr/2016:07:04:36 +0900] "POST /xmlrpc.php HTTP/1.0" 500 561 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
185.130.5.165 - - [02/Apr/2016:07:04:45 +0900] "POST /xmlrpc.php HTTP/1.0" 500 561 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

これは、xmlrpc.phpを使うことで標準の管理画面以外からもAPIを使って、記事の投稿ができるようになる機能を悪用しようとしたもの。ここへのブルートフォースアタック(パスワードクラック)をかけているか、Pingback機能(自分の投稿に対してリンクが張られたことを知らせる)を悪用し、踏み台にして攻撃をしようとしているらしい。早急に対策をとる。WordPressをインストールしたディレクトリの.htaccessへ以下を追記

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

 

これ以降、サーバ高負荷状態でアクセスできないという事は無くなった。だけど、気づいいたらWordPressスマホアプリからアクセスできない!

Screenshot of itunes.apple.com

スマホ投稿はしたいのに、、、。どうもこのアプリはxmlrpc.phpを利用するらしい。そこで、ドコモスマホがとるIPアドレス範囲を許可する事で対応できる事にしました。

Screenshot of www.nttdocomo.co.jp

このサイトでIPアドレスを調べ.htaccessへ反映

<Files "xmlrpc.php">
order deny,allow
deny from all
allow from 1.66.96.0/21
allow from 1.66.104.0/23
allow from 1.72.0.0/21
allow from 1.72.8.0/23
allow from 1.72.10.0/24
...
</Files>

 

ドコモのIPアドレス範囲

ソフトバンクのIPアドレス範囲

AUのIPアドレス

これで様子を見ます

上記サイトから、allow from IPアドレスとするにはExcelを利用するのが便利です。作成した.htaccessは下記のようになります。(2017/04/21現在)

ドコモからのアクセス許可の例

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<Files "xmlrpc.php">
order deny,allow
deny from all
allow from      1.66.96.0/21
allow from      1.66.104.0/23
allow from      1.72.0.0/21
allow from      1.72.8.0/23
allow from      1.72.10.0/24
allow from      1.75.0.0/21
allow from      1.75.8.0/22
allow from      1.75.12.0/23
allow from      1.75.14.0/24
allow from      1.75.16.0/20
allow from      1.75.152.0/21
allow from      1.75.196.0/22
allow from      1.75.208.0/21
allow from      1.75.224.0/19
allow from      1.78.0.0/19
allow from      1.78.32.0/21
allow from      1.78.40.0/22
allow from      1.78.64.0/19
allow from      1.78.96.0/22
allow from      1.79.6.0/23
allow from      1.79.8.0/21
allow from      1.79.16.0/21
allow from      1.79.24.0/22
allow from      1.79.28.0/23
allow from      1.79.30.0/24
allow from      1.79.32.0/21
allow from      1.79.66.0/23
allow from      1.79.68.0/22
allow from      1.79.72.0/21
allow from      1.79.80.0/20
allow from      1.79.96.0/21
allow from      1.79.176.0/21
allow from      49.96.0.0/18
allow from      49.96.216.0/21
allow from      49.96.224.0/21
allow from      49.96.242.0/23
allow from      49.96.244.0/23
allow from      49.97.1.0/24
allow from      49.97.2.0/23
allow from      49.97.4.0/24
allow from      49.97.16.0/22
allow from      49.97.31.0/24
allow from      49.97.32.0/23
allow from      49.97.34.0/24
allow from      49.97.39.0/24
allow from      49.97.40.0/23
allow from      49.97.42.0/24
allow from      49.97.47.0/24
allow from      49.97.48.0/23
allow from      49.97.50.0/24
allow from      49.97.55.0/24
allow from      49.97.56.0/21
allow from      49.97.64.0/20
allow from      49.97.88.0/22
allow from      49.97.92.0/22
allow from      49.97.96.0/19
allow from      49.98.7.0/24
allow from      49.98.8.0/21
allow from      49.98.16.0/23
allow from      49.98.32.0/19
allow from      49.98.64.0/18
allow from      49.98.128.0/17
allow from      49.104.0.0/18
allow from      49.104.64.0/20
allow from      49.104.80.0/21
allow from      49.106.200.0/21
allow from      49.106.208.0/20
allow from      49.106.224.0/22
allow from      49.106.228.0/23
allow from      110.163.6.0/23
allow from      110.163.8.0/22
allow from      110.163.12.0/23
allow from      110.163.216.0/21
allow from      110.163.224.0/22
allow from      183.74.0.0/21
allow from      183.74.8.0/23
allow from      183.74.192.0/20
</Files>

 

AUからのアクセス許可

2019/03現在

スマホタブレットからのアクセス許可 IPアドレス

allow from 106.128.0.0/13
allow from 106.180.16.0/20
allow from 106.180.32.0/20
allow from 106.180.48.0/22
allow from 111.86.140.128/27
allow from 182.248.112.128/26
allow from 182.249.0.0/16
allow from 182.250.0.0/15

関連コンテンツ