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
・メールサーバー


コメント