補足:いまならrecentじゃなくてhashlimitを使った方がよさげ。
以下の文章はrecentについてなので、hashlimitについて追記した id:hirose31:20060421 を見てもらった方がいいと思うす。
SSHのbrute forceアタックがうざいので、iptablesで悪い子はDROPするようにする。
- OpenSSHのログをみて、
- 一定時間に一定回数連続でアクセスに失敗しているやつはDROPするようにして、
- atで然るべき時間が経ったら解除するように
しようかなぁと思ったら、iptablesにはipt_recentなんて便利がものがあるのがわかった。
- Debian GNU/Linux 3.1(sarge)運用ノート
- SuSE Security mailinglist: Re: [suse-security] SSH attacks.
- iptables(8)
↑を参考にして設定したのの抜粋はこんなかんじ。
iptables -N block_ssh iptables -N ssh iptables -A INPUT -j ACCEPT -s 信頼できるIPアドレス iptables -A INPUT -j ssh -p tcp --dport 22 # SSH brute force アタックを拒否する # /proc/net/ipt_recent/* iptables -F block_ssh iptables -A block_ssh -m recent --name block_ssh --set \ -j LOG --log-level DEBUG --log-prefix "block_ssh " iptables -A block_ssh -j DROP iptables -F ssh ## syn 以外のパッケットは許可 iptables -A ssh -p tcp ! --syn -m state --state ESTABLISHED,RELATED -j ACCEPT ## 攻撃者は10分間拒否し続ける iptables -A ssh -p tcp --syn -m recent --name block_ssh \ --update --seconds 600 -j REJECT ## 1分間に5回アクセスがあった場合は攻撃者と見なす iptables -A ssh -p tcp --syn -m recent --name syn_ssh \ --rcheck --seconds 60 --hitcount 5 -j block_ssh ## syn パケットを記録 iptables -A ssh -p tcp --syn -m recent --name syn_ssh --set iptables -A ssh -p tcp --syn -j ACCEPT
はまったのは、
s/blute/brute/gしました。ありがとうございますー>ifさん