WordPressのxmlrpc.phpを無効化して脆弱性対策

WordPress
  • WordPressのxmlrpc.phpを無効化していいのか知りたい
  • WordPressのxmlrpc.phpを無効化する方法を知りたい

そんな方にオススメの内容です。

スポンサーリンク

WordPressのxmlrpc.phpの脆弱性

RPCは別パソコンのプログラムを実行できるようになる技術。
内容聞いただけで悪用されたらやばそうな気配がするんだけど、WordPressの場合は特に2つが問題視されているんだ。

IDとパスワードがばれる

WordPressではxmlrpc経由でログイン状態の人しか見ることができない内容を取得する機能がある。
そしてこの機能によってIDとパスワードがわかってしまうんだ。

IDとパスワードを総当たりで試すプログラムを使われると、いつかは正解にたどり着かれてしまう。
ユーザーがいつも使っているログインの方法とは異なるため抜けがちなんだけど、対策は必須なんだ。

DDos攻撃の踏み台にされる

WordPressのxmlrpc経由で別のWordPressのブログに引用したことを知らせるピンバックという機能を使えるんだ。
このピンバック機能を使ってDDos攻撃の踏み台として悪用されてしまう。

DDos攻撃ってのは自分以外のパソコンを使って、標的のサイトに多量のアクセスを集中させてサーバーをダウンさせてしまうこと。
最新のWordPressではxmlrpcと違う機能が使われているんだけど、古いバージョンとの互換性を考慮して機能としては残ってしまっている。

WordPressのxmlrpc.phpを無効化してもいいのか

WordPressのxmlrpc.phpを無効化した方がセキュリティ的には安全だけど、それでWordPressを使用するときに不都合があるなら問題がある。
安全と利便性はおおよそトレードオフの関係。
次の2つのケースに当てはまるならWordPressのxmlrpc.phpを無効化してはいけないから注意が必要なんだ。

スマホアプリを使っている

スマホアプリでWordPressの記事の投稿や取得をできなくなってしまう。

そもそもスマホアプリはXML-RPCの別パソコンのプログラムを実行できるようになる技術で成り立っている。
WordPressを置いているサーバーは手元のスマホとは別パソコンなので、XML-RPCは都合がいい。

ただし、このスマホアプリについては使用をやめればいい。
本当にWordPressのスマホアプリは必要なのか考えてみてほしい。
メモ帳やGmailに下書きして、WordPressサイトが乗っ取られるリスクを避けてみてはいかがだろうか。

Jetpackプラグインを使っている

WordPressで有名なプラグインであるJetpackもxmlrpc.phpを使っている。

こちらも本当に必要なのか考えてみてほしい。
Jetpackは便利な機能を一括で揃えているメリットがあるんだけど、その分だけ重たく・依存に悩まされがちなプラグインなんだ。
自分の使っている機能を他のプラグインに置き換えられないかを検討してみてほしい。

WordPressのxmlrpc.phpの無効化方法

無効化させる方法としてはプラグインを導入することもできる。
だけど、簡単に対応できてパフォーマンス的に優れているのでサーバー設定レベルで対応した方がいい。
エラー画面を表示させるリソースももったいないから、xmlrpc.phpへのアクセスはローカルPCへリダイレクトさせる。

Nginxの設定

他のlocationディレクティブと同じ階層に書いておく。

    location = /xmlrpc.php {
      return 301 http://0.0.0.0;
    }

Apache/.htaccessの設定

WordPressのルートディレクトリにある.htaccessに記載する。
ルートディレクトリはlicense.txtファイルやwp-adminディレクトリがある場所。

RewriteEngine on
RewriteRule ^xmlrpc\.php$ http://0.0.0.0 [END]