WordPress のセキュリティ向上のために XML-RPC へのアクセスを制限した上で、ブログエディタや Jetpack は使えるようにしてみた

Network switch

以前、ブルートフォースアタック に備えて「SiteGuard WP Plugin」と言うプラグインを導入しました。他にもブログを始めた時にセキュリティ対策はいくつか施してあるんですけど。XML-RPC へのアクセス制限については手付かずのままでした。ずっと気になっていましたが、やっと対策しました。

XML-RPC への対策が遅れた理由としては。XML-RPC を完全に無効にしてしまうと、ブログエディタが使えなくなることと、WordPress のプラグイン「Jetpack by WordPress.com」が使えなくなってしまうことが主な理由です。

私は、Mac でブログを書くときは MarsEdit と言うブログエディタを使っていて、iPhone では気がついた時にその場で修正できるように、PressSync を使っています。

MarsEdit や PressSync に限らず、外部から投稿するためには XML-RPC の機能が使われています。

同じく、お手軽に CDN を利用できる Photon など便利機能をパックにした「Jetpack by WordPress.com」を使用するためには、開発元である Automattic が XML-RPC にアクセスできるようにしておく必要があります。

そのため私の環境では、XML-RPC にアクセス制限をかけても、一部許可をする必要があったため、つい後回しにしてしまっていました。

XML-RPC へのアクセス制限が必要な理由

XML-RPC は、WordPress のサイトにリンクが貼られた時に通知をしてくれる Pingback と言う機能にも使われています。
ところがこの Pingback の機能を悪用して DDoS 攻撃を仕掛けることが可能なのだそうです。つまり、自分のサイトやブログが DoS 攻撃の踏み台に利用される可能性があると言うことです。恐ろしや。

DoSはネット上のトラフィック(通信量)を増大させ、通信を処理している回線やサーバの処理能力(リソース)を占有することによって、システムを使用困難にしたり、ダウンさせたり、過負荷によってサーバの機材そのものを誤動作させたり破壊したりする。

DoS攻撃 – Wikipedia

DDoS攻撃(ディードスこうげき、ディーディーオーエスこうげき、Distributed Denial of Service attack)とは、踏み台と呼ばれる多数のコンピュータが、標的とされたサーバなどに対して攻撃を行うことである。別名として、協調分散型DoS攻撃、分散型サービス妨害攻撃などがある。

DoS攻撃 – Wikipedia

実際このブログも先日「xmlrpc.php」に300回以上アクセスされて、緊急でその IPアドレスからのアクセスを弾いたんですけど。外出中だったら対処出来ないので、根本的な対策が必要であると改めて感じた次第です。

XML-RPC にアクセス制限をかける

XML-RPC にアクセス制限をかける方法はいくつかありますが、今回は前述のような理由で、細かく設定したかったので、「.htaccess」を利用して制限をかけました。

.htaccess に記述する内容

XML-RPC にアクセス制限をかけるための記述は以下になります。

こちらを参考にさせて頂きました。
WordPress の Pingback 対策 at www.morihi-soc.net

単純に XML-RPC にアクセス出来ないようにするだけなら、この記述だけで OK です。

これを xmlrpc.php があるディレクトリの .htaccess に記述します。xmlrpc.php は WordPress をインストールしたディレクトリの直下にあります。wp-config.php や wp-login.php があるディレクトリと同じディレクトリです。

.htaccess に追記する方法

多くの場合、xmlrpc.php があるディレクトリには既に .htaccess があり追記することになるかと思います。その場合は、WordPress が自動的に書き込む「# BEGIN WordPress ~ # END WordPress」の中に記述すると、WordPress が上書きしてしまうことがあるのだそうです。それを回避するためには、「# BEGIN WordPress ~ # END WordPress」の前に記述すればよいそうです。

こんな具合です。

.htaccess への追記についてはこちらを参考にさせて頂きました。
WordPressが自動的に書く.htaccessに追記する方法 | WordPress

XML-RPC の機能を全て制限してしまう場合は、これで終了です。

続きは、必要に応じて .htaccess への記述を追加してください。

ブログエディタを使うために、特定の IP アドレスを許可する

MarsEdit – the blog editor for WordPress, Tumblr, Blogger and more.
カテゴリ: ソーシャルネットワーキング
価格: ¥4,800 (記事公開時)
App

セキュリティを考慮した上で、ブログエディタと言う利便性も維持したかったので、さらに自宅の IP アドレスを許可する記述を追加します。

Allow from XXX.XXX.XX.XX の XXX.XXX.XX.XX に自宅の IP アドレスなど、許可したい IP アドレスを記述してください。

XML-RPC にちゃんと制限がかかっているか、もしくはアクセスできるか確認したい場合は、「http://ドメイン名/xmlrpc.php」にアクセスすると確認することができます。

アクセスができていない場合は、「Forbidden」となり、アクセスできている場合は、「XML-RPC server accepts POST requests only.」と表示されます。

確認してみます。
Mac でアクセス元を変えるのが面倒なので、手っ取り早く iPhone で確認してみました。

まず、LTE で「http://ドメイン名/xmlrpc.php」にアクセス

Access xmlrpc php lte

うん、Forbidden。

次は、自宅の Wi-Fi (許可した IP) に接続した状態でアクセス。

Access xmlrpc php wi fi

うん、「XML-RPC server accepts POST requests only.」だ。OK 。

さらに、回線は LTE で自宅の VPNサーバに接続して確認。これができなと、外出先から iPhone でアクセスできなくなってしまう。

Access xmlrpc php vpn

オーケー。「XML-RPC server accepts POST requests only.」だ!

これで利便性を確保した上で、今まで通り MarsEditPressSync も使えます! 素晴らしい。

最後に、「Jetpack by WordPress.com」も使えるようにします。

Jetpack by WordPress.com を使うため、Automattic からのアクセスを許可する

Automattic は WordPress の開発元です。Jetpack も Automattic が開発しています。これは、自宅と違って IPアドレスが分からなかったので、少し困ったんですけど。ググったらありました。ありがたや。

こちら経由で (ここにも書いてありますが。)
WordPress › フォーラム » Jetpackについて

こちらを参考にさせて頂きました。
XdomainでJetPackが使えない

Automattic を許可する記述は「Allow from 192.0.64.0/18」になります。

今までの記述に追記すると。

これで、完成!

利便性を損なうことなく、セキュリティを向上できました!

満足。

Jetpack が使える状態になっているかは、こちらで確認することができます。
Debug — Jetpack for WordPress

Debug Jetpack for WordPress

異常なし!

まとめ

私は、サーバセキュリティについては、ブログを始めてからいろいろ勉強している状態です。今回、参考としていろんなサイトを紹介させていただきましたが、本当に助かりました。ありがたや。

実は、前にも「.htaccess」をいじったことがあるんですけど、みごとに失敗して、ブログが真っ白になり、私の頭の中も真っ白になりました。今回はすべて上手く行きました!
いろいろ情報を公開してくださっている方々に感謝です。自分の理解も少しだけ深まった気がします。

「.htaccess」はミスるといろいろ真っ白になるので、作業する前にしっかりとバックアップを取りましょう!

2015年 12月末に CloudFlare を導入したため。現在このブログではこの設定は解除しています。

CloudFlare を導入する際の注意点のメモ

2016.01.10
MarsEdit – the blog editor for WordPress, Tumblr, Blogger and more.
カテゴリ: ソーシャルネットワーキング
価格: ¥4,800 (記事公開時)
App
PressSync – for WordPress
カテゴリ: ソーシャルネットワーキング
価格: 無料 (記事公開時)
App
PressSync Pro – WordPress Blogging App
カテゴリ: ソーシャルネットワーキング
価格: ¥600 (記事公開時)
App
スポンサーリンク