fail2ban
サーバに対するログイン試行(攻撃)、特にブルートフォースによる辞書攻撃が後を絶たず、結構うっとおしいです。
ホントにヤバいSSH等はinetd(TCP Wrappers)で接続先を制限してる→あまり多くないんすが、お友達にもこのサーバを使ってもらってる関係上、FTPは強く制限出来ない→こちらに対する侵入試行がうっとおしい(-_-)
こういった場合は「エラーが多いホストを弾く」fail2banが定番らしーんすが、
・fail2banはPythonで書かれており、ワタシには読めない(^^;)
・マシン負荷を気にしなければ、大して難しい動作ではないみたい
ということで、今回は勉強も兼ねて慣れたPHPでちょいちょいと自作してみた次第。名前は同じ「fail2ban.php」(^^;;
当然その動作は単純で、
・ログを見てIP毎に接続失敗の回数を数える
・一定数を越えてるIPをファイアウォールで蹴る
・一旦蹴ったIPは覚えといて次蹴らない
・一定の時間が経ったらリセット
こんな感じ。
基本的な構造は、ほぼkrfilterの真似です。同様のシェルスクリプトを生成し実行するするツール、ということ。
片手間でちょいちょいと書いただけのシロモノですが、一応所期の動作をしてくれてるようです。
辞書攻撃を受けると
「このIPを蹴りトバしてやったぞ!」
と、些か誇らしげにメールしてきてます(笑)