Webサービスは基本的にアカウントとパスワードの組み合わせによる認証があります。サービスへログインするために2つの情報を入力するのは、サービスを利用している本人であるかどうかを確認するためですが、この2つの情報が第三者に悪用されるとどうでしょうか?不正ログインにより大きな被害を受けることになります。
本稿では、認証を突破する手法の一つであるブルートフォース攻撃と対策について解説します。
ブルートフォース攻撃とは
ブルートフォース攻撃(ブルートフォースアタック)は、「総当たり攻撃」と呼ばれるパスワードを破る攻撃手法の一つです。ユーザーのアカウントとパスワードを解読するため、考えられる全てのパターンを試していくことで認証を突破します。
この作業を手作業で行うと気が遠くなるような時間を要しますが、実際の攻撃ではプログラムによって機械的に実施されるため、推測されやすいユーザー名や簡単なパスワードを設定していると、ブルートフォース攻撃により不正ログインを許す危険性が非常に高くなります。
ブルートフォース攻撃による被害には以下のようなものがあります。
- 会員情報に登録している個人情報やクレジットカード情報などが漏えいする
- 管理者になりすまされ、Webページの改ざんやスパムメール配信などに悪用される
- ネットバンキングなど、金銭やポイントなどを管理するサイトの場合、不正送金やポイントの不正利用の被害を受ける
ブルートフォース攻撃の対策
それでは、どのようにしてブルートフォース攻撃の対策をすれば良いのでしょうか?以下にいくつかの対策を示しますので、サイトに合った対策や実施しやすい対策から始めましょう。今すぐ実施できる対策もありますので、ぜひ検討してみてください。
強固なパスワードを設定
パスワードの桁数が多ければ多いほど、組み合わせが増えるため、ブルートフォース攻撃への耐性が強くなります。もちろん連続した数値やアルファベットだけなどの簡単なものではいけません。8桁以上、可能であれば10桁や12桁のように長いパスワードを設定し、英字の大文字・小文字を分けたり、記号を含めるようにしてパスワードを強固にしましょう。
アカウント名の変更
システムによっては、予め「admin」などのアカウント名が設定されていることがあります。このようなアカウント名は推測されやすいため、アカウント名を変更できる場合は必ず変更するようにしましょう。また、これらのアカウント名を使用しないようにすることも大切です。アカウント名が固定で変更できない場合は、接続元IPアドレスによるアクセス制御を設定するなど、別の対策との組み合わせを検討してみてください。
ログインロックの活用
パスワードの間違いなど、指定回数以上のログイン失敗があった場合に、一定時間アカウントを停止したり、該当の接続元からのアクセスを遮断する機能です。WordPressなどのCMSでは、ブルートフォース攻撃の対策に有効なセキュリティプラグインが用意されています。これらのプラグインにログインロックの機能が備わっていることがありますので、有効に活用してください。
CAPTCHAによる画像認証
ページ上に表示された英数字やひらがなの画像を見て、同じ文字列を入力して認証する対策です。このとき、英数字やひらがなは歪んだかたちの画像で表示されています。画像で表示された文字列を入力するという操作を介さないとログインできないため、ブルートフォース攻撃のような機械的なアクセスに有効です。ログインロック同様に、WordPressなどのCMSではセキュリティプラグインに機能が備わっていることがあります。
二要素認証の活用
パスワード認証だけでサービスにログインしている場合、ブルートフォース攻撃によって認証を突破されてしまうと、その先は攻撃者の思うがままで手も足も出せなくなってしまいます。
近年、2要素認証の機能を提供しているWebサービスが増えています。予め、携帯電話番号やメールアドレスを登録しておき、認証コードを送るようにする機能です。ログイン時には認証コードの入力も必要になるため、仮にアカウントとパスワードによる認証が突破されたとしても、それだけではログインできなくなる(認証コードがないとログインできない)ため、不正ログイン対策にとても有効です。利用しているサービスで2要素認証の機能が提供されていないか確認し、提供されている場合は積極的に導入するようにしましょう。
Google reCAPTCHAの活用
Googleが無料で提供しているreCAPTCHAによる対策もあります。
執筆時点の最新であるreCAPTCHAのv3では、閲覧者とWebページとのやり取り(閲覧者のページ内での行動)に基づいてスコアを算出し、ボットなどからのアクセスでないかを判定します。reCAPTCHAのv2の場合は、指定された画像を選択する画像認証があります。Webサービスへのログイン時に「私はロボットではありません」にチェックを入れたことが一度はあるのではないでしょうか。このあとに指定された画像を選択するわけですが、判別が難しかったり、そもそも指定されている〇〇はどれ?みたいなことが時々あります。(経験のある方、多いのではないかと思います。)
reCAPTCHAのv3の場合、閲覧者がチェックを入れたり、画像選択による認証が不要になるため、よりスマートにブルートフォース対策を実装できるようになっています。
WordPressでは、ログインページやコメント欄にreCAPTCHAを設定するためのプラグインが提供されています。簡単にセキュリティ機能を実装することができますので、プラグインの活用も検討してみてください。
セキュリティ製品による高頻度アクセスの禁止
WAFなどのセキュリティ製品によっては、ページへのアクセス頻度をもとに高頻度のアクセスを遮断する機能を備えていることがあります。ログインページに対して大量のアクセスがあった場合にアクセスを禁止するなど、サイトへ接続させないという対応が可能ですが、閾値に達しないようにアクセスされる恐れもあるため、前述の画像認証などの対策と組み合わせると効果的です。
自分自身ですぐに実施できる対策のほか、機能の追加やサービス仕様の確認が必要な対策など、いくつかの例を紹介しました。全て実施しなくても良いので、できることから一つ一つ対策を検討していきましょう。
参考:
SiteGuard WP Plugin(当社提供 WordPress用セキュリティプラグイン)
Invisible reCaptcha for WordPress(外部サイト)
- カテゴリ:
- 用語