fail2ban による誤BAN が原因で SSH / HTTP 接続できないときの解除方法

  • URLをコピーしました!
目次

概要

Linuxサーバーで突然 SSH や HTTP にアクセスできなくなる場合、fail2ban による誤BAN(誤検出) が原因のことがあります。
これは、特定IPアドレスからのアクセスを「不正ログイン攻撃」と誤判定し、iptables / firewalld により通信を遮断する仕組みです。

特に、

  • SSHで何度かパスワードを間違えた
  • nginx / Apache に対して短時間で多くのリクエストを送った
    場合などに発生します。

主な原因と仕組み

fail2banの動作概要

fail2banはログ(例:/var/log/secure, /var/log/nginx/error.log)を監視し、一定回数の失敗を検出すると IP を一時的にBAN(遮断)します。
設定ファイル:

/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf

原因別の確認と解除方法

原因① fail2ban が IP を BAN している

状況

SSH や HTTP に接続できず、サーバー側から pingcurl localhost は通るが、外部PC からの接続が拒否される場合。

確認コマンド

sudo fail2ban-client status

正常例

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

異常例(SSHがブロックされている場合)

sudo fail2ban-client status sshd

出力例:

Status for the jail: sshd
|- Filter
|  `- Currently failed: 0
|  `- Total failed: 5
`- Actions
   `- Banned IP list: 192.168.1.10

Banned IP list に自分の接続元IPがある場合、fail2banによる遮断が確定です。

対処方法(IPの解除)

sudo fail2ban-client set sshd unbanip 192.168.1.10

解除確認:

sudo fail2ban-client status sshd
# Banned IP list: (空)になっていればOK

SSHに入れない場合は「コンソール」または「クラウドのシリアルコンソール」からログインして上記コマンドを実行します。

原因② fail2banサービスが誤設定で過剰検出している

状況

短時間で大量のアクセスがあるサイトやAPIサーバーで誤BANが頻発する。

確認コマンド

sudo cat /etc/fail2ban/jail.d/sshd.conf

代表的な設定項目

設定項目説明推奨値
bantimeBAN される時間(秒)600(10分)など短めに
findtime検出時間範囲300(5分)程度
maxretry失敗回数の閾値5〜10回程度

対処方法

設定ファイルを調整後、fail2ban を再起動します。

sudo vi /etc/fail2ban/jail.local
# 例:
[sshd]
enabled = true
bantime = 600
findtime = 300
maxretry = 5
sudo systemctl restart fail2ban

原因③ fail2ban のルールが firewall に残っている

状況

fail2ban 停止後も通信が遮断され続ける。

確認コマンド(firewalld使用時)

sudo firewall-cmd --list-all

異常例

rich rules に fail2ban が追加したルールが残っている。

対処方法

sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.10" reject'
sudo firewall-cmd --reload

iptables使用環境では:

sudo iptables -L -n --line-numbers | grep DROP
sudo iptables -D INPUT <番号>

原因④ 自動的に再BANされてしまう

状況

手動で unban しても、すぐ再び BAN される。

対処方法

  1. 自分のIPをホワイトリスト登録
    /etc/fail2ban/jail.local に以下を追加: ignoreip = 127.0.0.1/8 192.168.1.10
  2. fail2ban再起動: sudo systemctl restart fail2ban

これで自分のIPが除外され、再BANされなくなります。

トラブル対応表

現象主な原因対処コマンド
SSH / HTTP に接続できないfail2ban により IP が BANfail2ban-client status / unbanip
何度も再BANされる自分のIPが除外設定されていない/etc/fail2ban/jail.localignoreip 追加
BAN解除後も通信不可firewall にルールが残存firewall-cmd --remove-rich-rule または iptables -D
サイト全体が頻繁に遮断されるfail2ban の検知条件が厳しすぎるbantimemaxretry の緩和
SSH接続が全くできないクラウド上で自分をBANシリアルコンソールからログインして解除

まとめ

fail2ban はサーバー保護に非常に有効ですが、設定が厳しすぎると正規ユーザーも誤ってブロックしてしまいます。
誤BANが疑われるときは次の手順を順に確認しましょう。

  1. fail2ban-client status で BAN 状況確認
  2. unbanip で該当IPを解除
  3. jail.local で閾値を調整
  4. ignoreip で自分のIPを除外
目次