fail2banが動いているか不安?動作検証テストと誤BANされたときの緊急救済コマンド

この記事は約6分で読めます。
この記事が役立ったらブックマーク! あとで読み返したり、環境構築時のリファレンスに活用できます
B! はてなブックマークに追加

ブルートフォース攻撃や不正なパスワード総当たりからサーバーを守る定番ツール「fail2ban」。

Ubuntuサーバーをセットアップし、systemctl status fail2ban で active (running) と表示されていても、「本当に悪意あるアクセスを検知してブロック(DROP/REJECT)してくれているのか?」と疑問に思うことがあります。また逆に、設定作業やパスワード入力を誤り、作業端末のローカルIPが自身でブロックされてサーバーから締め出される「自爆事故」 も実務でよく起こります。

本記事では、fail2banが正常に稼働しているかを安全に検証するテスト手法と、誤ってアクセス禁止(BAN)されたIPを即座に解除・救済するコマンドライン操作を解説します。

1. 稼働ステータスとJail(監視ルール)の確認

まずはデーモンが正しくルールを読み込み、どのプロトコル(SSH、Nginx、WordPress等)を監視しているかを確認します。

全体ステータスの確認

Bash
sudo fail2ban-client status

出力例:

Plaintext
Status
|- Number of jail:      2
`- Jail list:   sshd, nginx-http-auth

Jail list に監視対象のサービス名(通常は sshd など)が含まれていれば、検知ルールが読み込まれています。

特定Jailの詳細(現在BANされているIP一覧)を見る

Bash
sudo fail2ban-client status sshd

出力例:

Plaintext
Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     42
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 3
   |- Total banned:     15
   `- Banned IP list:   198.51.100.24 203.0.113.88 192.0.2.14
  • Currently banned: 現在ブロック中のIP数
  • Banned IP list: 具体的に拒絶されているIPアドレス

2. fail2banの動作を安全にテストする2つの方法

本当に攻撃を検知してファイアウォール(iptablesやnftables)にルールを追加しているか、以下の安全な方法でテストします。

方法A:手動でテスト用IPをBANさせてみる(最も安全・確実)

実環境へのログインを意図的に失敗させなくても、fail2ban-client を使ってダミーのIP(例: 192.0.2.100)を手動BAN/UNBANできます。

Bash
# 手動でBANを適用
sudo fail2ban-client set sshd banip 192.0.2.100

# iptablesにルールが反映されたか確認
sudo iptables -L -n -v | grep 192.0.2.100
# または nftables 環境の場合
sudo nft list ruleset | grep 192.0.2.100

# テスト後に解除
sudo fail2ban-client set sshd unbanip 192.0.2.100

ファイアウォール側に f2b-sshd や REJECT / DROP のターゲットとしてルールが追加されていれば、バックエンドの遮断機構は完全に機能しています。

方法B:フィルターの正規表現テスト(fail2ban-regex)

ログのフォーマット変更などにより、正規表現がヒットしなくなっていないかを実ログを突き合わせて検証します。

Bash
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
  • 画面末尾の Failures に検知件数がカウントされていれば、ログから不正ログインの兆候を正しく抽出できています。

3. 自爆した!作業IPがBANされたときの緊急救済コマンド

作業中のミスやスクリプトの誤作動で、作業端末の固定IPやオフィスIPがBANされてしまった場合の解除手順です。

基本:コマンド1発でBANを解除する

別のネットワーク(スマホのテザリング等)やVPSコンソールからログインし、以下のコマンドを実行します。

Bash
sudo fail2ban-client set sshd unbanip <解除したいIPアドレス>

実行後、1(または対象IPアドレス)が返ってくれば即座にファイアウォールの制限が解除され、再ログインが可能になります。

すべてのJailから特定IPを一括解除したい場合

複数のJail(SSHやNginxなど)で同時に弾かれてしまった場合は、以下で一括解除できます。

Bash
sudo fail2ban-client unban <解除したいIPアドレス>

4. 自爆を二度と起こさないためのホワイトリスト(ignoreip)設定

運用端末のIPがあらかじめ固定されている場合、または同一LAN内のアクセス(192.168.1.0/24 など)は、誤検知による遮断を防ぐためにホワイトリスト(ignoreip)へ明示的に登録しておくのが鉄則です。

設定ファイル(/etc/fail2ban/jail.local)を編集します。

INI
[DEFAULT]
# スペースまたはカンマ区切りで除外IP・CIDRを指定
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.10

設定を反映します。

Bash
sudo fail2ban-client reload

まとめ

セキュリティソフトは「入れたまま放置」になりがちですが、正常に機能しているかの定期点検と、緊急時の復旧手順を把握しておくことが安定運用に直結します。

  • fail2ban-client status <jail名> でブロック状況を把握する
  • set <jail名> unbanip <IP> を覚えておけば自爆時も即座に救済可能
  • 作業拠点の固定IPや社内LANはあらかじめ ignoreip に追加しておく

適切なホワイトリストと監視ルールのテストを徹底し、セキュアでトラブルのないサーバー環境を維持しましょう。

コメント

タイトルとURLをコピーしました