Fail2banをとても愛用している。こいつが無いとlogwatchさんがやかましいの何のってな。
だが、最近どうもちゃんと動いてくれない。特にApacheのbanが全く発生しなくなることが多い。何だろうこれは、と。fail2ban-regexでログとフィルタを突き合わせ、正規表現のミスでないことも確認したし。同種のツールの乗り換え先なんか見付かりそうもないしなあ…。
ちなみに環境はさくらのVPS(v3) 1G / CentOS6である。
Fail2banが古いんかなー、と思って0.8.7.1を入れても改善せず。うーむむむ。
こんな現象はどこかで報告されてるんじゃねーの、ということで、検索してみる。ふーむふむふむ。
ああ、もしかしてこれか。logrotateのファイル切り替え時にfail2ban側が追尾失敗する、って奴。これだろ。
対策は色々な方法が書いてあったけど、どうもピンと来ないのが多い。その中で一つだけ、backendをautoからgaminに変えましょう、ってのがあって、何となくこれっぽい気がしたのでやってみた。autoでもGamin使ってくれるんだと思ってたけど違うんだろうか。
で、/etc/fail2ban/jail.conf
を開いて、
[DEFAULT] # -- この辺に設定色々 -- # #backend = auto backend = gamin
ってな感じにして、起動してみる。loglevel = 3
なのでINFOも出てくるのだが、
2012-08-29 03:38:02,361 fail2ban.jail : INFO Creating new jail 'fail2ban' 2012-08-29 03:38:02,361 fail2ban.jail : INFO Jail 'fail2ban' uses Gamin 2012-08-29 03:38:02,362 fail2ban.jail : INFO Initiated 'gamin' backend
とか出てる。ってことはautoだと使われてなかったんかなあ。
数日試してみると、logrotate発動後もban成功していた。これかー。
という訳で、めでたく解決である。
ぶっちゃけ最近までは単にLogwatch対策の気持ちだったけど、うちみたいな零細鯖でもブルートフォース攻撃は激化しており(まあVPSとかいかにも狙われそうって気もするが)、セキュリティ対策にもなってるかもしんない。どんなパスワード使ってるユーザーがいるか分からんしなー。シェル使えるユーザーはまともなパスワードしか使ってないとは思うけど。
あと、Fail2ban monitoring Fail2banを導入して、何回も引っ掛かる奴を長めのbanに放り込むようにしとくと、かなりの確率で諦めてくれるようなので重宝していたり。
同じ現象で困っていましたが、こちらを見つけて解消することができました。ありがとうございます。