我正在强化我的 vps 服务器,最近我发现所有策略都是开放的(接受) 在 Nat Table。我在互联网上搜索,没有找到任何关于保护 nat table 的信息。这是一个安全漏洞吗?这里是输出:
Chain PREROUTING (policy ACCEPT 21038 packets, 1097K bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 9 packets, 1088 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 187 packets, 14396 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 48 packets, 3767 bytes)
pkts bytes target prot opt in out source destination
523 140K MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
我很感谢你的帮助
问候黑胡子
答案1
不,使用 ACCEPT 策略是完全没问题的纳特表。使用 DROP 策略将是一种异常。
数据包按照以下示意图遍历各个表中的各个链:
被接受,只是意味着数据包在下一轮(即:下一个链及其规则接收此数据包)中获得了被接受或丢弃的另一次机会。被丢弃会产生即时效果:数据包消失,并且不会处理此数据包的其他规则。因此,当数据包遍历各个表中的各个链时,有很多地方可以丢弃它。任何地方的一次 DROP 都会删除数据包。额外的 ACCEPT(例如:如果从未使用 NAT,则没有纳特表创建)不会改变这个结果。
作为纳特表的目的是做 NAT 而不是过滤流量(为此有一个专门的表:筛选),没有理由让 NAT 丢弃流量。从技术上讲,这仍然是可行的,但无论如何,您还必须考虑到 NAT 的处理方式与其他表不同,因为它实际上是连接跟踪:只能看到每个新流的第一个数据包iptables‘纳特表,以便为流建立 NAT 规则。其他则不会,它们的处理直接由连接跟踪遵循 NAT 规则(包含在相关连接跟踪可以与conntrack
命令)。
简而言之,你永远不应该在纳特表:您应该接受或返回以创建例外,以遵循实际执行 NAT 的规则(从而使数据包保持不变,以便继续进行下一轮),或使用可用的各种 NAT 目标(例如:DNAT、REDIRECT、SNAT、MASQUERADE ...)为此流建立 NAT 规则(这也将使数据包继续进行下一轮)。将 DROP 默认策略保留给链筛选表。曼格尔表也可用于丢弃流量,但通常也不会为其链配置默认的 DROP 策略。至于鲜为人知的安全表我不知道,它很少使用,所以很少存在。