以前、ブルートフォースアタック に備えて「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はネット上のトラフィック(通信量)を増大させ、通信を処理している回線やサーバの処理能力(リソース)を占有することによって、システムを使用困難にしたり、ダウンさせたり、過負荷によってサーバの機材そのものを誤動作させたり破壊したりする。
DDoS攻撃(ディードスこうげき、ディーディーオーエスこうげき、Distributed Denial of Service attack)とは、踏み台と呼ばれる多数のコンピュータが、標的とされたサーバなどに対して攻撃を行うことである。別名として、協調分散型DoS攻撃、分散型サービス妨害攻撃などがある。
実際このブログも先日「xmlrpc.php」に300回以上アクセスされて、緊急でその IPアドレスからのアクセスを弾いたんですけど。外出中だったら対処出来ないので、根本的な対策が必要であると改めて感じた次第です。
XML-RPC にアクセス制限をかける
XML-RPC にアクセス制限をかける方法はいくつかありますが、今回は前述のような理由で、細かく設定したかったので、「.htaccess」を利用して制限をかけました。
.htaccess に記述する内容
XML-RPC にアクセス制限をかけるための記述は以下になります。
1 2 3 4 | <Files xmlrpc.php> Order Deny,Allow Deny from all </Files> |
こちらを参考にさせて頂きました。
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」の前に記述すればよいそうです。
1 2 3 4 5 6 7 8 9 10 | # XML-RPC にアクセス制限 <Files xmlrpc.php> Order Deny,Allow Deny from all </Files> # END XML-RPC にアクセス制限 # BEGIN WordPress ~ # END WordPress |
こんな具合です。
.htaccess への追記についてはこちらを参考にさせて頂きました。
WordPressが自動的に書く.htaccessに追記する方法 | WordPress
XML-RPC の機能を全て制限してしまう場合は、これで終了です。
続きは、必要に応じて .htaccess への記述を追加してください。
ブログエディタを使うために、特定の IP アドレスを許可する
カテゴリ: ソーシャルネットワーキング
価格: ¥4,800 (記事公開時)
セキュリティを考慮した上で、ブログエディタと言う利便性も維持したかったので、さらに自宅の IP アドレスを許可する記述を追加します。
1 2 3 4 5 6 7 8 | # XML-RPC にアクセス制限、自宅IP は許可 <Files xmlrpc.php> Order Deny,Allow Deny from all # 許可したいIPアドレス Allow from XXX.XXX.XX.XX </Files> #END XML-RPC にアクセス制限、自宅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」にアクセス
うん、Forbidden。
次は、自宅の Wi-Fi (許可した IP) に接続した状態でアクセス。
うん、「XML-RPC server accepts POST requests only.」だ。OK 。
さらに、回線は LTE で自宅の VPNサーバに接続して確認。これができなと、外出先から iPhone でアクセスできなくなってしまう。
オーケー。「XML-RPC server accepts POST requests only.」だ!
これで利便性を確保した上で、今まで通り MarsEdit も PressSync も使えます! 素晴らしい。
最後に、「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」になります。
今までの記述に追記すると。
1 2 3 4 5 6 7 8 9 10 | # XML-RPC にアクセス制限、自宅IP と Automattic は許可 <Files xmlrpc.php> Order Deny,Allow Deny from all # 許可したいIPアドレス Allow from XXX.XXX.XX.XX # Automattic を許可 Allow from 192.0.64.0/18 </Files> # END XML-RPC にアクセス制限、自宅IP と Automattic は許可 |
これで、完成!
利便性を損なうことなく、セキュリティを向上できました!
満足。
Jetpack が使える状態になっているかは、こちらで確認することができます。
Debug — Jetpack for WordPress
異常なし!
まとめ
私は、サーバセキュリティについては、ブログを始めてからいろいろ勉強している状態です。今回、参考としていろんなサイトを紹介させていただきましたが、本当に助かりました。ありがたや。
実は、前にも「.htaccess」をいじったことがあるんですけど、みごとに失敗して、ブログが真っ白になり、私の頭の中も真っ白になりました。今回はすべて上手く行きました!
いろいろ情報を公開してくださっている方々に感謝です。自分の理解も少しだけ深まった気がします。
「.htaccess」はミスるといろいろ真っ白になるので、作業する前にしっかりとバックアップを取りましょう!
カテゴリ: ソーシャルネットワーキング
価格: ¥4,800 (記事公開時)