WordPressでXML-RPCを無効化する方法とその理由を徹底解説

WordPressのXML-RPCは、WordPress CMSに古くから組み込まれている機能の一つです。これは、WordPressサイトと他のWebサービスやモバイルアプリとの間の通信を標準化するための仕組みです。しかし、セキュリティ面でのリスクが高いため、無効化することが推奨される場合もあります。この記事では、XML-RPCとは何か、そしてなぜ無効化することでサイトを保護できるのかを詳しく解説します。
XML-RPCの仕組み
WordPressサイトは、HTML、CSS、PHPといったWebの基本技術を使って動作するように設計されています。これらのファイルはすべて、ホスティングサーバー内のフォルダに整理されて格納されています。
訪問者がドメイン名やその派生URLをクリックすると、目的の情報が含まれるフォルダのデータがブラウザにダウンロードされ、ブラウザがそれを解釈してページとして表示します。
では、ブラウザを使わずにサイトへアクセスしたい場合はどうでしょうか?例えば、独自の管理ソフトウェアやモバイルアプリからアクセスしたいケースです。

この課題を解決するのがWordPressのXML-RPCです。
XML-RPCはAPIの一種で、必要な情報をシンプルなXMLファイルにラップして、モバイルアプリやリモートソフトウェアへ送信します。受信側のアプリは、あらかじめ設定されたデザインでこの情報を展開して表示します。これにより、アプリは重量級のWebページファイルをダウンロードする必要がなくなり、快適なアプリ上でデータにアクセスできるようになります。
一見便利な機能ですが、大きな問題点があります。それは、XML-RPC経由で認証を行うたびにユーザー名とパスワードを送信しなければならないという点です。この仕組みが、ハッカー攻撃に対して非常に脆弱な原因となっています。
XML-RPCがもたらすセキュリティリスク
XML-RPCは、少なくとも次の2つの方法でサイトを攻撃の危険にさらします。ブルートフォース攻撃(総当たり攻撃)とログイン認証情報の盗難です。
1. ブルートフォース攻撃(総当たり攻撃)
攻撃者は、ブルートフォース攻撃によってサイトへの侵入を試みます。

ブルートフォース攻撃とは、要するにパスワード当てゲームのようなものです。攻撃者は正解するまで何度もパスワードの推測を繰り返します。
この攻撃は毎秒数千回のペースで行われるため、短時間で何百万もの組み合わせを試すことが可能です。
通常のWordPressサイトであれば、ログイン試行回数に上限を設けることでブルートフォース攻撃を簡単に防げます。ところが問題なのは、XML-RPCにはログイン試行回数の制限がないという点です。
攻撃者は「管理者が情報を取得しようとしている」と装ってサーバーを欺き、正しい認証情報を持っていないためアクセスできないまま、際限なく試行を続けることができます。
試行回数に制限がないため、いずれアクセスを許してしまうのは時間の問題です。さらに、ハッカーはXML-RPCに対して大量の「ピンバック」リクエストを送りつけてサーバーを過負荷状態にし、クラッシュさせるDDoS攻撃(XML-RPC DDoS攻撃)も容易に行えます。
2. ログイン情報の傍受・盗難

XML-RPCのもう一つの弱点は、非効率な認証システムです。サイトへのアクセスリクエストを送るたびにログイン認証情報も一緒に送信する必要があるため、ユーザー名とパスワードが露出することになります。
ハッカーはこの情報パケットを傍受しようと待ち構えているかもしれません。一度傍受に成功すれば、時間のかかるブルートフォース攻撃をする必要はもうありません。盗んだ有効な認証情報を使って、そのままサイトに侵入できるのです。
WordPressでXML-RPCを無効化すべきか?
WordPressバージョン3.5以降、XML-RPCのコードは大幅に改善され、WordPressチームはデフォルトで有効にしても安全だと判断しました。モバイルアプリやリモートソフトウェアを使ってWordPressサイトを管理している場合は、XML-RPCを無効化しない方がよいでしょう。
一方、サーバーのセキュリティを最優先に考えるなら、無効化する方が賢明です。ハッカーがサイトを攻撃するための経路を一つ塞ぐことができます。
WordPressでXML-RPCを無効化する方法
XML-RPCはWordPressでデフォルトで有効になっていますが、無効化する方法はいくつかあります。
注意:人気プラグインのJetpackを使用している場合、Jetpackがサーバーと通信するためにXML-RPCが必要となるため、無効化できません。また、無効化する前に、使用中のプラグインやテーマがXML-RPCを利用していないことを必ず確認してください。
方法1:コードでXML-RPCを無効化する
1. テーマフォルダ(通常は「wp-content/themes/」内)を見つけ、「functions.php」ファイルを開きます。
2. ファイルの末尾に以下のコードを追記します。
// XML-RPCを無効化 add_filter( 'xmlrpc_enabled', '__return_false' );
「functions.php」ファイルを保存します。これでWordPressのXML-RPC機能がオフになります。ただし、この方法はXML-RPCを無効化するだけなので、「xmlrpc.php」ファイル自体は残ったままです。そのため、ハッカーによる攻撃を完全に防ぐことはできません。
方法2:xmlrpc.phpファイルへのアクセスをブロックする
ハッカーの攻撃を確実に防ぐ最善の方法は、xmlrpc.phpファイルへのアクセスをブロックすることです。
Apacheサーバーの場合
WordPressサイトがApacheサーバー上で動いている場合(WordPressのインストールフォルダ内に「.htaccess」ファイルがあれば、Apacheサーバーである可能性が高いです)、以下の手順に従ってください。
1. cPanelにログインし、ファイルマネージャーを探します。

2. ファイルマネージャーを開き、「public_html」フォルダに移動して、「.htaccess」ファイルを選択します。

3. 右クリックしてファイルを編集します。

4. ファイルの末尾に以下のコードを貼り付けます。
# このドメインへのWordPress xmlrpc.phpリクエストをすべて拒否 <Files xmlrpc.php> order deny,allow deny from all </Files>

5. 保存して終了します。
Nginxサーバーの場合
Nginxサーバーの場合は、以下のコードをサーバー設定ファイルに貼り付けてください。
# Nginxでxmlrpc.phpへのリクエストをブロック
location /xmlrpc.php {
deny all;
}
これで、あなたのサイトは攻撃から守られました。
まとめ
ブルートフォース攻撃やデータ窃取は、今後もサイト運営者にとって深刻な脅威であり続けます。サイトの安全を守るのは運営者の責任です。XML-RPCを無効化することは、その対策として非常に効果的な手段の一つです。本ガイドの手順に従って、今すぐあなたのウェブサイトと訪問者をハッカーから守りましょう。
-
Windows 10でBitLockerを無効にする方法|7つの手順をわかりやすく解説
Windows 10のBitLocker暗号化は、大切なデータを暗号化して保護できるシンプルなソリューションです。面倒な設定なしにすべての情報を安全な環境で守れるため、多くのユーザーがデータ保護のためにBitLockerを活用しています。しかし、一部のユーザーからは問題の報告もあります。たとえば、Windows 7で暗号化したディスクをWindows 10のシステムで使用した際に互換性の問題が発生するケースです。このようなデータ移行やOSの再インストールの際に、個人データを確実に安全に保ちたい場合は、BitLockerを一時的に無効化する必要があります。本記事では、Windows 10でBit
-
WordPressのXML-RPCを無効化する方法とは?リスクと正しいセキュリティ対策を徹底解説
WordPressのXML-RPCを手っ取り早く無効化したいとお考えですか?その前に、なぜ無効化したいのか、その理由を一度立ち止まって考えてみましょう。おそらく、次のような疑問もお持ちではないでしょうか。xmlrpc.phpとは何か?どれほどのセキュリティリスクがあるのか?xmlrpc.phpを無効化すれば脅威は自動的に解消されるのか?この記事では、これらの質問にすべてお答えします。要点:WordPressでXML-RPCを無効化することは、根本的な解決策ではありません。遅かれ早かれ、ハッカーは別の脆弱性を見つけて攻撃してきます。ボットや悪意あるIPアドレスをブロックするためには、強力なWor