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

ヘッダ画像

ピンバック機能(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やfunction.phpでもdd_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自体の変更も検討するとよいでしょう。

コメントを残す

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

関連記事

WordPressのログインユーザー名は丸見え!?

WordPressのセキュリティ対策で必ずいわれるのが、ユーザー名を「admin以外に変更しよう」で […]

Contact Form 7の送信完了画面がでない

お手軽にお問い合わせフォームなどを設置できるContact Form 7 添付ファイルも送信でき、シ […]

3分で設置できる!?CSS3の角丸グラデーションボタン

CSS3と対応ブラウザの登場により、角丸やグラデーションを使ったリンクやフォームの送信ボタンが画像な […]

超簡単!アイコンフォント Font Awesomeの使い方

ひと昔前なら画像で表現していたようなアイコン。 ウェブフォントの登場によって、描画速度が速く手軽に挿 […]