我如何评价限制与iptables的SSH连接?

我试图限制可能的SSH连接到我的服务器的数量,但似乎每次都locking我。 我对iptables不是很熟悉,但是我一直在阅读我需要应用的规则来限制连接,但没有成功。 这是我的iptablesconfiguration文件:

:INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [28130:3096101] :RH-Firewall-1-INPUT - [0:0] :WebServices - [0:0] -A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --set --name SSH -A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --update --seconds 120 --hitcount 8 --rttl --name SSH -j DROP -A INPUT -j WebServices -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited -A WebServices -p tcp -m tcp --dport 8088 -j ACCEPT -A WebServices -p tcp -m tcp --dport 443 -j ACCEPT -A WebServices -p tcp -m tcp --dport 80 -j ACCEPT COMMIT 

我认为,如果在2分钟内超过8个连接的话,我认为前两条规则应该阻止主机build立任何新的连接,但是它只是将端口locking在一起。 我究竟做错了什么?

只需添加以下内容:

 -A INPUT -p tcp --dport 2020 -m state --state NEW -j ACCEPT 

…在这两行之后:

 -A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --set --name SSH -A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --update --seconds 120 --hitcount 8 --rttl --name SSH -j DROP 

另外,你应该考虑一个cron任务,它会清除/ proc / net / ipt_recent / SSH (ipt_recent可能会在新的平台上运行),以防被locking。

编辑:你的规则sorting看起来有点奇怪,如果我是你,我会去这样的事情:

 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # Loopback interface -A INPUT -i lo -j ACCEPT # ICMP traffic -A INPUT -p icmp --icmp-type any -j ACCEPT # Already established connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # SSH -A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --set --name SSH -A INPUT -p tcp --dport 2020 -m state --state NEW -m recent --update --seconds 120 --hitcount 8 --rttl --name SSH -j DROP -A INPUT -p tcp --dport 2020 -m state --state NEW -j ACCEPT # Web services -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT -A INPUT -p tcp --dport 8088 -m state --state NEW -j ACCEPT # Reject everything else -A INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT