fail2ban

投稿日:

サーバに対するログイン試行(攻撃)、特にブルートフォースによる辞書攻撃が後を絶たず、結構うっとおしいです。

ホントにヤバいSSH等はinetd(TCP Wrappers)で接続先を制限してる→あまり多くないんすが、お友達にもこのサーバを使ってもらってる関係上、FTPは強く制限出来ない→こちらに対する侵入試行がうっとおしい(-_-)

こういった場合は「エラーが多いホストを弾く」fail2banが定番らしーんすが、

・fail2banはPythonで書かれており、ワタシには読めない(^^;)
・マシン負荷を気にしなければ、大して難しい動作ではないみたい

ということで、今回は勉強も兼ねて慣れたPHPでちょいちょいと自作してみた次第。名前は同じ「fail2ban.php」(^^;;

当然その動作は単純で、

・ログを見てIP毎に接続失敗の回数を数える
・一定数を越えてるIPをファイアウォールで蹴る
・一旦蹴ったIPは覚えといて次蹴らない
・一定の時間が経ったらリセット

こんな感じ。

基本的な構造は、ほぼkrfilterの真似です。同様のシェルスクリプトを生成し実行するするツール、ということ。

片手間でちょいちょいと書いただけのシロモノですが、一応所期の動作をしてくれてるようです。

辞書攻撃を受けると

「このIPを蹴りトバしてやったぞ!」

と、些か誇らしげにメールしてきてます(笑)