ブルートフォース攻撃とは?仕組み・被害例・対策をわかりやすく解説

Vulnerability

「パスワードは8文字あれば大丈夫だろう」「うちのシステムは狙われないだろう」――そう思っていたサーバーが、ある日突然ログインできなくなった。調べてみると、何万回ものログイン試行を受けてアカウントが乗っ取られていた。こうした被害を引き起こすのがブルートフォース攻撃(総当たり攻撃)です。

ブルートフォース攻撃は、セキュリティの世界では最も古典的でありながら、今なお被害が絶えない攻撃手法です。手口はシンプルですが、パスワードの強度やシステムの設定次第では驚くほど短時間で突破されてしまいます。

この記事では、ブルートフォース攻撃の仕組み・実際の被害パターン・具体的な防御策について、現場で使えるレベルで解説します。「名前は聞いたことがあるけれど、具体的に何をされるのか分からない」という方にも理解できるようまとめました。

ブルートフォース攻撃とは?仕組み・被害例・対策をわかりやすく解説

ブルートフォース攻撃とは?なぜ今でも脅威なのか

ブルートフォース攻撃(Brute Force Attack)とは、考えられるパスワードの組み合わせを片っ端から試して、正しいパスワードを見つけ出す攻撃手法です。「Brute Force(力任せ)」という名前の通り、技術的に巧妙な手口ではなく、純粋な物量で突破を試みます。

この攻撃が今でも脅威である理由は主に3つあります。

計算リソースの向上: 現在のPCやクラウド環境では、1秒間に数百万〜数十億回のパスワード試行が可能。短いパスワードなら数分で解析されてしまう
ツールが容易に入手できる: パスワードクラッキングツールはオープンソースで公開されており、専門知識がなくても攻撃が実行できてしまう
弱いパスワードが依然として多い: 「123456」「password」「admin」といった単純なパスワードを使い続けているユーザーやシステムが少なくない

ブルートフォース攻撃にはいくつかのバリエーションがあります。

攻撃手法 内容 特徴
単純ブルートフォース すべての文字の組み合わせを順に試す(aaa, aab, aac…) 時間はかかるが確実。短いパスワードには有効
辞書攻撃 よく使われるパスワードのリスト(辞書)を使って試す 単純な単語やフレーズに対して高速に突破できる
リバースブルートフォース 「123456」など1つのパスワードを多数のアカウントに試す アカウントロックを回避しやすい
クレデンシャルスタッフィング 他サービスから流出したID・パスワードの組み合わせを使い回す パスワードを使い回しているユーザーが被害に遭う

辞書攻撃やクレデンシャルスタッフィングは、純粋な「総当たり」ではありませんが、パスワードを機械的に試行するという点でブルートフォースの派生手法として分類されます。

攻撃の仕組み ― ブルートフォースはどのように実行されるのか

ブルートフォース攻撃のフローを、防御側の視点から理解しておきましょう。

1. 攻撃対象の選定

攻撃者はまず、ログインフォームが公開されているサービスを探します。SSH(リモート接続のプロトコル)、Webアプリケーションのログイン画面、FTP、データベースの接続ポートなどが狙われます。特にインターネットに公開されたSSHサーバーは、IPアドレスの自動スキャンによって24時間365日攻撃を受けています。

2. パスワードの試行

攻撃ツールを使って、対象のログインフォームに大量のパスワードを自動送信します。辞書攻撃の場合、過去のデータ漏洩で流出したパスワードリスト(数億件規模で出回っている)を使うため、よく使われるパスワードは数秒で見つかります。

パスワードの長さと解読時間の目安を見てみましょう。

パスワード条件 パターン数の目安 解読時間の目安(毎秒10億回試行時)
英小文字6文字 約3億通り 1秒未満
英小文字8文字 約2,090億通り 数分
英大小文字+数字8文字 約218兆通り 数日
英大小文字+数字+記号12文字 約4.7×10の23乗通り 数百万年以上

この表から分かるように、文字の種類を増やし、長さを伸ばすだけで解読難易度は指数関数的に上がります。

3. 認証の突破とその後

正しいパスワードが見つかると、攻撃者はそのアカウントにログインします。サーバーであれば管理者権限の奪取、Webサービスであれば個人情報の窃取や不正送金など、取得した権限を使ってさらなる攻撃に発展します。

ブルートフォース攻撃とは?仕組み・被害例・対策をわかりやすく解説 - 解説

具体的な防御手順

ブルートフォース攻撃の防御は「試行回数を制限する」「パスワードの強度を上げる」「認証の仕組みを強化する」の3本柱です。

1. アカウントロック・レート制限を導入する

最も基本的な防御策は、ログイン試行回数を制限することです。一定回数のログイン失敗後にアカウントをロックするか、一定時間内の試行回数を制限(レート制限)します。

Linuxサーバーの場合、fail2ban(不正アクセスを検知してIPアドレスをブロックするツール)が定番です。

# fail2banのSSH用設定例(/etc/fail2ban/jail.local) # [sshd] # enabled = true # maxretry = 5 # 5回失敗でBAN # bantime = 3600 # 1時間ブロック # findtime = 600 # 10分以内の失敗をカウント

Webアプリケーションでは、ログインAPIにレート制限を実装します。「同一IPから1分間に10回以上のログイン試行があったらブロック」のようなルールが効果的です。

2. パスワードポリシーを強化する

短く単純なパスワードは、どれだけ他の対策を施してもブルートフォースで突破されてしまいます。組織としてパスワードポリシーを定め、強制することが重要です。

最低12文字以上: 8文字では現在の計算能力に対して不十分。12文字以上を推奨
英大文字・小文字・数字・記号を混在: 使用する文字種が多いほど、パターン数が爆発的に増加する
辞書に載っている単語の禁止: 「password123」のような単語+数字の組み合わせは辞書攻撃で瞬時に破られる
過去に流出したパスワードのブロック: 流出パスワードリストと照合し、該当するパスワードの設定を拒否する

パスワードの定期的な変更強制については、NIST(米国国立標準技術研究所)のガイドラインでは「漏洩の兆候がない限り定期変更を強制すべきではない」とされています。頻繁な変更を強制すると、覚えやすい弱いパスワードに流れる傾向があるためです。

3. 多要素認証(MFA)を導入する

パスワードが万が一突破されても、多要素認証(MFA: Multi-Factor Authentication)があれば不正ログインを阻止できます。MFAは「知識(パスワード)」に加えて「所持(スマートフォン等)」や「生体(指紋等)」の要素を組み合わせる認証方式です。

TOTP(時間ベースのワンタイムパスワード): Google AuthenticatorやMicrosoft Authenticatorのような認証アプリを使用する方式。追加コストなしで導入しやすい
ハードウェアキー: YubiKeyなどの物理デバイスで認証する方式。フィッシング耐性が高い
SMS認証: 電話番号にコードを送信する方式。手軽だがSIMスワップ攻撃のリスクがあるため、可能であればTOTPを優先する

特にSSHサーバーへのブルートフォース対策としては、パスワード認証を無効化し、公開鍵認証のみに制限する方法が非常に効果的です。

# SSHのパスワード認証を無効化する設定(/etc/ssh/sshd_config) # PasswordAuthentication no # パスワード認証を無効化 # PubkeyAuthentication yes # 公開鍵認証を有効化 # PermitRootLogin no # rootでの直接ログインを禁止

4. ログイン試行の監視とアラートを設定する

攻撃を受けていることに気づけなければ、対処が遅れます。認証ログを監視し、異常な試行パターンを検知する体制を整えましょう。

# Linuxで認証失敗ログを確認するコマンド # journalctl -u sshd | grep "Failed password" # cat /var/log/auth.log | grep "authentication failure"

短時間に数百〜数千件の認証失敗が記録されていたら、ブルートフォース攻撃を受けている可能性が高いです。ログ監視ツールやSIEM(セキュリティ情報イベント管理)と組み合わせて、自動でアラートが飛ぶ仕組みを構築しておくと安心です。

中小企業でも今日からできること

「専任のセキュリティ担当がいない」「予算が限られている」という中小企業でも、以下の対策はすぐに実行できます。

対策 内容 コスト
SSHポート番号の変更 デフォルトの22番から別のポートに変更する。自動スキャンによる攻撃を大幅に減らせる 無料
fail2banの導入 Linuxサーバーにfail2banをインストールし、SSH・Webログインへのブルートフォースを自動ブロック 無料
管理画面のURL変更 WordPressの /wp-admin/ などデフォルトの管理URLを変更し、攻撃対象を絞りにくくする 無料
パスワードマネージャーの導入 Bitwarden等のパスワードマネージャーで、サービスごとに強力なランダムパスワードを生成・管理 無料〜少額
MFAの有効化 Google Workspace・Microsoft 365・クラウドサービスのMFAを全アカウントで有効化する 無料

特に効果が高いのは「SSH鍵認証への切り替え+パスワード認証の無効化」と「MFAの有効化」です。この2つだけで、ブルートフォース攻撃のリスクは劇的に下がります。

WordPressサイトの場合は、ログイン試行制限プラグイン(Limit Login Attempts Reloaded等)の導入も有効です。プラグインの設定だけで、一定回数の失敗後にIPをブロックする仕組みが作れます。

よくある誤解と注意点

【注意】「うちは小さい会社だから狙われない」は間違い

ブルートフォース攻撃の多くは無差別です。攻撃者はIPアドレスの範囲を自動スキャンし、開いているポートを見つけたら手当たり次第に攻撃します。会社の規模は関係ありません。むしろセキュリティ対策が手薄な中小企業のほうが、踏み台(他のシステムを攻撃するための中継地点)として狙われるケースがあります。

【注意】「アカウントロックだけで安全」ではない

アカウントロックはブルートフォースの基本対策ですが、リバースブルートフォース攻撃には効きません。リバースブルートフォースは「1つのパスワードを多数のアカウントに試す」手法のため、各アカウントの試行回数は1回で済んでしまいます。アカウントロックに加えて、IP単位のレート制限やCAPTCHA(人間であることを確認する仕組み)の導入が必要です。

【注意】「パスワードを複雑にすれば万全」とは限らない

どれだけ複雑なパスワードを設定しても、他のサービスで同じパスワードを使い回していれば、そのサービスからパスワードが流出した時点でクレデンシャルスタッフィングの被害に遭います。パスワードの強度と合わせて「使い回しをしない」ことが必須です。パスワードマネージャーの活用を強く推奨します。

ブルートフォース攻撃とは?仕組み・被害例・対策をわかりやすく解説 - まとめ

本記事のまとめ

ブルートフォース攻撃は、パスワードの組み合わせを力任せに試行する古典的かつ現役の攻撃手法です。単純ブルートフォース・辞書攻撃・リバースブルートフォース・クレデンシャルスタッフィングなど複数のバリエーションがあり、対策もそれぞれに対応する必要があります。

防御の基本は「試行回数の制限」「パスワード強度の確保」「多要素認証の導入」の3つです。これらを組み合わせることで、ブルートフォース攻撃に対する防御力を大きく高められます。

脅威 対策 優先度
大量のパスワード試行 fail2ban・レート制限・アカウントロック 最優先
弱いパスワードの突破 12文字以上・記号混在のパスワードポリシー 最優先
パスワード単体での認証突破 多要素認証(MFA)の導入 最優先
SSHへの無差別攻撃 公開鍵認証+パスワード認証の無効化
流出パスワードの悪用 パスワード使い回し禁止+パスワードマネージャー活用

fail2banの設定やSSHの公開鍵認証の導入手順については、姉妹サイトLinuxMaster.JPで詳しく解説しています。サーバーのセキュリティ強化にぜひ活用してください。

あなたのサーバー、ブルートフォース攻撃への備えは十分ですか?

ブルートフォース攻撃は古典的な手法ですが、対策が不十分なシステムは今この瞬間も狙われています。
正しいセキュリティ知識を体系的に身につけたい方へ、メルマガで実践的なセキュリティ対策ノウハウをお届けしています。

コメント

タイトルとURLをコピーしました