NAT 会破坏源端口随机化吗?

信息安全 网络 dns dns 欺骗
2021-09-11 22:13:41

针对Kaminsky 攻击的标准防御是对所有 DNS 请求使用源端口随机化。

NAT 是否会破坏源端口随机化的安全优势?

更详细地说,考虑一个位于 NAT 后面的客户端。假设客户端对所有 DNS 请求使用源端口随机化,并发出请求。当请求穿过 NAT 时,NAT 可以将源端口号从 NAT 的本地端口号池中转换为新的源端口。

我担心,如果 NAT 使用可预测的端口分配策略,这可能会使数据包上的源端口去随机化——使客户端容易受到 Kaminsky 攻击。这在实践中会发生吗?NAT 是否会转换 DNS 请求的源端口?他们是否使用可预测的源端口?如果这对某些 NAT 来说是个问题,那么有人知道这个问题有多普遍吗?这些天 NAT 是否采取任何措施来避免搞砸源端口随机化?在配置 NAT 时,是否应该做些什么来确保 NAT 不会使您更容易受到 Kaminsky 攻击?

3个回答

显然,其含义将取决于实现。NAT 设备可以自由选择所需的任何源端口,并且某些实现可能在历史上使用顺序端口编号。但是随着更新的硬件,这变得越来越不可能。

具体来说,较新的路由器更喜欢使用客户端计算机的原始源端口(特别是用于 UDP),以允许使用现在称为UDP 打孔的技术进行 NAT 穿越。

曾几何时,这被认为是游戏、Skype 等广受欢迎的功能,但现在已经非常值得期待了。

另外,请记住,在大多数情况下,路由器会将自己设置为其网络的首选 DNS 服务器,然后在设备上本地运行转发解析器。这意味着客户端计算机上的端口随机化将是无关紧要的;相反,随机化需要成为路由器 DNS 解析器的一个功能。

这取决于执行 NAT 的设备。大多数复杂的防火墙都具有可以启用的指纹加扰功能,例如,我相信自 NG 以来 Checkpoint 就具有这些功能,所以 10 年了。基本路由器不会进行指纹加扰,它只会使用 TCP 数据包中的源端口。少数网络设备实际上会将源端口映射到序列号,但这种情况非常罕见。

因此,只要您的操作系统使用源端口随机化,您的问题的答案几乎总是一个合格的否。如果您的操作系统正在使用可预测的源端口,并且您的 NAT 设备不会为您随机化它们,那么就没有针对预测性攻击的保护。如果您的 NAT 设备映射到顺序源端口,那么它会告诉攻击者更多关于您的网络设备的信息,而不是其中的系统。

即使 NAT 设备将源端口随机化,它仍可能暴露于 DNS 缓存中毒攻击,请参阅此处对已修补的 NAT 和 DNS 设备的安全性的研究:http : //arxiv.org/abs/1205.5190