JP-Secure(ジェイピー・セキュア )によりSiteGuard WP Pluginが公開されました。JP-Secureは、ウェブアプリケーションファイアウォールなどのセキュリティ商品を提供している会社です。今回、ログイン周りに関連する部分を試してみました。調査したプラグインバージョンは1.0.2です。試したのは以下の4つです。
Rename Login
CAPTCHA
Same Login Error Message
Login Lock
です。今回はログイン機能に関連するところを調査しましたので、Admin Page IP Filter、Disable Pingback、WAF Tuning Supportは調査対象から除外しました。Fail onceはログインに関係しますが、プラグインの初期設定でオフなので除外しました。
Rename Login
WordPressのログインページは、wp-login.phpになっています。このため、wp-login.phpを決めうちでアクセスし、ユーザー名/パスワードを試す、という攻撃があります。
この機能を有効にする(プラグインインストール直後で有効)と、ログインURLが変更され、wp-login.phpではなく、login_*****といったURLでログインしなければならなくなります。wp-login.php決めうちのブルートフォース攻撃には有効だと思われます。
ログインURLは管理画面から設定できます。もし、ログインURLを忘れた場合は、WordPressをインストールしているフォルダの.htaccessを見れば分かります。(忘れた場合にも対応できるようになっているのは嬉しいですね。別のプラグインだと、データベースを見ないと、自分で設定したログインURLが確認できないものもありました。)
パーマリンクを変更している場合、注意点があります。ログインURLを変更しても、URL/loginからリダイレクトされる(本当は怖いWordPress 2016)にあるように、いったんURL/loginにアクセスすると、login_*****へリダイレクトされます。2014年10月時点では、私のブログへ来るブルートフォース攻撃は、ほとんどがwp-login.php決めうちです。ですが、将来、「いったんURL/loginを叩く」というもっと洗練された攻撃が流行するかもしれません。(パーマリンクがWPデフォルトの場合は、この点は考慮しなくても構いません。)
※追記※
ver1.1.0以降では、パーマリンクをカスタマイズした場合、「URL/loginからリダイレクトする処理」を停止するようになりました。
CAPTCHA
ログイン画面では、通常はユーザー名/パスワードを入力します。この機能は、ランダムな文字列を表示して、その文字列を入力させることで、機械によるアクセスを防ぎます。
画像ではアルファベットですが、ひらがなも選択できるようです。
なお、このプラグインは、Really Simple CAPTCHA プラグイン(作者: Takayuki Miyoshi)をベースに、一部改造してcaptchaを出力しているようです。Really Simple CAPTCHA自体はオープンソースで公開されているので、こういった再利用は構いません。しかし、内部のコードを見ると、同じReallySimpleCaptchaというクラスが定義されています。このため、SiteGuard WP Pluginと、Really Simple CAPTCHAを一緒に使おうとすると、以下のようにエラーになります。
プラグインの説明に注意書きはしておいたほうが良さそうですね。将来的には、WordPressが名前空間を採用して、衝突を起こりにくいように改善するのが好ましいと思います。
※追記※
ver1.0.3では、Really Simple CAPTCHAとの衝突が解消されている模様です。
Same Login Error Message
この機能は、ログイン失敗した時のエラーメッセージを変更します。
WordPressでは、ログイン失敗時に、「ユーザー名が間違っています」あるいは「パスワードが間違っています」といったエラーメッセージが表示されるので、どこが間違っているかを教えてくれます。ユーザーには便利ですが、攻撃者にも余計な情報を与えることになります。この機能が有効だと、エラーメッセージが同じなので、ユーザー名とパスワードのどちらが間違っているかが分からなくなります。
Login Lock
ログイン失敗を繰り返す接続元を一時的にロックします。ロックは、一定時間経過すると解除されます。
ブルートフォース攻撃には有効と思われる
SiteGuard WP Pluginの機能を使うと、ブルートフォース攻撃にはかなり効果があるのではないか、と思います。もちろんこのプラグインでは防げない攻撃もありますので、「これを入れたら後は何もしなくても良い」というものではありません。脆弱性のあるプラグインを導入してしまえば、そのプラグインの穴から侵入されて乗っ取られる、という可能性はあります。
[…] JP-SecureのSiteGuard WP Pluginの機能は不正ログイン防止に役立つか […]