Iptables default DROP 策略和hitcount

记一下。当使用了默认为DROP 的策略时,iptables 限制连接次数的脚本应该可以这么写:

[sourcecode language=”bash”]
#!/bin/sh

# Flush all existing rules.
iptables -F

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i $INET_IF -p tcp -d $INET_ADDR –dport 22 -m state –state NEW -m recent –update –seconds 300 –hitcount 5 -j DROP
iptables -A INPUT -i $INET_IF -p tcp -d $INET_ADDR –dport 22 -m state –state NEW -m recent –set -m state –state NEW,ESTABLISHED -j ACCEPT

[/sourcecode]

使用default DROP 策略时,–update 应该是要位于–set 之前的。因为之前把iptables 和PF 有些记混了,记成了iptables 也是“最后匹配”的,所以写成了先–set, 然后–update 的顺序,结果测试发现根本就无法达到限制连接数的作用。
PS:之所以限制SSH server 端口的连接次数只是为了让auth.log 简洁一点,算不上什么安全策略。确保SSH server 安全正确的做法应该还是禁止密码验证方式吧。