ピンバック機能(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にはアクセスできなくなります。

わたしはリモート投稿を使うことがあるため、指定のIPからしかXML-RPCを許可しないようにしてみました。
実用的には微妙かもしれませんが、外出の際は指定IPアドレスのVPNを経由することでxmlrpc.phpにアクセスできます。

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

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

XML-RPC使用に関する補足

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

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

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

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

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

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

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

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

今注目の記事

超簡単!アイコンフォント Font Awesomeの使い方
WP子テーマの作り方
Contact Form 7の送信完了画面がでない

フォローする

WordPressとはなにかもう一度おさらいしてみよう!

コメントをどうぞ

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


八 − = 5

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">