iptablesで簡易IDS(再掲載)
自宅サーバにも無差別ssh攻撃がかなりやってくる。問題は攻撃よりもただでさえ細いボロADSL回線の帯域を奴らに消費されてしまう事だ。
今までは/var/log/secureからブラックリストを作ってiptablesに流し込むスクリプトを作っていたのだが、攻撃者は色んなIPアドレスを使ってくるのでブラックリストが増えるだけでちっとも効果が無い。なので、iptablesにリミットを加える事にする。
# iptables -A INPUT -p tcp --dport 22 -m limit --limit 1/m --limit-burst 2 -j ACCEPT
こいつで、連続でssh接続要求があった時に、3回目からは無差別にドロップする。さらに、その無差別ドロップのしきい値は1分間に1回分回復する。つまり、1分後に攻撃を再開されたらまた1回は攻撃を食らうのだが、大抵の攻撃野郎は数秒攻撃が失敗したらすぐ退散してしまうのでOKって訳。
もちろんこのルールよりも上位に
# iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT
しとかんととんでも無いことになる。