さくらのVPSで運用しているWordPressサイトがDDoS/DoS攻撃を受けました(その3)wp-login.phpへのブルートフォース攻撃対策という記事ででは、WordPressへのDDoS/DoS攻撃の一種として、wp-login.phpに対する総当たり攻撃とその対策方法についてご説明しました。
今回の記事では、WordPressサイトに対するDDoS/DoS攻撃でも、ピンバック(pinback)機能を利用した攻撃とその対策方法について、ご紹介します。その1からその3までの対策は、主にDDoS/DoS攻撃の被害者にならないための対策でした。今回は「意図せぬ加害者」とならないようにするための対策です。
WordPressのピンバック機能とは
WordPressのピンバック機能とは自分の投稿からリンクした先のブログ投稿へ自動的に通知を送る仕組みのことを指します。WordPress Codexによると、
ピンバックはリモートコメントと考えるのが一番いいでしょう
とざっくり説明されています。今回の記事ではピンバック機能そのもの説明する記事ではありません。機能の詳細は下記の記事などを参考にしてください。
ピンバック機能を利用した攻撃(xmlrpc.php攻撃)
冒頭で紹介したように、ピンバック機能は、悪意のある攻撃者から第三者のサーバーに対して「意図せぬ加害者」、いわゆる「踏み台サイト」にさせられてしまう可能性があります。DoSの踏み台にされているJPドメインのWordPressをまとめてみた – piyologから攻撃の概要が説明されていますので、一部引用をさせていただきます。
【引用】攻撃の概要
pingbackはハイパーリンクを設置したことを通知する仕組みですが、リモート投稿(XMLRPC)の機能(WordPressのxmlrpc.php)に対して次のPOSTを送信するとそのWebサイトから対象に対してpingbackが行われます。
[php]
<methodCall><methodName>pingback.ping</methodName><params><param><value><string>(DoS対象のURL)</string></value></param><param><value><string>(踏み台サイトのURL)/postchosen</string></value></param></params></methodCall>
[/php]
例えば、WordPressサイトで”https://example.jp/xmlrpc.php”でアクセスすると、画面に”XML-RPC server accepts POST requests only.”が表示され、他のサイトに対してPOSTを送信できる記述が表示されます。
Sucuriによる踏み台サイトの痕跡確認
Sucuriというサービスを使うと、自分のWordPressサイトが過去に「踏み台サイト」としてDDoS/DoS攻撃に加担させられていないかどうか調べることができます。
ただしSucuriが保有しているデータに基づいての判定です。したがって自分のWordPressサイトが「踏み台サイト」として第三者のサーバーに対してDDoS/DoS攻撃を全くしていなかったとは言い切れません。
ちなみにSucuriを使ってみると、当ブログ(エコテキブログ)はまだ「踏み台サイト」に使われた痕跡はありませんでした(2018年1月23日 15:36現在)。
「踏み台サイト」にならないための対策
で、ここからが「踏み台サイト」にされないための対策です。WordPressサイトをどのように運用するかどうかによって対策が異なると思います。「攻撃」という言葉にひるまず自分にとって最もベストな選択をしましょう。
ピンバック機能を利用しない
そもそもピンバック機能を使わないという人は、管理画面の「設定」 →「ディスカッション」 → 「投稿のデフォルト設定」のチェックボタンを外しておきましょう。
.htaccsessの変更
Order Deny,Allow Deny from all Allow from XXX.XXX.XXX.XXX
.htaccessを使ってxmlrpc.phpにアクセスできるIPアドレスを限定します。”Allow from”の後に自分が使っているIPアドレスなどを入力します。ただしこの方法はIPアドレスとして、固定IPアドレスを使用している場合に限られます。
なお、この対策方法については、WordPressのPingback機能を悪用した攻撃対策について(SuiteX V1/V2)を参考にさせていただいております。ありがとうございます。
Disable XML-RPC Pingbackの利用
Disable XML-RPC Pingbackというプラグインを用いることで、ピンバック機能を無効化します。管理画面のプラグインから新規プラグインとして追加して有効化します。
SiteGuard WP PLuginの利用
ジェイピー・セキュア社が提供しているSiteGuard WP PLuginを利用することで、ピンバック機能の無効化やXMLRPC機能全体の無効化を行うことができます。詳しくはジェイピー・セキュア社のページが参考になります。
SiteGuard Liteの利用
さくらのVPSではSiteGuard Lite(WAF=Webアプリケーションファイアウォール)を利用できるOSがあります。
- さくらのVPSでSiteGuard Lite(Web Application Firewall)をセットアップする方法(その1)
- さくらのVPSでSiteGuard Lite(Web Application Firewall)をセットアップする方法(その2)
- さくらのVPSでSiteGuard Lite(Web Application Firewall)をセットアップする方法(その3)
以上の記事を参考にしてSiteGuard Liteの設定をすると、XMLRPCの防御ができます。XMLRPC防御に特化した設定不要です。ただしすべての攻撃を防ぐものではありませんので、お気をつけください。
フィルターフックの利用
[php]
add_filter( ‘xmlrpc_methods’, function( $methods ) {
unset( $methods[‘pingback.ping’] );
unset( $methods[‘pingback.extensions.getPingbacks’] );
return $methods;
});
[/php]
functions.phpに上記のフィルターフックを書き込むと、Disable XML-RPC Pingback同様にピンバック機能を無効化することができます。