

- セキュリティ
WordPressのXML-RPCを外部アクセス確認と無効化する方法
WordPressのセキュリティ対策としてよく話題にあがる「XML-RPC」。XML-RPCは便利な機能である一方、設定次第では外部からの攻撃対象にもなりやすいです。
そこで本記事では、日頃からWordPressのセキュリティ対応をしているプロである『サイト引越し屋さん』が、XML-RPCの概要から、アクセス状況の確認方法、無効化の方法、注意点、よくある質問までを網羅的に解説していきます。
「何か問題が起きたときに速やかに対応してくれるWeb担当者が欲しい」
そんなときは私たちサイト引越し屋さんにお任せください。
専門のエンジニアが作業を代行いたします。
>>WordPress保守管理サービス詳細はこちら
目次(クリックで飛べます!)
XML-RPCとは
XML-RPCとは、「Remote Procedure Call(リモート・プロシージャ・コール)」という仕組みをXML形式で実現した通信プロトコルです。WordPressでは外部のアプリケーションから投稿・編集・削除などの操作を可能にするために使用されています。
たとえば、モバイルアプリやブログクライアントなどからWordPressを操作する際に、このXML-RPC機能が使われています。標準で `xmlrpc.php` というファイルを介して有効になっています。
===サイト引越し屋さんではWordPressの保守管理を代行しております。
詳しくは、下記のサービス詳細をご覧ください。
>>WordPress保守管理サービス詳細はこちら
XML-RPCを利用した脆弱性の攻撃
XML-RPCは便利な反面、悪用されやすいことが問題視されています。
代表的な攻撃パターンには以下のようなものが考えられます。
- ブルートフォース攻撃
- DDoS攻撃の踏み台
- 情報漏洩リスク
ブルートフォース攻撃
ブルートフォース攻撃とは、攻撃者がユーザー名やパスワードを片っ端から総当たりして正しい認証情報を割り出そうとする攻撃です。通常はログインフォーム経由で行われますが、WordPressのXML-RPCを利用することで、より効率的かつ検知されにくい形で攻撃が可能になります。
XML-RPCには system.multicall という機能があり、複数のリクエスト(たとえば、ログイン試行)を1つのHTTPリクエストで送信することができます。
その結果、攻撃者は従来のフォーム攻撃のように1件ずつ送るのではなく、1回のリクエストで数十回のログイン試行をまとめて行えるようになってしまうのです。
DDoS攻撃の踏み台
XML-RPCの pingback 機能は、他のWordPressサイトに対して「この記事であなたのページを紹介しました」という通知を送るための仕組みです。しかし、これを悪用することで、攻撃者はあなたのWordPressサイトを「DDoS攻撃の踏み台」として利用できます。
攻撃者は多数のサイトの xmlrpc.php に対して pingback.ping を実行し、ターゲットのサイトに一斉にリクエストを送るよう指示します。あなたのサイトはその命令を無自覚に受け取り、ターゲットにリクエストを送信するため、知らず知らずのうちに攻撃に加担してしまうのです。
情報漏洩リスク
XML-RPCは、リモートからさまざまなWordPress機能にアクセスできるため、認証が通っていなくてもある程度の情報が取得できてしまう可能性があります。
たとえば、以下のような問題が発生する可能性があります。
- blogger.getUsersBlogsを利用してログイン試行を行い、ユーザー名が存在するかを判定
- 投稿一覧や記事タイトルを取得され、SEOやマーケティング目的に悪用される
- エラーメッセージからプラグインやテーマの情報が漏れる可能性
これらは一見無害に見えますが、攻撃者にとっては「足がかり」になります。ユーザー名が分かればブルートフォース攻撃に移行されやすくなりますし、構成情報が分かれば脆弱性を突くための判断材料になります。
===
WordPressのメンテナンス対応が面倒だと感じたらプロにお任せください!
>>WordPress保守管理サービス詳細はこちら
XML-RPCアクセスの状況を確認する方法
XML-RPCが有効になっているかどうか、また外部からアクセスできる状態にあるかを簡単に確認する方法として、「https://あなたのドメイン/xmlrpc.php」に直接アクセスする方法があります。
https://example.com/xmlrpc.php
※example.comはあなたのWordPressサイトのドメインに置き換えてください。
アクセスして下記の結果が出た場合、XML-RPCが有効で、外部からアクセス可能な状態です。
XML-RPC server accepts POST requests only.
下記の表示となった場合は、XML-RPCが無効またはアクセス制限されている状態です。
404 Not Found や 403 Forbidden
もしあなたのWordPressがXML-RPC有効であった場合には、影響範囲を確認したうえで無効化することを推奨いたします。
===WordPressのセキュリティ対策が不安な場合はプロへ任せるのが安心です。
>>WordPress保守管理サービス詳細はこちら
XML-RPCを無効化する方法
WordPressのXML-RPC機能は、特別な設定をしない限りデフォルトで有効になっています。
セキュリティ強化のためには、使用していない場合は無効化しておくことが推奨されます。
以下4つの方法をご紹介しておきますので、やりやすいものを選んで対応するようにしましょう。
- プラグインを使う
- レンタルサーバーの設定
- .htaccessを使った無効化
- functions.phpにコードを追加
1. プラグインを使う
最も手軽で確実な方法は、専用のプラグインを使ってXML-RPCを無効化する方法です。
おすすめプラグイン「Disable XML-RPC」です。
下記の手順にて導入できます。
- WordPress管理画面にログイン
- 「プラグイン」→「新規追加」
- 検索ボックスに「Disable XML-RPC」と入力
- 該当プラグインをインストールして「有効化」
2. レンタルサーバーの設定
利用しているレンタルサーバーによっては、管理画面から設定できる場合があります。
この場合は1つ目にご紹介した方法同様、簡単に設定可能です。
例えば、エックスサーバーの場合ではサーバーパネルの「WordPressセキュリティ設定」から設定変更することができます。
3. .htaccessを使った無効化(Apache環境)
WordPressがインストールされているWebサーバー内のルート階層にある「.htaccess」にXML-RPCへのアクセスを遮断するコードを追加することで制御することも可能です。
追加するコードは下記になります。
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
4. functions.phpにコードを追加
WordPressで適用しているテーマファイルのfunctions.phpにフィルターを追加することで、XML-RPC機能を無効化することもできます。
手順は下記になります。
- WordPress管理画面の「外観」→「テーマファイルエディター」へ移動
functions.php
を選択- 以下のコードを追記し、保存
add_filter('xmlrpc_enabled', '__return_false');
なお、子テーマを使用している場合は、子テーマのfunctions.phpに記述してください。
XML-RPCを無効化するうえでの注意点
WordPressのセキュリティ強化のためにXML-RPCを無効化するのは有効な手段ですが、何も考えずに遮断してしまうと、サイトの運用や機能に予期せぬ影響を与えることがあります。
以下では、無効化によって起こりうる問題や事前に確認すべきポイントを解説します。
- 外部アプリとの連携が使えなくなる
- APIや外部接続に依存するプラグインへの影響
- 誤ってファイルごと削除しないこと
外部アプリとの連携が使えなくなる
XML-RPCは、WordPressと外部のアプリやサービスを接続するための機能です。
これを無効化すると、次のような機能やアプリが正常に動作しなくなります。
アプリ / サービス | 概要 | XML-RPC無効化による影響 |
---|---|---|
WordPressモバイルアプリ(iOS/Android) | スマホ・タブレットから記事投稿や編集ができる公式アプリ | 記事の投稿・編集・画像アップロードができなくなる |
Jetpack | WordPress公式の多機能プラグイン(統計・バックアップ・セキュリティ等) | リモート管理、通知、統計の収集など一部機能が停止 |
MarsEdit / Windows Live Writer | ローカルPCで記事を作成し、WordPressに投稿できる外部ブログエディター | WordPressとの連携・投稿が不可になる |
対策としては、外部アプリを使用していない場合のみ無効化を検討してください。REST APIを代替手段として活用できるかも併せて確認しましょう。
APIや外部接続に依存するプラグインへの影響
一部のプラグインは、XML-RPCを利用して外部サービスと通信を行っています。
これを無効化すると、以下のようなプラグインの一部機能が停止する可能性があります。
プラグイン / サービス種別 | 概要 | XML-RPC無効化による影響 |
---|---|---|
SNS自動投稿系プラグイン | 記事の公開と同時にSNS(Twitter、Facebookなど)へ自動投稿する機能 | 自動投稿が失敗し、SNS連携が機能しなくなる可能性あり |
バックアップ・同期系プラグイン | サイトのバックアップを外部サーバーやクラウドへ保存するプラグイン | 外部サーバーとの同期処理が正常に動作しなくなる場合がある |
監視・管理サービスとの連携 | 外部のモニタリングサービスや一括管理ツール(例:ManageWP、InfiniteWP など) | ステータス監視やリモート操作が利用できなくなる場合がある |
対策としては、使用中のプラグインがXML-RPCに依存していないか事前に確認し、必要であれば代替手段(REST API対応プラグインなど)を検討しましょう。
誤ってファイルごと削除しないこと
セキュリティのために xmlrpc.php
ファイル自体をサーバーから削除するのはおすすめしません。
表面的にはアクセスできなくなりますが、以下のような問題が生じる可能性があります。
- WordPressのアップデート時に整合性チェックエラーが発生することがある
- 将来的にXML-RPCが必要になった場合に復元が困難
- 不完全な削除によるシステムエラーや不具合
対策としては、むやみに削除するのではなく、先ほど紹介したプラグインやレンタルサーバーの設定、functions.phpや.htaccessを利用して「機能的に無効化」するのが安全です。
XML-RPC無効化に関するよくある質問
WordPressのセキュリティ対策としてXML-RPCを無効化する際に、多くのユーザーさんが疑問に思うことや不安に感じるポイントをよくある質問にまとめてみました。
ぜひ気になるQ&Aをチェックしてみてください。
- Jetpackを使っているのですが、XML-RPCを無効にしても大丈夫ですか?
- REST APIとXML-RPCは違うものですか?
- XML-RPCを一部だけ制限することはできますか?
Q1. Jetpackを使っているのですが、XML-RPCを無効にしても大丈夫ですか?
Jetpackの一部機能はXML-RPCを使用しているため、無効化すると正常に動作しなくなることがあります。Jetpackを使いたい場合は、XML-RPCは有効のままにしましょう。
Q2. REST APIとXML-RPCは違うものですか?
はい、異なる仕組みです。REST APIはよりモダンな通信方式で、XML-RPCの代替として多くの機能を担うようになってきています。
Q3. XML-RPCを一部だけ制限することはできますか?
はい、サーバー設定やプラグインを使って特定のIPアドレスのみに許可することが可能です。
まとめ
本記事では、WordPressのXML-RPC機能に関する基本知識からセキュリティ上のリスク、アクセス状況の確認方法、そして安全に無効化するための具体的な手順までを詳しく解説しました。
- XML-RPCは外部アプリやサービスとの連携に利用されるが、攻撃の対象にもなりやすい
- 「https://ドメイン名/xmlrpc.php」へのアクセスで有効状態を簡単に確認できる
- 無効化にはプラグイン、functions.php、サーバー設定など複数の方法がある
- モバイルアプリやJetpackなど、一部機能への影響を事前に把握しておくことが重要
XML-RPCを使用していないのであれば、積極的に無効化してセキュリティリスクを減らすことをおすすめします。ただし、使用中のプラグインやサービスに影響が出ないかどうかは事前に確認しましょう。
「何か問題が起きたときに速やかに対応してくれるWeb担当者が欲しい」
そんなときは私たちサイト引越し屋さんにお任せください。
専門のエンジニアが作業を代行いたします。
>>WordPress保守管理サービス詳細はこちら
この記事を書いた人
サイト引越し屋さん編集部
日本で最も利用されているサーバー移転&保守代行サービス『サイト引越し屋さん』の中の人です。 サイト引越しに関わる技術情報をはじめ、WordPressやその他のWebサービスに関するノウハウを発信しています。 全日本SEO協会所属。
本サイトにてご提供している情報については、最新かつ正確な情報を提供するよう努力していますが、情報の正確性や完全性を保証するものではございません。また、コンテンツには一部プロモーションが含まれております。本サイトの情報を利用することによって生じたいかなる損害に対しても、当社は責任を負いかねます。情報をご利用される際は、ご自身の判断と責任において行っていただきますようお願い致します。