Fail2Banを効果的に運用する:実体験に基づいたセキュリティ最適化ガイド

1. はじめに

Linuxサーバーを運用していると、SSHポートを開いているだけで驚くほど多くのログイン試行が発生することに気づくでしょう。これを防ぐために多くの人が利用しているツールがFail2Banです。しかし、単にインストールして設定するだけでは十分とは言えません。長期間運用していると、BANリストが数百、数千件と蓄積され、かえってサーバー性能に悪影響を及ぼすことがあります。

本記事では、筆者の実際のサーバー運用経験をもとに、Fail2Banをより効果的かつ効率的に活用する方法を紹介します。

Fail2Banのインストール方法や基本設定について知りたい方は、以下の記事もぜひご覧ください。 Linuxサーバーを守る頼れる番人、Fail2Ban


2. 実体験:3週間で1,113のIPがBANされた

筆者がテスト用に運用しているLinuxサーバーにfail2banを導入してから約3週間後、以下のコマンドを実行してみました:

sudo fail2ban-client status sshd

その結果は以下の通りでした:

Currently failed: 1
Total failed: 5330
Currently banned: 1110
Total banned: 1113

わずか3週間で1,113のIPアドレスが遮断され、そのうち1,110件がまだBANされたままでした。これはbantime = -1と設定しており、永久BANを適用していたからです。

最初は「一度でも攻撃を試みたら容赦なし!」という気持ちでこの設定にしましたが、iptablesに数千のIPが蓄積されるにつれ、システムリソースへの負担と管理の手間が懸念されるようになりました。

その結果、持続可能で戦略的なFail2Banの運用方法を考えるようになりました。


Tuxがrecidive jailを見張っているイメージ

3. Fail2Ban設定改善の戦略

✅ bantimeを柔軟に調整する

  • 永久BANよりも、時間制限付きBANのほうが現実的です。
  • 例:
  • bantime = 86400        # 1日間のBAN
    findtime = 600         # 10分以内
    maxretry = 3           # 3回失敗で発動

Fail2Banのブロック処理フロー図

✅ recidive jailの活用

🔎 recidive jailとは?

fail2banが管理するfail2ban.logをモニタリングし、複数のjailで繰り返し遮断されたIPに対して長期間の再BANを行う高度な仕組みです。簡単に言えば、常習犯に対して厳罰を与える「再犯監視システム」です。

通常のsshdnginxftpなどのjailは短期間のBANを行いますが、recidive jailは過去に複数回遮断された「常習IP」だけを抽出して、より長く遮断します。

  • 繰り返しBANされるIPだけを長期遮断
  • 一時的な攻撃者は放置、再試行する執拗なIPを確実にブロック
  • 設定例:
  • [recidive]
    enabled = true
    logpath = /var/log/fail2ban.log
    bantime = 604800        # 1週間
    findtime = 86400
    maxretry = 5

✅ ログ管理を自動化する

  • /var/log/fail2ban.logが肥大化する前にlogrotateで自動整理
  • cronやsystemd timerでfail2ban-client statusの結果をメールで通知

4. スクリプト例

#!/bin/bash
fail2ban-client status sshd > /tmp/sshd-status.log
echo "Current Ban Count: $(grep 'Currently banned' /tmp/sshd-status.log)" | mail -s "Fail2Ban SSHD Status" your@email.com

5. まとめ:Fail2Banは武器ではなく「道具」

Fail2Banは無差別攻撃を防ぐための非常に有効なツールですが、過剰な運用は本来の目的を超えてサーバーに負担を与えることもあります。

現実的なポリシー設定と自動化の組み合わせで、Fail2Banは頼れるセキュリティパートナーになります。


次回予告

Fail2Banのログファイル/var/log/fail2ban.logの肥大化を防ぐlogrotateの設定方法について解説予定です。ご興味のある方はぜひフォローを!