SSH総当たり攻撃対策|ブルートフォース攻撃からサーバを守る実践的な方法

SSH総当たり攻撃対策

SSH総当たり攻撃対策を理解して安全なサーバ運用を実現しよう

SSHはLinuxサーバ管理に欠かせないサービスですが、その一方でインターネット上から常に攻撃対象となっています。

特に多いのが総当たり攻撃(ブルートフォース攻撃)です。

SSHの22番ポートを公開しているだけで、世界中のボットからログイン試行を受けることは珍しくありません。

適切な対策を行わない場合、パスワード漏洩や不正ログインにつながる可能性があります。

本記事ではSSH総当たり攻撃の仕組みと、実務で利用される代表的な防御策について解説します。

SSH総当たり攻撃とは

総当たり攻撃(Brute Force Attack)とは、ユーザー名やパスワードを何度も試してログインを試みる攻撃です。

攻撃ツールが自動的に認証を繰り返し、正しい組み合わせを探します。

SSHは広く利用されているため、常に攻撃対象となっています。

よく狙われるアカウント

攻撃者はよく利用されるアカウント名を試します。

  • root
  • admin
  • administrator
  • user
  • test

特にrootアカウントは最も狙われやすい存在です。

攻撃の実例

ログを確認すると大量の認証失敗が記録されていることがあります。

Failed password for root from 203.0.113.10
Failed password for root from 203.0.113.10
Failed password for root from 203.0.113.10

このようなログが大量に出力されていれば攻撃を受けている可能性があります。

なぜSSHが狙われるのか

SSHはサーバ管理の入り口だからです。

SSHへ侵入されると以下の被害につながります。

  • サーバ乗っ取り
  • 情報漏洩
  • ランサムウェア感染
  • 踏み台化
  • マルウェア設置

そのため攻撃者はSSHを重点的に狙います。

対策1 公開鍵認証を利用する

最も効果的な対策です。

パスワード認証ではなく公開鍵認証を利用します。

PubkeyAuthentication yes

公開鍵認証では総当たり攻撃がほぼ意味を持たなくなります。

対策2 パスワード認証を無効化する

公開鍵認証へ移行したらパスワード認証を無効化します。

PasswordAuthentication no

攻撃者はパスワード認証を試せなくなります。

対策3 rootログインを禁止する

rootアカウントは攻撃者の第一候補です。

以下を設定します。

PermitRootLogin no

管理用ユーザーからsudoを利用する運用が推奨されます。

対策4 MaxAuthTriesを設定する

認証失敗回数を制限できます。

MaxAuthTries 3

一定回数失敗すると接続が切断されます。

対策5 接続元を制限する

許可されたIPアドレスのみSSH接続を許可します。

firewalldの例です。

firewall-cmd --add-rich-rule='
rule family="ipv4"
source address="203.0.113.10"
service name="ssh"
accept'

不要なアクセスを大幅に削減できます。

対策6 Fail2banを利用する

Fail2banは攻撃元IPを自動遮断するツールです。

認証失敗回数を監視し、一定回数を超えるとブロックします。

次の記事で詳しく解説します。

対策7 SSHポート変更

22番以外へ変更する方法です。


Port 2222

攻撃回数を減らす効果はあります。

ただし根本的なセキュリティ対策ではありません。

対策8 多要素認証(MFA)

認証を二重化します。

例えば以下です。

  • 公開鍵認証
  • ワンタイムパスワード

万一秘密鍵が漏洩しても被害を抑えられます。

ログを確認する方法

認証失敗ログを確認します。

# journalctl -u sshd

または
# tail -f /var/log/secure

環境によって異なります。

攻撃状況を集計する

失敗回数を確認する例です。

# grep "Failed password" /var/log/secure

特定IPの攻撃状況を把握できます。

攻撃元IPを確認する

# grep "Failed password" /var/log/secure \
| awk '{print $(NF-3)}' \
| sort | uniq -c | sort -nr

攻撃元のランキングを確認できます。

クラウド環境での対策

AWSやAzureではセキュリティグループによる制限が有効です。

SSH接続元を限定しましょう。

公開範囲を最小限にすることが重要です。

VPN経由運用

さらに安全な方法です。

構成例です。


管理PC
 ↓
VPN
 ↓
SSH
 ↓
サーバ

インターネットへSSHを公開しません。

踏み台サーバの利用

企業環境では踏み台サーバを利用します。


管理PC
 ↓
Bastion Host
 ↓
内部サーバ

管理経路を一元化できます。

よくある誤解

SSHポート変更だけで安全になる

これは誤解です。

ポートスキャンで発見される可能性があります。

公開鍵認証などと組み合わせる必要があります。

公開鍵認証なら何もしなくてよい

公開鍵認証だけでも十分強力ですが、多層防御が重要です。

rootログイン禁止やFail2banも併用しましょう。

実務で推奨される構成

一般的な企業環境では以下が推奨されます。

  • 公開鍵認証
  • パスワード認証無効
  • rootログイン禁止
  • Fail2ban導入
  • 接続元制限
  • MFA導入

これらを組み合わせることで高い安全性を確保できます。

まとめ

SSH総当たり攻撃は非常に一般的な攻撃であり、インターネットへ公開されたSSHサーバは常に攻撃対象となっています。

公開鍵認証、パスワード認証無効化、rootログイン禁止、Fail2banなどを組み合わせることで、不正アクセスリスクを大幅に低減できます。

SSHはサーバ管理の入口であるため、複数の対策を組み合わせた多層防御を意識して安全な運用を行いましょう。