我试图弄清楚这些 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
Run Code Online (Sandbox Code Playgroud)
我一直在尝试为自己谷歌这个,但我不完全确定。
我的理解是,这些规则适用于在特定端口(在本例中为 HTTP 和 HTTPS)上使用TCP协议到服务器的传入连接,并拒绝在特定时间段内发送超过 20 个的 IP 地址。但我不明白以下属性究竟是做什么的,或者 REJECT 实际是如何工作的。
限制适用的时间范围是什么,因为这些 IP 地址被阻止,如果是这样,会持续多长时间?
以下是上述 iptables 规则中这些参数的含义。
--syn
Run Code Online (Sandbox Code Playgroud)
这实际上是--tcp-flags SYN,RST,ACK,FIN SYNiptables 规则检查的数据包的缩写,应该检查 TCP 标志 SYN、RST、ACK 和 FIN。只有设置了 TCP 标志 SYN 的数据包才应该被匹配。
--connlimit-above 20
Run Code Online (Sandbox Code Playgroud)
这实际上是参数的一部分,-m connlimit --connlimit-above 20并表示将数据包与连接限制进行匹配。如果数据包与超过前 20 个连接的任何连接相关,则丢弃数据包。
--connlimit-mask 16
Run Code Online (Sandbox Code Playgroud)
这允许您限制允许数据包源自哪些子网掩码。此参数转换为仅将每个 255.255.0.0 子网的连接数限制为 16。因此,通过将两者结合使用,您可以控制一次可以从 255.255.0.0 子网建立的连接数。
REJECT --reject-with tcp-reset
Run Code Online (Sandbox Code Playgroud)
这表示应该丢弃任何匹配的数据包。通过告诉 iptables 使用 tcp-reset 丢弃数据包,您是说原始源必须重新开始对话(如果它们发出相同的请求,它也将被拒绝)。
http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO-7.html
http://ipset.netfilter.org/iptables-extensions.man.html
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |