同一IP一个小时内只允许尝试建立3次SSH连接
@for & ever 2010-3-16
首先,在/proc/net/ipt_recent/* 下建立不在限制行列的IP列表
然后,设置同一IP,一个小时内只允许尝试建立3次SSH连接:
iptables -A INPUT -p tcp --dport 22 --syn -m recent --rcheck --seconds 3600 --hitcount 3 --rttl --name SSH --rsource -j DROP
iptables -A INPUT -p tcp --dport 22 --syn -m recent --set --name SSH --rsource -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
注意 rule顺序:
先设定 recent 的-j DROP,再设置recent --set -j ACCEPT
#设置这个 用来解除锁定
iptables -A INPUT -p tcp --dport 1600 --syn -j LOG --log-prefix "SSH_CONN_UNLOCKED "
iptables -A INPUT -p tcp --dport 1600 --syn -m recent --remove --name SSH --rsource -j REJECT --reject-with icmp-host-unreachable
使用方法: telnet linux.host 1600
其中 tcp 1600 port 可以改成任意的未使用的 tcp port
/proc/net/ipt_recent/* 列表里,如果没有设定 –name,则默认为DEFAULT
示例如下:
#添加某个IP到DEFAULT
echo xx.xx.xx.xx > /proc/net/ipt_recent/DEFAULT
#从DEFAULT移除某个IP
echo -xx.xx.xx.xx > /proc/net/ipt_recent/DEFAULT
#清空 DEFAULT
echo clear > /proc/net/ipt_recent/DEFAULT
@forandever 2010-3-16