はじめに
Linuxサーバをインターネットに公開すると、想像以上に多くのSSHログイン試行が行われていることに気付きます。
本記事では、実際の auth.log をもとに攻撃の実態を確認し、対策として fail2ban を導入するまでの流れをまとめます。
検証環境
- OS:Ubuntu
- サーバ:さくらVPS
- SSHポート:2222番
auth.logを確認してみる
まずはログを確認します。
sudo tail -f /var/log/auth.log
すると以下のようなログが確認できました。
Failed password for invalid user admin from 188.166.xxx.xxx port 50704 ssh2
Failed password for invalid user test from 188.166.xxx.xxx port 50704 ssh2
ログから分かること
このログから以下が読み取れます。
- 存在しないユーザ名でログインを試行している
- 同一IPから連続してアクセスしている
- ブルートフォース攻撃(総当たり)の可能性が高い
攻撃元IPを調査
特定のIPを調査するには以下のコマンドを使用します。
sudo grep "188.166.xxx.xxx" /var/log/auth.log
これにより、そのIPからの試行回数や傾向を把握できます。
対策①:パスワード認証の無効化
まず最も重要な対策です。
sudo vim /etc/ssh/sshd_config
以下を設定:
PasswordAuthentication no
その後SSH再起動:
sudo systemctl restart ssh
対策②:fail2banの導入
不正アクセスを自動でブロックするために fail2ban を導入します。
インストール
sudo apt install fail2ban
ステータス確認
sudo fail2ban-client status sshd
実行結果例:
Currently banned: 1
Banned IP list: 188.166.xxx.xxx
fail2banの効果
fail2banを導入することで:
- 一定回数以上の失敗でIPを自動BAN
- 手動対応不要
- サーバの安全性向上
まとめ
今回の検証で、公開サーバには常に攻撃が行われていることが分かりました。
そのため以下の対策は必須です:
- パスワード認証の無効化
- fail2banの導入
- ログの定期的な確認
所感
実際にログを確認することで、教科書だけでは分からない「現場のリアル」を感じることができました。
今後は、侵入後のログ分析やフォレンジックにも取り組んでいきたいと考えています。
