FreeBSD14 + Nginx + fail2banで不正なアクセスを自動ブロック
ウェブサーバーへの攻撃が増えてきたので対策したときの覚書。 環境: FreeBSD 14.3-RELEASE-p2, nginx 1.28.0 Gemini 2.5 Proと対話しながら作業している。 1. fail2banとは? Fail2banは、サーバーのログファイルを監視し、特定のパターン(ブルートフォース攻撃、スキャン活動など)を検知すると、その攻撃元のIPアドレスを自動的にファイアウォールでブロックする、侵入防止ソフトウェア。 動作の仕組み 監視 (Monitor): Nginxのアクセスログやエラーログ、SSHの認証ログなどをリアルタイムで監視。 検知 (Detect): フィルタと呼ばれる正規表現ルールに基づき、ログの中から「存在しないページへの連続アクセス」といった不正な兆候を探します。 ブロック (Block): 不正な兆候が一定回数(例: 5分以内に3回)見つかると、アクションを実行して、OSのファイアウォール(FreeBSDの場合はpf)にそのIPアドレスを一時的にブロックするよう命令。 解除 (Unban): 設定された時間が経過すると(例: 1時間後)、自動的にブロックを解除。 fail2banとSSHGuardの違い 項目 fail2ban SSHGuard 主な用途 ログを監視し、不正アクセスをiptables/pf等でブロック SSHや各種サービスのログを監視し、攻撃元IPをブロック サービス対応範囲 汎用的(Nginx, Postfix, Dovecot, SSH など多数のfilter用意) 主にSSH向け(追加対応も可能だが限定的) 設定の柔軟性 高い(正規表現でログ解析ルールをカスタマイズ可) 比較的シンプル、細かいカスタマイズは難しい 導入・設定難易度 やや高い(filter/jail設定が必要) 低い(導入して有効化するだけで基本動作) FreeBSDでの利用実績 ports/packages で提供、Nginx対策にもよく使われる FreeBSD標準での利用実績が多く軽量 リソース消費 やや重い(Python製) 軽量(Cで実装) 特徴 多機能でNginxなど幅広いサービスを守れる シンプルで軽量、主にSSH向けに効果的 2.fail2banのインストールと設定 pkgでインストール。 # pkg s...