WordPressには、記事同士のリンクを自動で通知し合う「Pingback(ピンバック)」という機能があります。便利な仕組みですが、これが悪用されると、自分のサイトが知らないうちに他者へのDDoS攻撃に加担させられる、いわゆる「踏み台」にされてしまうことがあります。
Pingbackは多くのWordPressで標準で有効になっているため、対策をしていないサイトは少なくありません。
この記事では、Pingbackを悪用したDDoS攻撃の仕組みと、踏み台にならないための具体的な対策を、現在有効な方法に絞って解説します。
Pingback機能とは
Pingbackとは、自分のサイトの記事が他のサイトからリンクされたとき、その事実を自動的に通知し合う仕組みです。
たとえば他のブログが自分の記事を紹介してくれると、その通知が届く、といった使われ方をします。WordPressではこの通信に xmlrpc.php というファイル(XML-RPCという外部連携の窓口)が使われています。
Pingbackを悪用したDDoS攻撃の仕組み
DDoS攻撃とは、世界中の多数のコンピュータから一つのサーバーへ一斉に大量のアクセスを送りつけ、サーバーをパンクさせる攻撃です。
Pingbackを悪用した攻撃では、攻撃者が多数のWordPressサイトに対して「攻撃対象のURLにPingbackを送れ」と指示を出します。すると、指示を受けた各WordPressサイトが一斉に攻撃対象へアクセスし、結果として大量のトラフィックが標的に集中します。
ここで注意したいのは、悪用された自分のサイトは「攻撃される側」ではなく「攻撃に加担する側(踏み台)」になるという点です。自分のサイトが直接ダウンするとは限らず、気づかないまま他者への攻撃に使われてしまうため、運営者側で能動的に防ぐ必要があります。
自分のサイトが踏み台になっていないか確認する
まず、自分のサイトでXML-RPC(Pingbackの窓口)が外部から使える状態かを確認します。
ブラウザで https://(自分のドメイン)/xmlrpc.php にアクセスし、「XML-RPC server accepts POST requests only.」のようなメッセージが表示される場合、このファイルが外部から到達できる状態です。これ自体がただちに被害を意味するわけではありませんが、Pingbackが有効なら踏み台に使われ得ます。
より確実なのは、サーバーのアクセスログを確認する方法です。xmlrpc.php に対して短時間に大量のPOSTリクエストが記録されている場合、踏み台として狙われている可能性があります。Wordfenceなどのセキュリティプラグインを導入していれば、こうした不審なアクセスの検知やブロックも行えます。
踏み台にならないための対策
対策は一つではなく、サイトの使い方に応じて選べます。多くのサイトは、まずPingbackを受け付けない設定にしたうえで、XML-RPCを使っていなければ無効化するのが基本です。以下、具体的な方法を順に紹介します。
① Pingback・トラックバックを受け付けない設定にする
最も手軽な対策です。今後の投稿でPingbackを受け付けないようにします。
- WordPressのダッシュボードにログインする
- 「設定」→「ディスカッション」を開く
- 「他のブログからの通知(ピンバック・トラックバック)を受け付ける」のチェックを外す
- 「変更を保存」をクリックする
② すでに投稿済みの記事のPingbackを一括で無効化する
①は新規投稿への設定なので、既存の記事には一括操作で適用します。
- ダッシュボードで「投稿」→「投稿一覧」を開く
- タイトル横のチェックボックスで対象記事をすべて選択する
- 「一括操作」のプルダウンで「編集」を選び「適用」をクリックする
- 「トラックバック/ピンバック」の項目を「許可しない」に変更する
- 「更新」をクリックする
③ XML-RPC自体を無効化する
Pingbackの窓口であるXML-RPCを丸ごと無効化する方法です。テーマの functions.php に次の一行を追加すると、XML-RPCの機能が無効になります。
add_filter( 'xmlrpc_enabled', '__return_false' );
ただし注意点があります。XML-RPCは、スマートフォンの公式アプリ、Jetpack、外部ツールからの投稿などでも使われています。これらを利用している場合、無効化すると正しく動かなくなることがあるため、使っていないことを確認してから実施してください。
④ .htaccessでxmlrpc.phpへのアクセスを遮断する
Apache系のサーバーでは、.htaccess に記述して xmlrpc.php へのアクセス自体をブロックする方法もあります。
<Files xmlrpc.php>
Require all denied
</Files>
サーバーの環境によっては記述方法が異なる場合があります。うまく効かないときは、利用中のレンタルサーバーのマニュアルを確認してください。
⑤ プラグインやセキュリティサービスを使う
コードの編集に不安がある場合は、プラグインで対応できます。「Disable XML-RPC Pingback」は、XML-RPC全体を止めるのではなく、攻撃に悪用されるPingback関連の機能だけを取り除くプラグインです。Jetpackやアプリ連携を使いつつ攻撃だけ防ぎたい場合に向いています。また、WordfenceなどのセキュリティプラグインやCloudflareのようなCDNを併用すると、不審なアクセスをまとめて遮断でき、より広い範囲の攻撃にも備えられます。
どの対策を選べばいい?
迷った場合の目安として、XML-RPCを特に使っていないサイトなら、①でPingbackを止めたうえで、③または④でXML-RPCを無効化・遮断するのが確実です。一方、スマホアプリやJetpackなどでXML-RPCを使っているサイトは、丸ごと無効化すると不都合が出るため、⑤の「Disable XML-RPC Pingback」プラグインでPingback機能だけを取り除くのが安全な選び方になります。
まとめ
Pingbackを悪用したDDoS攻撃は、自分のサイトが被害者ではなく加害者(踏み台)にされてしまう点が特徴です。
標準で有効なPingbackは、使っていないなら早めに止めておくのが安全です。まずはディスカッション設定でPingbackを停止し、サイトの使い方に合わせてXML-RPCの無効化やプラグインでの対策を組み合わせて、踏み台にされないサイトにしておきましょう。