这些 iptables 规则是什么?

这些 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

我一直试图自己用谷歌搜索这个问题,但我并不完全确定。

据我了解,这些规则适用于使用TCP特定端口上的协议(本例中为 HTTP 和 HTTPS)并拒绝在特定时间段内发送超过 20 个的 IP 地址。但我不明白以下属性到底起什么作用,也不明白 REJECT 实际上是怎样工作的。

  • --syn
  • –connlimit-高于 20
  • –connlimit-mask 16
  • REJECT --reject-使用 tcp-reset

限制适用于什么时间范围?这些 IP 地址是否会被阻止?如果会,会阻止多长时间?

答案1

以下是上述 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 子网建立多少个连接。

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

答案2

由于没有声誉,因此无法添加评论,但有一条注释需要添加:

--connlimit-above 16

意思是,如果来自同一 IP 地址的现有 ESTABLISHED 连接数超过 16 个。

相关内容