本文介绍了IPv6的头结构和IPv6防火墙对安全的影响。
AD:
企业在广域网(WAN)中部署 IPv6,接着也会部署IPv6防火墙。本文介绍了一些由IPv6引起的安全问题,以及IT专业人员在部署和运营IPv6防火墙时应该考虑的问题。
引入IPv6防火墙
大多数企业网络的第一道防线都是防火墙,它用于防御公共互联网攻击,限制本地用户的公共互联网访问。在企业网络部署IPv6之后,也会部署IPv6防火墙,这样目前IPv4实施的安全策略也会在IPv6中实施。
虽然IPv6和IPv4各自提供的服务(最佳的数据报文服务)非常相似,但是这两种协议之间存在一些细微差别,这对防火墙设备和操作会影响很大。本文将介绍它们之间的差别,以及它们如何影响IPv6防火墙设计和操作。然后还会说明这些差别可能如何被恶意利用,以减少和消除IPv6防火墙的安全漏洞。
IPv6头结构
IPv6的一个主要变化是采用固定长度的协议头,而不像IPv4那样采用可变长度协议头。任何必要的选择都必须加到后续的扩展头中,扩展头位于固定的IPv6头和封装的IPv6上层协议之间。它会根据处理选项的不同系统而采用不同的扩展头。例如,需要在目标主机中处理的选项会包含在一个“目标选项”头信息中,而由路由器处理的选项则会包含在一个“跳间选项”头信息中。理论上,这至少能够让路由器和主机解析、处理归它们的选项——而IPv4则不同,处理数据包的所有节点必须解析所有的选项。
这个头结构决定了IPv6头信息链:多个头信息会被依次链接在一起,首先是IPv6头,最后是上层协议。每一个扩展头都包含具体的头长度和下一个头链接的头信息类型。因此,任何IPv6流都会采用完整的IPv6头信息链,然后处理它需要的头信息。下图是IPv6头信息链的示意图
图1:IPv6头信息链示例
分片头是其中一种特殊类型的扩展头,它包含了实现IPv6分片所需要的机制。与IPv4头不同,IPv6不是将所有分片相关信息保存在固定的IPv6头中,而是将这些信息保存在一个可选的分片头中。因此,执行分片的主机只需要在IPv6头信息链中插入一个分片头信息,再添加需要分片的原始数据包。
IPv6防火墙对安全的影响
上述IPv6头信息链结构的灵活性优于IPv4,因为它不限制数据包可以包含的数量。然而,这种灵活性也是有代价的。
任何需要获取上层信息(如TCP端口号)的系统,都需要处理整个IPv6头信息链。而且,由于当前的协议标准支持任意数量的扩展头,包括同一种扩展头的多个实例,因此它会对防火墙等设备造成多种影响:
防火墙需要解析多个扩展头,才能够执行深度数据包检测(DPI),它可能会降低WAN性能,引发拒绝服务(DoS)攻击,或者防火墙被绕过。
组合扩展头和分片可能妨碍数据包检测。
正如前面介绍的,由于当前的协议规范支持任意数量的扩展头,包括同一种扩展头类型的多个实例,因此防火墙必须能够细致地处理包括异常的多IPv6扩展头信息的数据包。而这可能被一些攻击者利用,他们可能故意在数据包中加入大量的扩展头,使防火墙在处理上述数据包时浪费过多资源。最终,这可能会引起防火墙性能下降,或者造成防火墙本身出现DoS问题。此外,有一些性能不佳的防火墙在应用过滤策略时,可能无法处理整个IPv6头信息链,从而可能让一些攻击者利用扩展头威胁相应的防火墙。
IPv6分片也可能被恶意利用,方法与IPv4的类似。例如,为了破坏防火墙的过滤策略,攻击者可能会发送一些重叠的分片,从而影响目标主机的分片重组过程。在IPv6中,这个问题更为严重,因为多个IPv6扩展头和分片的组合可能产生一些错误分片,尽管它们的数据包大小是“正常的”,但是它们丢失了一些实施过滤策略通常需要的基本信息,如TCP端口号。即,数据包的第一个分片可能包含很多IPv6选项,以致上层协议头可能属于另一个分片,而不是第一个分片。
IPv6转换/共存技术
IPv6转换/共存技术还给IPv6防火墙带来另一个问题。大多数转换技术都使用某种通道机制,它在一种网络协议(通常是IPv4)中封装另一种网络层协议(通常是IPv6)。这会对防火墙的安全性造成很多影响。
首先,防火墙可能无法识别特定的转换技术,也可能无法应用一些原生IPv6流量支持的过滤策略。例如,在使用原生IPv4或原生IPv6时,一个网站可以阻挡通向TCP端口25的数据包,但是在部署了Teredo 等转换机制后,它可能无法阻挡这些数据包。
其次,转换技术可能会加剧上述问题,因为不仅封装的流量可能使用组合的IPv6扩展头和分片,其他向外发送的数据包(通常是IPv4)也可能是分片的,因此这都会大大增加最终流量的复杂性。这种复杂性不仅会降低网络流量传输速度,更严重的是,它还可能影响防火墙的过滤策略。例如,防火墙可能无法处理整个头信息链,从而无法找到TCP分片(参见下图)。下图的示例显示的是使用Teredo的TCP/IPv6数据包的语法,说明了最终流量的复杂程度。
图2:一个使用Teredo的TCP/IPv6数据包示例
这个数据包的结构可能会变得更复杂,例如,如果内外数据包都分片了。
可能的IPv6安全问题
显然,为了应用IPv6数据包过滤策略,防火墙至少必须支持整个IPv6头信息链的处理。理想情况下,这些防火墙还应该支持IPv6转换技术,这样应用于原生IPv6流量的过滤策略可以同样应用到转换流量上。也就是说,防火墙应该有一个“默认拒绝”策略,这样防火墙就能够阻挡您不需要的流量,如转换流量。
对于可能利用多扩展头的资源耗尽攻击,在防火墙上限制一个IPv6数据包支持的最大扩展头数量可以解决这个问题。合理的限制是允许每一个当前定义的扩展头只出现一个实例。然而,也可以使用“16”等其他限制值——例如,OpenBSD就采用这个限制值。这种限制允许合法流量,但不允许异常多数量的扩展头。超过限制的数据包必须丢弃。虽然这可能会影响性能,但是能够防止DoS。
最后,规定在IPv6报文的第一个分片中包含应用数据包过滤策略所需要的完整数据包头信息,能够应付使用分片的防火墙绕行技术。也就是说,在防火墙接收到的报文第一个分片中,如果不包含完整的上层协议头信息,如TCP头,那么这个数据包就会被丢弃。防火墙绕行技术还可以在应用过滤策略之前,通过在防火墙中重新组合分片的报文来解决。然而,对于基于网络的防火墙而言,至少这并不是一种推荐的方法,因为它可能会留下DoS漏洞。
解决IPv6防火墙问题
正如本文所介绍的,IPv6防火墙面临许多问题,但是它们可以通过合理的防火墙设计和操作解决。在购买防火墙设备时,必须对IPv6防火墙支持仔细评估,因为不同产品的支持差别很大,支持不佳的防火墙可能会对企业网络安全造成负面影响。