如何排除在特定端口上应用的iptables DROP?

# rate-limit repeated new requests from same IP to any ports iptables -I INPUT -i $ETH0ORSIMILAR -m state --state NEW -m recent --set iptables -I INPUT -i $ETH0ORSIMILAR -m state --state NEW -m recent --update --seconds 60 --hitcount 12 -j DROP 

使用上面的设置,我将在60秒内丢弃任何连续重复连接到我的服务器的连接超过12次。

是否有可能为所有港口,但说8080港口呢?

您可以简单地修改您的DROP规则以读取:

 iptables -I INPUT -i $ETH0ORSIMILAR -p tcp ! --dport 8080 -m state --state NEW -m recent --update --seconds 60 --hitcount 12 -j DROP 

你需要添加选项-p tcp ! --dport 8080 -p tcp ! --dport 8080以匹配除8080之外的任何端口的TCPstream量。请注意,此规则不会与UDP等其他协议相匹配。

另一种可能性是在端口8080的这两个规则之前有一个ACCEPT规则。

作为另一种解决scheme,您可以在DROP规则之前添加到您的iptables规则ACCEPT规则中。 它将接受端口8080上的所有数据包,并对所有其他端口进行速率限制。

 iptables -I INPUT -i $ETH0ORSIMILAR -m tcp --dport 8080 -j ACCEPT iptables -I INPUT -i $ETH0ORSIMILAR -m state --state NEW -m recent --set iptables -I INPUT -i $ETH0ORSIMILAR -m state --state NEW -m recent --update --seconds 60 --hitcount 12 -j DROP 

此解决scheme将允许您打开端口进行访问,而无需修改规则。