

fail2banをUbuntuに入れてもsshdジェイルはデフォルトで無効だった
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
sshへのブルートフォース対策としてfail2banを入れたので、その手順と、あとで気づいた見落としをまとめておく。
やったこと
インストール。
sudo apt updatesudo apt install fail2banjail.confは直接編集せず、jail.localにコピーしてそっちを編集する。パッケージ更新で上書きされないようにするため。
cd /etc/fail2ban/sudo cp -p jail.conf jail.local社内ネットワークからのアクセスはbanしたくないのでignoreipを追加。
#ignoreip = 127.0.0.1/8 ::1ignoreip = 192.168.128.0/24自動起動を有効にして起動。
sudo systemctl enable fail2bansudo systemctl start fail2banステータス確認。
sudo systemctl status fail2ban● fail2ban.service - Fail2Ban Service Active: active (running) Main PID: xxxxx (fail2ban-server)active (running)になってるので、ここまでは何も間違ってないように見えた。
見落としていたこと
上記の手順、ignoreipしか触っていない。[sshd]セクションを何もいじっていないので、実は肝心のSSHジェイルが有効になっているか確認していなかった。
fail2banはサービスとしては起動していても、個々のジェイル(sshdなど)はenabled = trueが明示されていないと動かない。つまりsystemctl statusがactive (running)でも、SSHへの不正アクセスを実際に検知・banしているとは限らない。サービスは生きてるけど中身は空、という状態になり得る。
確認コマンド。
sudo fail2ban-client status sshdこれでエラーになる、あるいはジェイル一覧にsshdが出てこない場合は有効になっていない。
jail.localの[sshd]セクションで明示的に有効化する必要がある。
[sshd]enabled = trueport = sshfilter = sshdlogpath = %(sshd_log)s設定後は再起動して反映。
sudo systemctl restart fail2bansudo fail2ban-client status sshdstatusでCurrently bannedなどの項目が出てくれば有効化できている。
その他気になった点
bantimeのデフォルトは10分程度と短い。ssh向けにこの値のまま運用するなら短すぎる可能性がある。banルールをデフォルトのままにするなら、この時間で十分かは別途検討したほうがよさそう。ignoreipにCIDRで許可した範囲は、fail2ban-client set <jail> unbanipのような一時的な操作と違ってjail.localに書けば再起動後も保持される。
結論
fail2banは「サービスが起動している」ことと「ジェイルが有効になっている」ことは別。ignoreipだけ設定して満足せず、fail2ban-client status <jail名>で実際に監視対象になっているか確認したほうがいい。