WordPressのセキュリティ対策の1つとして、外部からのアクセスに使用されるXML-RPC(xmlrpc.php)を無効化する方法です。
既にご存じかと思いますが、xmlrpc.phpはWordpress3.5以降のバージョンに含まれており、このファイルを使っていなくても標準で有効化されています。
このファイルはその特性上ハッカーの的になりやすいので、XML-RPC関連の機能を使っていない人は無効化しておくのがオススメです。
.htaccessを使う方法とプラグインを使う方法の2つを詳しくご紹介します。
この記事の目次
WordPressのxmlrpc.phpを無効化する方法
はじめに...当記事をご覧いただいている方には「XML-RPCとは?」という項目は不要かと思いますが、簡単に触れておきましょう。
WordPressにおいて、XML-RPC(xmlrpc.php)は外部からサイトを操作する時に使用される機能です。この外部からの操作ですが、具体例は以下のような作業です。
xmlrpc.phpを使用するケース
- スマホの「WordPressアプリ」でリモート投稿を行うとき。
- 自作プログラムでxmlrpc.phpを使って自動投稿を行うとき。
- ピンバック(トラックバック)を外部サイトから受け付けるとき。
xmlrpc.phpを使用するケースは大体これくらいかな?と思います…
多くの人は決まったパソコンからしか記事の投稿・編集は行わないはずです。
また、最近はピンバック機能を停止しているサイトも増えてきている感じですので、遠隔操作の機能自体がそもそも不要という方は多いはずです。
上記のような操作を現在行っていないなら、xmlrpc.phpは無効化しておきましょう。
余談ですが、Wordpress4.4からは「REST API」というものが導入されており、現在は遠隔操作にはREST APIが使われることが増えました。
が、それでもデフォルトではxmlrpc.phpが有効になったままになっています。
xmlrpc.phpを無効化する必要性について
XML-RPC(xmlrpc.php)を無効化する理由はほぼ1つ。そうセキュリティ強化です。
xmlrpc.phpは外部からの遠隔操作を担うという性質上、ハッカーに狙われる可能性が高いファイルの1つです。また、Wordpressのインストール時からあるファイルで、設置場所が決まっていることも狙われやすい原因だといえます。
実際、当サイトでもxmlrpc.phpを使用した不正なリクエストが確認できました。
上の画像は「Login rebuilder」というプラグインを使って記録したログ画面です。
見慣れないIPアドレスからリクエストが送信されています。おそらく海外から…
攻撃手段としては、XML-RPCを経由して不正なピンバックなどを大量に送信することで、ログインパスワードを総当たりして突破したり、サーバーをダウンさせたりするという方法が多いようです。
いずれにしてもxmlrpc.phpを使って遠隔操作を行わない、分からない人は無効化しておくのがセキュリティ対策としては得策です。
ということで、この記事ではxmlrpc.phpを無効化する方法として以下の2つの方法をご紹介します。
- .htaccessを使用してxmlrpc.phpにアクセス制限をかける方法。
- Wordpressのプラグインを使用してxmlrpc.phpを無効化する方法。
どちらも簡単な方法ですが、それぞれのやり方を詳しく解説します。
参考
xmlrpc.php自体をサーバー上から削除する方法は非推奨です。
WordPressのアップデート時に自動復活するので、後々面倒になります。
xmlrpc.phpの有効・無効を確認する方法
作業の前に、まず「自サイトでxmlrpc.phpが有効か無効か?」を確認しましょう。
有効かどうかを確認するには「xmlrpc.php」に直接アクセスすれば分かります。
xmlrpc.phpはサーバールートにあるはずなので、以下のURLでアクセスできます。
自分のサイトのURL/xmlrpc.php
サイトのURLの後ろに「/xmlrpc.php」を付けたURLにアクセスしてみましょう。
XML-RPC server accepts POST requests only.
と出ていれば、xmlrpc.phpは有効になっています。
ここで403(アクセス拒否)が出れば、既にアクセス制限がかけられています。
ポイント
レンタルサーバー会社によっては、あらかじめxmlrpc.phpに制限をかけて無効にしているところもあるそうです。
以前までは「WordPress XML-RPC Validation Service」というサイトを使っても、xmlrpc.phpが有効かどうかを調べることができたのですが、現在はそのページが無くなっているようです。
サーバー上の.htaccessを使ってxmlrpc.phpにアクセス制限をかける方法
やっと本題です。
まずはサーバー上の「.htaccess」でxmlrpc.phpにアクセス制限をかける方法です。
編集する.htaccessは以下の場所にあります。
サーバールート > public_html内
特殊なサイト構造ではないなら、基本ここにあるはずです。
場所が分かったらFTPソフトなどでアクセスして編集します。
ポイント
.htaccessは隠しファイルになっていることが多く、設定によっては見えない事があるのでご注意下さい。
.htaccessに追記するコード
public_html内の.htaccessを開いたら以下のコードを追記します。
<Files xmlrpc.php> Order Allow,Deny Deny from all </Files>
.htaccessの一番先頭にコードを追記すればOKです。
なお、任意の場所にコードを追記する場合は#BEGIN WordPressから#END WordPressよりも上に書くように注意して下さい。
また、特定のIPアドレスからのみxmlrpc.phpへのアクセスを許可したい時は以下のように「Allow form 許可するIPアドレス」を追記すれば対応することが可能です。
<Files xmlrpc.php> Order Deny,Allow Deny from all Allow from XXX.XXX.XXX.XXX </Files>
自分だけがxmlrpc.phpを使えるようにしたい時などにどうぞ。
ただし、これはIPアドレスが固定の場合に限るので、スマホなどから遠隔投稿しようとする時には使えないと思います。
動作確認
コードを追記したら、再度「サイトURL/xmlrpc.php」に直接アクセスして動作確認しましょう。
自分のサイトのURL/xmlrpc.php
にアクセスして403(アクセス拒否)の画面が出ればOK!
これでxmlrpc.phpにアクセス制限をかけることができました。
プラグインを使ってxmlrpc.phpを無効化する方法
xmlrpc.phpに制限をかけるだけなら、先述の.htaccessを使う方法がお勧めですが、初心者の方や不安な方はWordPressのプラグインを使ってもxmlrpc.phpを無効化することが可能です。
管理画面左メニュー > プラグイン > 新規追加
から「Disable XML-RPC」と検索すれば沢山プラグインが出てきます。
これらのプラグインは有効化するだけでxmlrpc.phpを無効化することができます。
特に難しい設定は無いので使い方などは割愛します。
プラグインはいくつか種類がありますが、各最終更新日が新しく、インストール数が多いものを選んでおけば問題ないでしょう。
プラグインを有効化したら、先述の方法で「/xmlrpc.php」に直接アクセスし、403(アクセス拒否)の画面が出るか確認しておきましょう。
まとめ
以上、Wordpressでxmlrpcを無効化する方法でした。
サーバー上の.htaccessや、WordPressプラグインを使えば簡単にxmlrpc.phpに対してアクセス制限をかけ、無効化することができます。
最後にxmlrpc.phpを無効化した時のデメリットというか注意点ですが、Wordpressを外部から遠隔操作したり、他サイトからのピンバックを受け付けることができなくなります。xmlrpc.phpを無効化するとピンバック機能は実質使えなくなりますので、ご注意下さい。こればかりはトレードオフになると思います。
当サイトはピンバックを受け付けていますので、xmlrpc.phpは有効のままです。
このようなサイトで他に出来るセキュリティ対策としては、管理画面やログイン画面にIP制限をかけておくのが有効だと思います。関連記事(↓)も是非ご確認下さい!
-
- WordPressの管理画面とログイン画面にIPアドレスで制限をかける方法。[.htaccess使用]
続きを見る
WordPressってそのまま使っていると結構セキュリティ弱そうですね~
知らないと対策できないし…難しいね。ではではこのへんで・w・