このプラグインは、WordPressのログイン画面に対してブルートフォースアタックが仕掛けられた場合の、状況を監視するための機能を持たせたものです。
実際の攻撃を見てみたい
ブルートフォースアタックは日本語で「総当たり攻撃」と呼ばれ、一連のパスワードを入力してログイン情報を取得する方法です。
例えばログイン操作が面倒くさいからと簡単なパスワード、「password」とか「0123」など利用していると、使用パスワードの頻度で集めた辞書を利用して、あっという間にサイトが乗っ取られてしまいます。
そこで実際に自分のサイトのWordPressのログイン画面に攻撃が仕掛けられているかどうか、仕掛けられているならどのような状況なのかを目で確認したい、と思い、このプラグインを用意しました。また、もしそうした攻撃を受けた場合、攻撃によりサイトで利用するサーバーの負荷も軽減したいと思いました。
プラグインの機能
プラグインはログイン画面から入力されたデータを、データベースに保存・蓄積します。
保存する項目はアクセスされた情報から次の項目にしました。
- 入力されたログイン名
- 入力されたパスワード
- 相手方IPアドレス
- 利用ブラウザ情報
- 言語順位
- 処理ステージ
- 登録日時
保存されたデータは管理画面から検索できます。
検索可能な項目はデータベース上の登録IDを除く全ての項目です。
検索方法は MySQL の正規表現機能を利用していますので、ご存知の方は活用いただけます。通常はそのまま調べたい文字列を入力して下さい。半角の英数文字で大文字、小文字の区別はサーバーのデータベースの設定により変わりますが、通常は区別しない設定になっていると思います。
並べ替えは登録IDの昇順、降順のみとなります。
どのような情報が得られるか
ブルートフォースアタックを受けている場合は次のような情報が確認できます。
- 仕掛けられているログイン名やパスワードが確認できます。
- IPを調べればどこから(どの国から)仕掛けられているか手掛かりになります。
- ブラウザ情報に何が設定されているか確認できます(プログラムで自動化されているかの判断に役立ちます)。
- 攻撃の時間間隔が分かります。
その他、確認できる情報には以下のようなものがあります。ただしアクセスページがログイン画面に限られますのでご留意下さい。
- 使用されるブラウザの情報から全体の占有率
- MacやWindowsなど使用されるクライアントマシンのOSや端末情報
Windows NT 6.1 ならWindows 7など 参考:Windows NT系(ウィキペディア) - 使用言語
などです。
スマートフォンやタブレットの利用が拡大する中、Webサイトもレスポンシブデザインを採用したり、あるいはランディングページを用意する際にそれらの情報を確認すると、今後のユーザーエクスペリエンス(UX)の向上にも役立てる事ができます。
導入の注意事項
パスワードですが、ユーザーがログインする際の平文を保存します。もしあなたのサイトでユーザーが登録するパスワードをユーザーにお任せしている場合は、本プラグインは利用しないで下さい。
またそれでも利用する場合は、ログイン時の情報をロギングしている事を明示しましょう。それはサイト利用者と運営者との信頼関係を保つためです。
また他山の石、あなたが利用しているパスワードはサイト運営者に知られている可能性を頭の隅に置いときましょう。
プラグインの導入と削除
導入はプラグインディレクトリにコピーし、管理画面から「有効」にすれば動作を開始します。削除は管理画面からプラグインを「停止」後、同じく「削除」を実行して下さい。
削除する事でそれまで蓄積したデータベースのデータも削除されます。
ログインリストは管理画面の「ユーザー/ログインログ」から実行して下さい。
ワンタイムキーとログインフォームについて
ブルートフォースアタックを仕掛ける場合のログインフォームについて、人海戦術でキーボードを叩いて実践しているとは思えず、プログラムを利用して世界中のサイトを大規模にアクセスし回っていると考えられます。
そこで、WordPressの機能にあるCSRF(クロスサイトリクエストフォージェリー)対策のための「NONCE」と呼ばれるワンタイムキー(に近いもの)を、プラグインによりログイン画面に仕込むようにしました。
これは、WordPressのログイン画面が広く知られているため、プログラムから容易にPOST送信されてしまうための対策で、ワンタイムキーが正しく設定されていない場合はロギング処理の時点で処理を中止するためです。これによりサーバーへの負荷を多少なりとも減らす事ができるかと思います。
リストのステージ情報は、「1」がワンタイムキーが設定されていない場合、「2」がワンタイムキーが正しくない場合、「3」はWordPressのログイン処理へ移行したものです。
もしあなたのサイトのログインフォームがWordPressで用意された機能を利用していない場合、必ずこの項目を埋め込む必要があります。詳細は必要に応じて弊社へお問い合わせ下さい。