XML-RPCは無効化にしておけ。WordPressが狙われる理由とは

WordPressを運用している方へ、XML-RPCは無効化にしておきましょう。
先日、あるサイトのセキュリティログを確認したところ、短時間に大量のアクセスが記録されていました。
最初は「ログイン画面に対する攻撃かな?」と思いました。
しかし、ログを詳しく確認すると、狙われていたのはWordPressのログイン画面ではなく、「XML-RPC」という通信機能でした。
今回は実際のアクセスログをもとに、XML-RPCとは何か、そしてなぜ無効化した方がよいのかを解説します。
実際のアクセスログ

CloudSecure WP Securityのログを確認すると、数秒の間に何度もアクセスが記録されていました。
しかもアクセス元のIPアドレスは次々と変わっています。
これは人が手作業でアクセスしているのではなく、自動化されたボットによるアクセスである可能性が高いと考えられます。
ログイン画面にアクセスされていると勘違い
ログを見たとき、「ログイン画面に何度もアクセスされている」と思いました。
しかし、実際は違いました。
ログを見ると、攻撃対象はXML-RPCとなっています。
つまり、ログイン画面(wp-login.php)ではなく、WordPressの通信機能(xmlrpc.php)が狙われていたのです。
この違いを理解していなかったため、最初は状況を正しく把握できませんでした。
XML-RPCとは?
XML-RPCとは、WordPressを外部から操作するための通信機能です。
例えば、
- WordPressアプリ
- 一部の外部サービス
- システム連携
などで利用されます。
昔は便利な機能でしたが、現在では一般的な企業サイトで利用しているケースは多くありません。
なぜXML-RPCが狙われるのか
XML-RPCには認証機能があります。
攻撃者はこの仕組みを利用して、「このID・パスワードでログインできるか」という認証を大量に試します。
つまり、ログイン画面を開かなくても、XML-RPC経由で総当たり攻撃を試すことができるのです。
そのため、昔からXML-RPCは攻撃対象として利用され続けています。
一般的な企業サイトなら無効化して問題ない
Jetpackなどを利用していないのであれば、XML-RPCを有効にしておくメリットはほとんどありません。
一方で、有効なまま放置すると、攻撃対象を一つ増やすことになります。
使っていないのであれば、無効化してしまうことをおすすめします。
私がおすすめする3つの設定
私はCloudSecure WP Securityを利用しています。
最低でも次の3つは設定しておきたいところです。
① XML-RPC無効化
今回の記事で一番伝えたい内容です。
利用していないのであれば、まず最初に設定しましょう。
② ログインURL変更
WordPressのログインURLは初期状態では誰でも分かります。
ログインURLを変更することで、不必要なアクセスを減らす効果が期待できます。
さらに、「リダイレクト設定」も有効にしておくことをおすすめします。
③ ログイン無効化
一定回数ログインに失敗したIPアドレスを一時的にブロックできます。
ただし、ログイン無効化だけでは十分ではありません。
攻撃者はIPアドレスを次々と変更してアクセスしてくるためです。そのため、XML-RPC無効化と組み合わせることが重要です。
まとめ
今回、実際に自社サイトのログを確認したことで、「ログイン画面ではなく、XML-RPCが狙われている」ということを知りました。
WordPressを長年使っていても、ログを確認しなければ気付かなかったと思います。
もしXML-RPCを利用していないのであれば、XML-RPCは無効化にしておきましょう。
設定には数分しかかかりません。しかし、その数分で攻撃対象を一つ減らすことができます。
WordPressを運用しているのであれば、一度設定を確認してみることをおすすめします。