WordPressはここ数年、CMSサービスの中で国内シェア1位を誇るサービスですが、人気サービス故に、サイバー攻撃のターゲットになりやすいという現状があります。
また、WordPressはオープンソースで汎用性が高く、且つプラグインで拡張性も高い反面、攻撃者が脆弱性を見つけ出して狙いやすいという面があります。
サイトの改ざんや不正アクセスなどから自分のサイトを守るために対策が必要となりますが、今回はよく狙われやすい「XML-RPC」の無効化についてお話します。
XML-RPCとは
遠隔でWordPressと通信をするための仕様の一つで、WordPressのモバイル用アプリ・Wordからの投稿・ピンバックやトラックバックの利用で使われています。
これらの機能を利用している人には必要かもしれませんが、それ以上にセキュリティの穴になってしまうことのほうが重大だと思いますので、できるだけXML-RPCは無効化したほうがいいでしょう。
※ピンバック・トラックバックは、被リンクが発生したときに通知が来る便利機能ですが、不正なサイトへの誘導やリンク数稼ぎなどのスパム利用をされるケースが多くなっています。
類似機能でREST APIというものがあります。これは、XML-RPCの後発の遠隔通信機能で、モバイルアプリはRESTAPIを利用するよう変更になったりなどしています。
ただし、こちらも遠隔通信という点では同じですので、もし利用していないようでしたら機能を無効化しておくとより安心かと思います。
こんな攻撃をされる可能性があります
・ピンバックを利用したDDoS攻撃
ピンバックとは、自分のサイトのURLが他のWordPressサイト上でリンクが貼られたことを自動的に通知してくれる機能ですが、それを悪用してDDos攻撃を仕掛ける事例がありました。
なお、DDoS攻撃される側ではなく、DDoS攻撃に意図せず加担しているサイトとして、いわゆる踏み台として利用されてしまいます。
・XML-RPCを利用したブルートフォースアタック
XML-RPCに対して適当なログイン情報(ユーザー名・パスワード)を投げ続けて、ログインできる情報を不正に入手しようとする事例がありました。
XML-RPCの状態を確認してみよう
自分のサイトのXML-RPCが有効になっているかどうかをまず確認してみましょう。
確認はとても簡単です。
自分のWordPressサイトにある「xmlrpc.php」ファイルに直接アクセスをして、その結果で確認が可能です。
【有効になっている場合】
XML-RPC server accepts POST requests only. の文字が表示されます。
【無効になっている場合】
利用サーバによって見せ方が違いますが「Forbidden」や「403サーバーエラー」といったアクセス拒否のメッセージが表示されます。
無効になっている人は対策済みですので、特に何もしなくても大丈夫です。
なお、xmlrpc.phpファイル自体を削除する方法は、WordPressの本体のバージョンアップをしたときに削除したファイルが復活してしまうため、あまり意味がありません。
XML-RPCを無効化する方法
プラグインを利用して無効化する方法と、htaccessファイルに追記をする方法があります。
無効化できるプラグインはいくつかありますが、設定の簡単さから、個人的なおススメは「XO Security」です。
このプラグインは、XML-RPC無効化以外にもログイン画面のURLを変更出来たり、ログインログを見たりなどのセキュリティ対策用の機能を含んでいます。
必要に応じて設定してみるといいかもしれません。
プラグインを利用せずにXML-RPCを無効化するには「.htaccess」を編集する方法があります。
.htaccessはデリケートなので、記述ミスや記述位置によってはサイトが見れなくなったりするので、編集は慎重におこなうようにしてください。
1.htaccessファイルをもってこよう
WordPressのインストールをおこなったディレクトリの直下に「.htaccess」がある場合はいったんPCにダウンロードしてください。
もしない場合は、隠しファイルが見れない状態の可能性があります。利用しているFTPソフトの設定を見直してください。
なお、隠しファイルが見れる状態にもかかわらずhtaccessファイルがない場合は、WordPress管理画面の「設定>パーマリンク」にある「変更を保存」ボタンを押すことで生成されます。
2..htaccessをテキストエディタで編集しよう
ダウンロードしたファイルをコピーしましょう。コピー元はバックアップとして念のため取っておくといいでしょう。
コピーしたファイルをテキストエディタで開いてください。そうすると以下のような記述があると思います。
# BEGIN WordPress ~ # END WordPres
これは、ここからここまでがWordPressが使う部分です、というコメントになります。
この間に書いてある記述は触らないようにして、#END WordPressのコメントより下に下記記述を追加して保存してください。
# xmlrpc.phpへのアクセスを無効化する
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
3.編集したファイルをサーバーにアップロードしましょう
アクセス無効にする記述を追加したファイル名が「.htaccess」となるようにしてください。
(コピーによりファイル名が変わっている可能性がありますので確認をお願いします)
そのファイルを、1でダウンロードしてきたところと同じ場所へアップロードしましょう。
その際上書きするかを聞かれるかと思いますが、2で元のファイルを取っておいてあるので、上書きでかまいません。
※もし上書きによりサイトの表示がおかしくなった場合は、元の.htaccessファイルで上書きしなおしてください。
さいごに
WordPressを昔から使っている人への影響とかいろいろあるのだろうとは思いますが、できれば最初から無効化にしておいて、利用する人が有効化するとかにしてほしいですね。
利用サーバによってはお知らせしてくれるところとか設定してくれるところとかあるかもしれませんが、なかなか自力で気づくには難しいなと思いました。
遠隔で投稿とかトラックバックを重要視している方以外は、絶対にやっておいたほうがいい設定だと思いますので、ぜひご自身のサイトを確認してみてください。