这些iptables规则是什么?

我试图找出这些iptables规则实际上做了什么,但我不是很有经验。

这是两条规则:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 16 -j REJECT --reject-with tcp-reset iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 20 --connlimit-mask 16 -j REJECT --reject-with tcp-reset 

我一直在试图谷歌这个为我自己,但我不完全确定。

我的理解是,这些规则适用于在特定端口(本例中为HTTP和HTTPS)上使用TCP协议到服务器的传入连接,并拒绝在特定时间段内发送超过20个的IP地址。 但是我不明白以下属性究竟做了什么或者REJECT是如何工作的。

  • –syn
  • – 限制在20以上
  • –connlimit-mask 16
  • 拒绝 – 拒绝 – 用tcp-reset

限制适用的时间范围是什么,这些IP地址是什么时候被阻塞,如果是这样,持续了多久?

以下是上述iptables规则中这些参数的含义。

 --syn 

这实际上是--tcp-flags SYN,RST,ACK,FIN SYN简称,并且对于这个iptables规则检查的数据包来说,应该检查TCP标记SYN,RST,ACK和FIN。 只有具有TCP标志SYN集的数据包才能匹配。

 --connlimit-above 20 

这实际上是参数-m connlimit --connlimit-above 20一部分,并表示将数据包与连接限制匹配。 如果数据包与超过前20个连接的任何连接相关,则丢弃数据包。

 --connlimit-mask 16 

这允许您限制数据包来自哪个子网掩码将被允许。 这个参数转化为仅将每个255.255.0.0子网的连接数限制为16。 因此,通过一起使用这两者,您可以控制一次可以从255.255.0.0子网连接多less个连接。

 REJECT --reject-with tcp-reset 

这表示任何匹配的数据包都应该被丢弃。 通过告诉iptables使用tcp-reset来丢弃数据包,你说的源头必须开始对话(如果他们提出同样的请求,它也将被拒绝)。

http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html

http://ipset.netfilter.org/iptables-extensions.man.html