さくらのVPSで運用しているWordPressサイトがDDoS/DoS攻撃を受けました(その3)wp-login.phpへのブルートフォース攻撃対策

sakuravps_ddos_dos_attack_countermeasure_0_1

先日、くらのVPSで運用しているWordPressサイトがDDoS/DoS攻撃を受けました(その2)プラグインやスケールアップによる対策についてという記事を公開しました。

その記事の中で「WordPressへのDDoS/DoS攻撃 2種類の対処方法」という見出しをつけ、wp-login.phpとxmlrpc.phpに対する攻撃に分けてそれぞれ対処方法を説明しています。今回の記事では、とくに前者のwp-login.php攻撃に対処する方法をご紹介します。

目次

wp-login.phpに対するDDoS/DoS攻撃とは

sakuravps_ddos_dos_attack_countermeasure_3

WordPressのwp-login.phpに対するDDoS/DoS攻撃は、ログインページへの高頻度の不正接続(ブルートフォース攻撃)を行なっている可能性があります。

総当たり攻撃(そうあたりこうげき)とは、暗号解読方法のひとつで、可能な組合せを全て試すやり方。力任せ攻撃、または片仮名でブルートフォースアタック(英: Brute-force attack)とも呼ばれる。

ブルートフォース攻撃についてWikipediaで調べると、このように説明されています

Login rebuilderによる対策

WordPressのプラグインの1つでLogin rebuilderを有効化すると、WordPressログインページのURLを変更できるようになります。WordPressのログインページはデフォルトでは”wp-login.php”という名前が使用されていますが、その名前を”wp-hoge”など任意の名前に変えることができます。

もし攻撃者が不正ログインのために”https://dummy.com/wp-login.php”などにアクセスすると、WordPressの404.phpに飛ばされることになります。

Login rebuilderの利用方法については上記のページが参考になります。

SiteGuard WP Pluginの利用

株式会社ジェイピー・セキュアが開発したSiteGuard WP Pluginは、WordPressの管理画面からインストールするだけでログインページの保護を簡単に行うことができます。

そのプラグインの概要とwp-login.phpの保護についてはそれぞれ上記のページが参考になります。

SiteGuard Liteの利用

SiteGuard Liteはウェブアプリケーションの脆弱性を悪用した攻撃からWebサイトを保護するためにジェイピーセキュア社が開発したWAF(Webアプリケーションファイアウォール)です。製品の特徴として高品質なシグネチャによる防御性能と、シンプルで直観的なGUIを兼ね備えています。

SiteGuardLiteのインストールと基本設定

SiteGuard WP Pluginは、さくらインターネット以外のサーバーを使用しているWordPressサイトでもインストールすることができます。ですがSiteGuardLiteはLinuxサーバーのアプリケーションのため、root権限のあるサーバーなどでそのインストールが済んでいることが前提となります。

そのインストールと基本的な設定については、上記の記事を参考にしてください。さくらのVPSではすでにSiteGuard Liteが標準でインストールされているOSを選択することができます。

具体的にはSiteGuard Lite内のカスタム・シグネチャという機能を使用して、wp-login.phpに対するブルートフォース攻撃に対抗します。そのカスタム・シグネチャには、パス名パラメータ名要求メソッドを設定します。

パス名の設定

条件登録の準備

sakuravps_ddos_dos_attack_countermeasure_3_2

SiteGuard Liteの管理画面に入って「モジュール設定」→「カスタムシグネチャ」に進みます。画面をスクロールすると現在の条件が登録されています。sample-02にチェックボタンを入れて、「編集」ボタンをクリックします。

条件編集の準備

sakuravps_ddos_dos_attack_countermeasure_3_3

「シグネチャ登録変更画面/編集」という画面が表示されますので、「条件編集」をクリックします。

sakuravps_ddos_dos_attack_countermeasure_3_4

デフォルトの条件は”/login\.php”となっていますので、”/wp-login\.php“に変更します。

条件の追加(パラメータ名)

sakuravps_ddos_dos_attack_countermeasure_3_7

wp-login.phpでパラメータ名を設定するということは、WordPressのログイン画面で、inputタグのname属性の値を設定することになります。したがってパラメータ名の設定は、「パラメータの名前」にチェックを入れた上で、「ユーザー名とパスワードの2種類のうちどちらかを追加設定する」ことになります。

sakuravps_ddos_dos_attack_countermeasure_3_5_2

「シグネチャ登録変更画面/編集」という画面が表示されますので、「条件追加」をクリックします。

sakuravps_ddos_dos_attack_countermeasure_3_5_2_2_2

「ユーザー名とパスワードの2種類のうちどちらかを追加設定する」という内容は、正規表現で”\A(log|pwd)\z“と記述します。パラメータ名のうち「ユーザーID(log)かパスワード(pwd)のいずれかの文字列に合致した場合」という意味になります。

条件の追加(要求メソッド)

sakuravps_ddos_dos_attack_countermeasure_3_5_5_2

WordPressの管理画面にログインするときのメソッドはPOSTです。正規表現の記述で”\APOST\Z“の文字列を入力します。

sakuravps_ddos_dos_attack_countermeasure_3_5_2_3_2

最終的にこのような状態にして「OK」ボタンをクリックします。

条件の有効化と登録

sakuravps_ddos_dos_attack_countermeasure_3_5_2

sample-02の項目を有効にして、「適用」ボタンをクリックします。条件の画面に遷移しますので、変更を確認(OK)して条件を登録します。

サーバーでバーチャルホストを設定している場合

当該サーバーでバーチャルホストを設定している場合のパス名の設定は、接続先URLがどうなっているかで、1つもしくは複数のパス名設定を行います。

パス名の設定が1つで済む場合

/var/www/html → https://hoge1.com


検査文字列
/wp-login\.php

当該URLにバーチャルホストのディレクトリ名を含まない場合、パス名の検査文字列は1つだけになります。

パス名の設定が複数必要な場合

/var/www/hoge1.com → https://hoge1.com
/var/www/hoge2.com → https://hoge2.com

検査文字列
/hoge1.com/wp-login\.php
/hoge2.com/wp-login\.php

当該URLにバーチャルホストのディレクトリ名を含む場合、パス名の検査文字列は複数必要になります。

以上の作業を行うことによって、1秒間に3回以上、wp-login.phpへアクセスを行なったIPアドレスからの接続について、より安全に拒否できるようになります。

sakuravps_ddos_dos_attack_countermeasure_0_1

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次