我是 iptables 和网络方面的初学者,所以请原谅我提出这样的初学者问题。
我在网上找到了过滤畸形数据包的部分:
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL SYN -m state --state NEW -j RETURN
但据我所知,第一个(新)数据包应该包含 SYN 标志,并且此规则将阻止新连接?还是我误解了这一点?
应用以下规则后还会发生什么?
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL RST,ACK,PSH
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL RST,ACK,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL RST,ACK,PSH,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL FIN,PSH,ACK,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL ACK,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL ACK,URG,FIN
如果我是对的,那么就没有任何动作?iptables 将检查上述标志并转到下一个规则,对吗?
答案1
第二个例子没有任何动作,所以除了积累统计数据之外它什么也不做。
iptables -xvn -L tcpchk
ALL SYN 匹配已建立的连接,并将已建立的连接踢出 tcpchk 链,并返回到其父链(可能是 INPUT)。-j 返回将数据包返回给父级。
该规则不会导致故障,因为它实际上不会丢弃或拒绝任何东西。