2008/10/17

2008-10-17:sshへのアタックをiptablesでブロック

リモートの iptables をいじるのは自殺行為だ、とはよく言われますが、実際に死にました。トホホ。。。

京都のデータセンターに置いているグローバル IP address を持った私のマシンに ssh でつないではいろんなユーザー名のパスワードチャレンジをしてくる子がいて、じゃまくさいので遮断しようというお話。
あ、もちろん、PasswordAuth は切ってあります。

iptables に ipt_recent.ko というモジュールがあります。
今回はこれを使って、「一定時間内に指定回数以上の接続があったら撥ねる」ということを実現するのが今回のお話。
やり方としては以下を実行。

# /sbin/iptables -A INPUT -p tcp --syn -dport 22 -m recent --name SSH --set
# /sbin/iptables -A INPUT -p tcp --syn -dport 22 -m recent --name SSH --rcheck --second 60 --hitcount 6 -j DROP

ひとつめのルールで22番ポートにきた SYN パケットに SSH という名前をつけて記録して、ふたつめのルールで60秒以内の6回のチャレンジ以降は遮断、ということをしています。

が、これを実行したら自分の ssh 接続も切れた。
しかも、再接続もできなくなった。。。(号泣)

しょうがないので、京都の仲間に電話して、現地行って再起動をしてもらいました。
コマンドラインで叩いただけだから、再起動すればすべて忘れてくれます。
やっちまったのが午前中で、夕方前には復旧しました。うーん、がっかりな自分。
再挑戦は自分が現地に行った時にやります。
なにが悪かったんだろうなぁ。。。