カテゴリー
WordPressカスタマイズ

ピンバック機能(XML-RPC)悪用対策

WordPress のピンバックによる DDoS 攻撃が話題になっていますね。
こちらの記事によると、なんと 162,000!?もの正規のサイト(スパムサイトではない)が DDoS 攻撃の踏み台に悪用されたという驚きの内容です。

「今度は WordPress が踏み台に、 Pingback 機能を悪用し DDoS 攻撃」

WordPress のピンバック機能は自分のサイトの記事 URL が貼られると自動的に通知するという機能ですが、これは XML-RPC API により実装されており、3.5以上からはデフォルト有効になっています。

XML-RPC とは

XML-RPC とはリクエストを XML でポストしてレスポンスを XML で取得するための規格です。
WordPress の場合は XML-RPC API を使用すると管理画面以外から、記事投稿や編集などのいわゆるリモート投稿が行えるようになります。

今回の DDoS 攻撃ではこの XML-RPC を悪用してターゲットに大量のピンバック通知を送りつけるようです。
踏み台サイトは世界中にいくらでもあるわけです。
しかも、攻撃者は XML-RPC に向けてポストを投げるだけなので、身元を隠すことができます。

踏み台対策

プラグインやフィルタで XML-RPC を無効化

Disable XML-RPC Pingback というプラグインで文字どおり XML-RPC を無効化できます。
また、 wp-config.php や functions.php でも add_filter を定義することで無効化できると思います。

「 WordPress の XML-RPC の設定見直し」

htaccess で XML-RPC の使用を制限する

以下で xmlrpc.php にはアクセスできなくなります。

<Files "xmlrpc.php">
order deny,allow
deny from all
</Files>

下記は指定の IP からしか XML-RPC を許可しないような形です。
実用的には微妙かもしれませんが、外出の際は指定 IP アドレスの VPN を経由することで xmlrpc.php にアクセスできます。

<Files "xmlrpc.php">
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>

※XML-RPC で最新投稿の取得したり、外部のサーバーなどから XML-RPC を使って自動投稿されるような仕組みを構築している場合はその IP を許可することで、これまでと同じように動作しますが、他で XML-RPC API を使用している場合は影響が生じる可能性があります。

また、ブルートフォースアタック対策として管理画面のログイン自体も制限しているため、下記のように記述しています。

<Files ~ "^(wp-login\.php|xmlrpc\.php)$">  
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>

XML-RPC 使用に関する補足

最近のレンタルサーバーではデフォルトインストールで海外からの XML-RPC へのアクセスは制限されている場合もあるようです。

これまではデフォルトインストールで有効でしたが、あまりの穂以外の多さに今後は無効がデフォルトになってくるのかもしれませんね。
「動作しない」という場合は実際の環境での XML-RPC の使用許可をチェックしてみてください。

XML-RPC を無効にすると Jetpack でエラーが・・・

多くのユーザーに使われている Jetpack プラグインでは XML-RPC が必要です。
この場合は上記で紹介した htaccess での制限にホワイトリストを加えます。

※192.0.64.0/18 は Jetpack 提供元の Automattic 社の IP アドレス群

<Files "xmlrpc.php">
order deny,allow
deny from all
allow from 192.0.64.0/18
</Files>

Xserver などではサーバーパネル上のデフォルトの無効の状態でこのフィルタリングがなされているようです。
つまり、 XML-RPC への海外からのアクセスは制限しても Jetpack の海外 IP は許可されるということです。

ブルートフォースアタックにも使われる XML-RPC

XML-RPC の悪用は DDoS 攻撃だけではありません。
従来のブルートフォースアタックはログイン画面でアタックを繰り返すわけですが、これを WordPress の xmlrpc.php にログイン名とパスワードを送ることでその結果が正しいかどうかを判別するという手法もとられるようです。
ブルートフォースアタックとして有効な手段のひとつは管理画面へのアクセス制限ですが、方法によってはこれでは防げきれないため、ログイン URL 自体の変更も検討するとよいでしょう。

profile image

執筆:R3098

WEB サービス構築・監修が生業です。 WordPress 関連では Aurora Heatmap などプラグイン開発も行っています。悩めるサイト運営者の無料相談受付けます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。