IPv6数据包的结构可以让这个下一代网络协议在可预见的未来实现几乎无限的可扩展性。然而,经验表明,这种灵活性是要付出代价的,这个代价就包括安全隐患。在本文中IPv6安全专家Fernando Gont探讨了IPv6扩展报头带来的安全风险以及降低这种风险的方法。 当涉及到可扩展性时,IPv4数据包结构有两个主要的限制。
首先,IPv4有着有限的选项空间(至多40字节),这种数据包结构限制了IPv4可部署的扩展的数量和类型。其次,所有IPv4选项(无论是针对路由器还是主机)共享相同的“容器”,这意味着转发IPv4数据包的每个路由器都必须处理所有IPv4选项,以防其中一个选项必须要由IPv4路由器处理……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
IPv6数据包的结构可以让这个下一代网络协议在可预见的未来实现几乎无限的可扩展性。然而,经验表明,这种灵活性是要付出代价的,这个代价就包括安全隐患。在本文中IPv6安全专家Fernando Gont探讨了IPv6扩展报头带来的安全风险以及降低这种风险的方法。
当涉及到可扩展性时,IPv4数据包结构有两个主要的限制。
首先,IPv4有着有限的选项空间(至多40字节),这种数据包结构限制了IPv4可部署的扩展的数量和类型。其次,所有IPv4选项(无论是针对路由器还是主机)共享相同的“容器”,这意味着转发IPv4数据包的每个路由器都必须处理所有IPv4选项,以防其中一个选项必须要由IPv4路由器处理。
相比之下,IPv6数据包结构则明显不同。对于可扩展性,IPv6选项通过IPv6“扩展报头”来传递,而不是在强制IPv6报头(具有固定大小)。IPv6扩展报头被插入在强制IPv6报头和上层协议报头之间,下图显示了IPv6数据包的结构,包括两个扩展报头。
从这个图来看,IPv6数据包遵循“菊花链”的结构,其中每个IPv6扩展报头指定了紧跟的报头类型(通过“Next Header”字段),并且每个扩展报头指定了自己的长度(或者具有相关的固定长度)。因此,通过从强制IPv6报头开始,并且每次跟随一个扩展报头,整个IPv6报头链可以传输到上层协议报头。下表列出了一些最常见类型的IPv6扩展报头(来自IANA协议编号注册机构)相应的Next Header值:
下一报头 | 协议 | 参考 |
0 | IPv6逐跳选项 | |
4 | IPv4封装 | |
41 | IPv6封装 | |
43 | IPv6路由报头 | |
44 | IPv6分段报头 | |
50 | 封装安全有效载荷报头(ESP) | |
51 | 认证报头(AH) | |
59 | IPv6没有下一报头 | |
60 | IPv6目的选项 |
基于将对选项进行处理的节点类型,它们被传递在不同类型的IPv6扩展报头。例如,预计将由到目标沿路径的所有节点处理的选项会放在逐跳选项扩展报头中。而仅由目标节点处理的选项则包含在目的选项扩展报头中。其他扩展报头可能有不同的用途。例如,路由报头用来影响数据包如何转发到目标节点,而分段报头则被用于分段/重组机制。
有些扩展报头必须遵循特定顺序。例如,如果有逐跳选项报头,它必须是强制IPv6报头之后的第一个扩展报头。这个概念很简单;在IPv6报头链中,将由到目标沿路径的所有节点处理的扩展报头必须先于仅由目标节点处理的扩展报头。因此,IPv6路由器并不需要处理IPv6报头链中所有报头,而是停止在最后一个扩展报头--其中包含需由IPv6路由器处理的选项。
此外,由于逐跳选项报头仅包含必须由数据包传送路径所有节点处理的选项,路由器将不会浪费资源来处理不必要的选项。
在IPv6中,所有分段相关的报头字段已经从强制IPv6报头中删除,并移动到(可选)“分段报头”。从概念上讲,原始(或“未分段”)数据包总是在发送节点构建,并只有在那时(如果需要)会进行分段。下图展示了原始IPv6数据包的概念结构:
原始数据包由“不可分段部分”和“可分段部分”组成。不可分段部分包括IPv6报头以及必须由到目标节点沿路径所有节点处理的扩展报头,即到路由报头的所有报头(如果存在,也包括路由报头),或者逐跳选项报头(如果存在),或者没有扩展报头。而不可分段部分则由其余数据包部分组成;即只能由最终目标节点处理的所有IPv6扩展报头,还有上层报头和数据。不可分段部分将存在于所有产生的片段中,而可分段部分将被分割为多个片段。因此,每个片段是通过“串联”原始数据包的不可分段部分(具有一个分段报头)和一块可分段部分来构建。下图展示了基于上面描述的逻辑数据包如何分割成多个IPv6片段:
寻找上层协议信息
在IP数据包执行简单访问控制列表(ACL)所需的每个路由器或中间体都必须能够找到上层协议报头,该报头通常包括源和目的地端口号。IPv4的数据包结构让节点可以很容易找到上层协议报头:通过从IPv4报头跳过在IPv4“互联网报头长度”字段所指示的字节数,处理节点可以简单地“跳过”选项空间。
然而,在IPv6的情况下,并没有寻找上层协议报头的“线索”。因此,寻找上层协议报头的唯一方法是在强制IPv6报头开始,处理/紧跟IPv6报头链中的每个扩展报头,直到发现最后一个报头。
应当指出的是,这个过程曾经更为复杂:IPv6报头链本身可以是分段的,扩展报头和上层协议报头被分成多个片段。因此,无状态设备(即在检查前未执行分段重组的设备)不太可能获取上层协议信息。例如,下面的数据包以前被认为是有效的:
幸运的是,2014年年初发布的RFC 7112已经宣布这些数据包为非法,因此最新的部署并不需要担心它们(可以丢弃它们)。
翻译
相关推荐
-
风险剖析:IPv6扩展报头带来的安全隐患(下)
IPv6数据包的结构可以让这个下一代网络协议在可预见的未来中实现几乎无限的可扩展性。然而,经验表明,这种灵活性是要付出代价的,这个代价就包括安全隐患。
-
十个不能忽略的安全隐患
IT管理员们整天都忙于阻挡安全雷达上显示的各种大型攻击,而下面要列出的十个安全隐患,可能一直存在于企业中,却没有被IT管理员察觉。
-
灵活管理配线架
机房的面积是固定的,随着线缆的不断增多,许多网络管理员面对密密麻麻的缆线机架和有限的机房空间一筹莫展,如何才能机房整齐、布线设计的井井有条?
-
企业借助电子邮件推广Web内容时存在的安全隐患
随着邮件系统的广泛使用,越来越多的企业喜欢将Email系统与Web服务器结合起来使用。如会向用户发送带有Web连接的邮件。但这种做法存在比较大的安全隐患。