前回のSSH編では、
一般ユーザーでの運用、鍵認証への移行、
rootログインやパスワードログインの禁止といった
SSHの基本的なセキュリティ設定を実践しました。
今回は、
「VPSのセキュリティを段階的に高めていく」シリーズの一部として、
fail2banを導入し、不正なアクセス試行を自動で遮断するところまでを整理します。
前回までに、
- ufwで不要なポートを閉じる
- SSHで正規のログイン方法を1つに絞る
という、静的なセキュリティ設計を行いました。
今回はその続きとして、
それでも発生する不正な試行にどう対応するかを扱います。
fail2banは何をするものか
fail2banは、
- サーバーのログを監視し
- 一定回数以上の失敗を検知したIPアドレスを
- 一時的にBAN(遮断)する
という仕組みです。
重要なのは、fail2banは「攻撃を見つけて防ぐ」ツールではなく、異常な振る舞いを自動的に止める仕組みだという点です。
なぜufwとSSHの次にfail2banなのか
SSHを鍵認証にしても、rootログインやパスワードログインを禁止しても、SSHへのログイン試行(攻撃)そのものは止まりません。
実際には、
- 存在しないユーザー名
- 無差別なログイン試行
といったアクセスは、設定に関係なく継続的に発生します。
fail2banは、そうした「おかしな試行」を自動で排除する役割を担います。
fail2banとufwの関係
fail2banは、「このIPをBANする」という判断を行います。
実際に通信を遮断するのは、
- ufw
- 内部的にはiptables
です。
つまり、
- ufw:通信を通す/通さない仕組み
- fail2ban:BANする相手を判断する仕組み
という役割分担になります。
ufw編で入口を整理していることが、fail2banを使う前提条件になっています。
fail2banのインストール
Ubuntu Server 24.04では、aptでfail2banをインストールできます。
sudo apt update
sudo apt install fail2ban
インストール後、サービスが起動しているか確認します。
sudo systemctl status fail2ban
active (running) と表示されていれば問題ありません。
最低限、有効にするjail
fail2banには多くのjailがありますが、基本編では欲張りません。
sshd jail
まず有効にしたいのが、sshd です。
- SSHへの不正ログイン試行を監視
- 一定回数失敗したIPをBAN
これだけでも、不正アクセスに対する効果は十分にあります。
Web公開している場合のjail
Webサーバーを公開している場合は、
http-auth- nginx / Apache 関連のjail
を検討できます。
ただし、本記事では 詳細なWeb系jailの設計は扱いません。
まずは、SSHを確実に守ることを優先します。
jail.localを使う理由
fail2banの設定は、
jail.confを直接編集せずjail.localに記述する
のが基本です。
理由は、
- アップデートで上書きされない
- 変更点を把握しやすい
からです。
本シリーズでは、カスタマイズはすべて jail.local に集約します。
jail.local の作成
fail2banの設定を行う前に、カスタマイズ用の設定ファイルであるjail.local を作成します。
fail2banでは、標準設定が書かれた jail.conf を直接編集せず、自分用の設定は jail.local に記述するのが基本です。
まだ jail.local が存在しない場合は、次のコマンドで新規作成します。
sudo nano /etc/fail2ban/jail.local
この操作で、jail.local が作成されます。
以降の記事では、このファイルに設定を追記・調整していきます。
基本的な設定項目の考え方
fail2banには、次のような設定項目があります。
maxretryfindtimebantime
ここでは、数値の細かい設計には踏み込みません。
- 何回失敗したら
- どれくらいの時間で
- どれくらいBANするか
という 考え方だけを押さえておきます。
具体的な数値設計や再犯対策は、次回の記事で扱います。
fail2banが動いているか確認する
導入後は、実際に動いているかを必ず確認します。
fail2ban全体の状態
sudo fail2ban-client status
sshd jailの状態
sudo fail2ban-client status sshd
Status: active と表示され、BANされたIPが確認できれば、fail2banは正しく動作しています。
ここまででできること・できないこと
できること
- 不正ログイン試行の自動BAN
- 明らかな攻撃の抑止
- VPSへの負荷やログの軽減
できないこと
- 完全な防御
- 巧妙な攻撃の検知
- 再犯者への長期対応
fail2ban基本編は、あくまで第一段階です。
次回予告:再犯対策と運用へ
fail2banを導入したことで、不正な試行は自動的にBANされるようになりました。
しかし、
- 同じIPが何度も現れる
- 時間を空けて再度攻撃してくる
といったケースも見えてきます。
次回は、recidiveを使った再犯対策と、運用時の考え方について整理します。



