はじめに
今回は、自分のVPS環境に対して実際に行われているSSH攻撃をログから分析し、fail2banとrecidiveによる防御の仕組みを理解しました。
単なる設定だけでなく、「実際にどう動いているか」を確認できたので、その内容をまとめます。
環境
- OS:Ubuntu(さくらVPS)
- SSHポート:2222(22から変更済み)
- 認証方式:公開鍵認証(パスワード無効)
- セキュリティ:
- UFW
- fail2ban
- recidive
攻撃ログの確認
まずはSSHログを確認します。
sudo grep sshd /var/log/auth.log | tail
実際のログ
Connection closed by authenticating user root 188.166.189.101 port 47150 [preauth]
ログの読み取り
| 項目 | 意味 |
|---|---|
| root | rootユーザーでログイン試行 |
| IPアドレス | 攻撃元 |
| port | 接続元ポート |
| preauth | 認証前に切断 |
ポイント
preauth = 認証処理に入る前に接続終了
👉 鍵認証によりログイン処理が成立していない
攻撃回数の可視化
特定IPの攻撃回数を確認します。
sudo grep "188.166.189.101" /var/log/auth.log | wc -l
結果
1576
分析
- 同一IPから1500回以上のアクセス
- 手動ではなく自動ツール(ボット)による攻撃
fail2banの状態確認
sudo fail2ban-client status sshd
結果
Total failed: 3063
Currently banned: 1
Total banned: 111
意味
- 3000回以上の攻撃を検知
- 111個のIPを自動BAN
- 現在も攻撃IPをブロック中
fail2banの動作
① 攻撃発生
② auth.logに記録
③ fail2banが検知
④ 条件一致でBAN
⑤ iptablesで通信遮断
fail2banログの確認
sudo tail -f /var/log/fail2ban.log
実際のログ
Found 47.253.135.170
already banned
Unban 47.253.135.170
読み取れること
- 攻撃を検知(Found)
- すでにBAN済み(already banned)
- 一定時間後に解除(Unban)
recidive(再犯対策)
状態確認
sudo fail2ban-client status recidive
結果
Currently banned: 2
Total banned: 8
recidiveの役割
何度もBANされるIPを長期間ブロックする
動作の流れ
① 攻撃
② sshd jailで短期BAN
③ 解除後に再攻撃
④ recidiveが検知
⑤ 長期BAN
防御の階層構造
攻撃
↓
fail2ban(短期BAN)
↓
再攻撃
↓
recidive(長期BAN)
セキュリティ評価
攻撃回数:3000回以上
侵入成功:0
👉 防御成功
学び
今回の学習で重要だと感じたポイントは以下です。
- 攻撃は常に発生している
- 防御によって侵入は防げる
- ログを見ることで状況を正確に把握できる
- fail2banは「検知+遮断」を行うツール
- recidiveで継続的な攻撃にも対応できる
まとめ
攻撃は止められないが、侵入は防げる
この一言がセキュリティの本質だと感じました。
おわりに
今回のように「実際の攻撃ログを元に学ぶ」ことで、理解が一気に深まりました。
今後はさらに、
- 不要サービスの停止
- ログから侵入検知
- ネットワークの理解
などを進めていきたいと思います。

