fail2banのBAN一覧を一発表示する方法|bannedコマンド作成

水冷パソコンの水温 Security

fail2banを運用していると、

👉 「今どのIPがBANされているか全部まとめて見たい」

と思うことはありませんか?

本記事では、すべてのjailのBAN IPを一括表示するコマンドを作成します。


■ 結論(コピペ)

alias banned='for jail in $(fail2ban-client status | grep "Jail list" | sed "s/.*://;s/,//g"); do echo "=== $jail ==="; fail2ban-client status $jail | grep "Banned IP list"; done'

👉 これで

banned

と入力するだけで一覧表示できます


■ 表示例

=== sshd ===
   Banned IP list: 1.2.3.4 5.6.7.8

=== postfix-sasl ===
   Banned IP list: 9.9.9.9

■ 永続化する方法

一時的なaliasではなく、常に使えるようにします。


■ rootの場合

vi /root/.bashrc

■ 一般ユーザー

vi ~/.bashrc

■ 末尾に追加

alias banned='for jail in $(fail2ban-client status | grep "Jail list" | sed "s/.*://;s/,//g"); do echo "=== $jail ==="; fail2ban-client status $jail | grep "Banned IP list"; done'

■ 反映

source ~/.bashrc

👉 これで常に使えます


■ 仕組みの解説


■ jail一覧取得

fail2ban-client status

👉 ここから

Jail list: sshd, postfix-sasl, dovecot

を取得


■ sedで整形

sed "s/.*://;s/,//g"

👉 jail名だけ取り出す


■ ループ処理

for jail in ...

👉 各jailを順番に処理


■ BAN一覧表示

fail2ban-client status $jail | grep "Banned IP list"

👉 BANされているIPを表示


■ よくあるトラブル


● bannedコマンドが使えない

👉 source忘れ


● rootで使えない

👉 rootの.bashrcにも追加


● jailが表示されない

👉 fail2banが起動していない


systemctl status fail2ban

■ 応用(おすすめ)

👉 BAN数だけ知りたい場合

fail2ban-client status sshd

👉 手動BAN

fail2ban-client set sshd banip 1.2.3.4

👉 解除

fail2ban-client set sshd unbanip 1.2.3.4

■ このコマンドのメリット

・全jailを一発確認
・ログ確認が不要
・運用効率UP


■ 本環境

・Ubuntu Server
・fail2ban
・firewalld
・メールサーバー


■ 関連記事

fail2ban設定
firewalld設定
メールサーバー構築

コメント

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