fail2ban-setup について
fail2ban-setupは、他のjailや信頼済みアドレスの設定を保ちながら、対象のログサービスにFail2banを設定するスキルです。事前調査、設定、検証、遮断テスト、復旧の手順を扱います。
主な機能
- 01ログ・フィルター・ファイアウォール経路の調査
- 02既存のjailと許可リストの維持
- 03SSH jailの確認と適用
- 04有効化前の設定検証
- 05遮断テストと状態復旧
活用シーン
- 01サーバーでのSSH jailの設定
- 02journaldのみのSSHログ対応の確認
- 03管理者を締め出さずに遮断をテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mikr13/ secure-server-setup-skills --skill fail2ban-setupインストール後、Claude Code で/fail2ban-setupを入力して読み込まれたか確認します。
同梱ファイルreferences/fail2ban-filters.mdscripts/setup-fail2ban.sh
詳細
Fail2ban のセットアップ
選択したログ記録サービスを保護し、無関係な jail や信頼済みアドレスのポリシーは置き換えないでください。プロセスが実行中でも、jail が無効または効果のない状態であることがあります。
確認
- インストール済みの Fail2ban/フィルターのバージョン、実際の SSH リスナー、有効な jail、ローカルのオーバーライド、既存の
ignoreip値を特定します。ban をテストする前に、管理者アクセスを確認してください。 - SSH イベントが
/var/log/auth.log、/var/log/secure、または journald のみに記録されるかを確認します。journald のみを使用するシステムでは、python3-systemdと、インストール済み SSH フィルターのjournalmatch対応を確認してください。 - ファイアウォールの ban アクションとネットワーク経路を特定します。該当する場合は、リバースプロキシやコンテナーも含めて確認してください。jail は、共有プロキシや管理者のアドレスではなく、実際に問題を起こしているクライアントを特定する必要があります。
バックエンド、フィルターモード、カスタムアプリケーションフィルター、または管理されたテストを選ぶ際は、references/fail2ban-filters.md をお読みください。
設定
Fail2ban が未インストールの場合は、許可された範囲内で必要なバックエンドパッケージとともにインストールします。scripts/setup-fail2ban.sh の実行内容を確認します。
sudo bash scripts/setup-fail2ban.sh --dry-run
ソケットアクティベーションやカスタムポートのために検出が曖昧な場合は、実際のすべてのリスナーに対して --ssh-port を指定します。許可された SSH jail の変更と有効化を行うには、次のようにします。
sudo bash scripts/setup-fail2ban.sh --apply --activate
このヘルパーが書き込むのは jail.d/99-secure-server-sshd.local のみです。ファイルポーリングまたは systemd バックエンドを選択し、既存の ignoreip と他の jail を保持したうえで、有効化の前に設定を検証します。インストール済みの sshd フィルターを使用し、10 分間に 5 回失敗した場合に 1 時間 ban します。これらは調整可能なローカルポリシーであり、Fail2ban 全般に適用される既定値ではありません。--activate を指定しない場合、実行中のサービスは変更されません。
実際のログソース、フィルター、ban アクションが確認されていない限り、recidive やアプリケーション用 jail を有効にしないでください。厳格な SSH 動作は、インストール済みの sshd フィルターモードであり、sshd-aggressive.conf というファイルがあると想定するものではありません。
このヘルパーは、統合後の ban アクションのポートと TCP 対応範囲を検証します。インストール済みの iptables/nftables の全ポート対象アクションには、明示的な --allow-allports の承認が必要です。検証できないカスタムアクションには、手動の手順が必要です。アクティブなサービスの再読み込みと復旧では sshd のみを選択します。非アクティブなサービスを起動すると、有効な jail がすべて読み込まれるため、それに応じた確認が必要です。
検証と復旧
- 有効化後に
sudo fail2ban-client -tを実行し、sudo fail2ban-client status sshdを確認します。 - 選択したログ/ジャーナルに実際のイベントが含まれていること、また jail のフィルターが認証失敗に一致し、代表的な正当なトラフィックを除外することを確認します。
- 管理されたセカンダリクライアントから、ban によって意図したネットワーク経路が遮断されることを確認してから、ban を解除します。唯一の管理用クライアントを意図的に ban しないでください。
- 以前から必要だったすべての jail と許可リストが、引き続き有効であることを確認します。ban 通知とログ保持が既存のポリシーに沿っていることも確認してください。
- 検証または有効化に失敗した場合、このヘルパーは以前の管理対象 jail を復元し、以前のサービス状態への復旧を試みます。後でロールバックするには、表示されたディレクトリを使用して、管理対象のオーバーライドを復元または削除し、検証してから再読み込みします。
サービスの実行状態、有効な jail、フィルターの一致、実際の適用状況の証拠は、それぞれ分けて報告してください。