日期:2023-01-24 阅读量:0次 所属栏目:计算机网络
随着网络技术的发展和网络的大规模建设,各种应用系统逐步转移到了网络平台上,具体业务对网络的依赖程度日益加深,网上涉密信息越来越多。针对这些有价值信息的各种网络攻击也层出不穷,网络的安全性和可靠性问题愈发突出。作为网络安全的关键技术,IPSec协议已广泛用于保障网络数据的安全。
IPSec协议为端到端的安全协议。对于复杂的网络环境,如存在NAT设备的网络环境、组播网络环境、VLAN TRUNK网络环境,IPSec协议支持得不是很完善。为了使IPSec协议在上述网络环境下能正常工作,为IP层数据报提供安全防护,该文针对NAT设备穿越、组播报文的处理、带VLAN标记的报文处理提供具体的解决方案,使集成IPSec功能的安全网关设备具有更好的网络环境适应性,应用范围更广。
1 IPSec协议简介[1]
IPSec协议是由IETF(Internet Engineering Task Force)制定的一套用于保护IP层通信安全的协议。该协议可实现包括访问控制、无连接的完整性、数据源验证、抗重播、数据机密性等多种安全服务。
IPSec是一种协议套件,给出了应用于IP层上网络数据安全的一整套体系结构,包括ESP(封装安全载荷)协议、AH(验证头)协议、IKE(Internet密钥交换)协议和用于网络认证及加密的一些算法等组成。
ESP协议和AH协议是IPSec体系的主体,它们分别定义了协议的载荷头格式以及所能提供的服务,另外还定义了数据报的处理规则。正是这两个安全协议为数据报提供了网络层的安全服务。ESP协议为IP层及其上层数据提供机密性、数据源验证、抗重播以及数据完整性等安全服务。AH协议为IP层提供数据完整性、数据原始身份验证和一些可选的抗重播服务。AH协议不对受保护的IP数据报的任何部分进行加密。除了机密性之外,AH提供ESP能够提供的一切东西。AH提供的数据完整性与ESP提供的数据完整性稍有不同,AH对外部IP头各部分进行身份验证。
ESP协议和AH协议都支持传输模式和隧道模式。传输模式主要用于两台终端主机之间,保护传输层协议数据,实现端到端的安全。隧道模式用于主机与子网或两个子网之间的通信,保护整个IP数据报。
IPSec可以在终端主机、安全网关或两者中同时进行实施和配置。该文论及的IPSec协议的设计主要针对安全网关模式,在主机模式下实现IPSec协议穿越NAT设备时可以借鉴使用。
2 NAT设备穿越
2.1 NAT介绍
NAT(Network Address Translation,网络地址转换)是一种将私有地址转化为合法公有IP地址的转换技术。在实际应用中,NAT主要用于实现私有网络访问公共网络的功能。该技术一方面可以屏蔽私有地址,保护内部网络;另一方面可以缓解IP地址不足的问题。
NAT的实现方式有三种:静态NAT、动态地址NAT、网络端口地址转换NAPT。这三种NAT实现方式都会分析IP数据报的报头,匹配地址转换表中的规则,修改满足匹配规则的IP数据报报头。并根据协议的需要重新计算IP数据报的校验和。[2]
2.2 IPSec与NAT的兼容性分析
NAT与IPSec的兼容性问题主要体现在以下几个方面:[2][3]
1)AH与NAT
AH协议对数据报的完整性保护包括IP头部分,而NAT在进行转换时,需要修改IP头中的IP地址,这样就会导致AH协议的完整性验证失败,因此,AH协议不管是在传输模式下还是在隧道模式下,与NAT都不兼容。
2)ESP与NAT
ESP协议的完整性验证不包括外部的IP头部分,NAT进行地址转换修改IP地址不会影响ESP协议的完整性验证。
在传输模式下,如果原始数据报为传输层带有校验和的TCP或UDP协议,而TCP和UDP的校验和又与IP头中的地址相关,这样NAT转换更改了外层的IP地址后,将导致TCP或UDP校验和的失败,从而导致数据报被丢弃。如果关闭TCP和UDP头部校验和的检验,可规避这一问题。隧道模式下,不存在TCP/UDP校验和问题。
当NAT的实现方式为NAPT时,NAPT需要更改传输层的端口号。ESP协议在传输模式和隧道模式下,传输层的端口号都一定会受到完整性保护。当NAPT对端口号进行修改后,接收方会因完整性验证不通过而丢弃该IPSec报。
3)IKE与NAT
IKE协商时,进行的UDP通信的端口号一般是固定的(通常是500),而NAPT的工作原理是通过不同的端口号来区分不同的连接,这样就会出现问题。
2.3 IPSec穿越NAT的解决方案
基于前文分析,AH协议与NAT完全不兼容,ESP协议在有限条件下可与NAT兼容。该文基于IETF提出的UDP封装法,实现ESP协议对NAT的穿越,但该方法需要IKE协商的配合。
1)IKE协商
通过IKE协商探测通信路径中是否存在NAT设备,是否需要进行UDP封装,并将该指示信息集成在SA中,通知线路中要进行IPSec应用的数据包。
IKE协商分两个阶段,具体实施见参考文献[2][3]。
2)UDP封装
在ESP封装的数据报的IP头和ESP头之间添加UDP头,封装格式如图1所示。经UDP封装后的IPSec报,在通信路径上看到就是UDP报。由于整个UDP头对外可见,前文论及的ESP协议在进行NAT地址转换时导致的校验和问题和NAPT转换时存在的端口问题,经UDP封装后都迎刃而解。采用这种方式,不需要变动网络设施,只需在实现IPSec功能的安全网关或主机进行IPSec数据报的UDP封装处理即可。
IKE协商包的UDP通信端口通常为500,为了区分IKE协商包和进行了UDP封装的IPSec包,需对IKE协商包的格式进行简单地调整。在IKE协商包的UDP头和IKE头之间添加非ESP的标志,使其与ESP头中的SPI字段保持不同。
NAT将私有地址转换为共有地址是有时间限制的,如果在限定的时间范围内未被使用,将会被释放掉,对应的SA被删除。为了维持IPSec的通信,需定时发送Keepalive数据包,使NAT设备中的映射关系不被释放。
3 组播报文的处理
3.1 组播简介[4]
组播是指在IP网络中将数据包以尽力传送的形式发送到某个确定的节点集合(即组播组),其基本思想是:源主机(即组播源)只发送一份数据,其目的地址为组播组地址;组播组中的所有接收者都可收到同样的数据拷贝,并且只有组播组内的主机可以接收该数据,而其它主机则不能收到。组播技术有效地解决了单点发送、多点接收的问题,实现了IP网络中点到多点的高效数据传送,能够大量节约网络带宽、降低网络负载。[4]
3.2 组播地址机制
IP组播地址用于标识一个IP组播组。IANA把D类地址空间分配给组播使用,范围从224.0.0.0到239.255.255.255。
IANA将MAC地址范围01:00:5E:00:00:00~01:00:5E:7F:FF:FF分配给组播使用,这就要求将28位的IP组播地址空间映射到23位的组播MAC地址空间中,具体的映射方法是将组播地址中的低23位放入MAC地址的低23位。
由于IP组播地址的后28位中只有23位被映射到组播MAC地址,这样会有32个IP组播地址映射到同一组播MAC地址上。
3.3 组播报文的IPSec处理
1)组播报文的封装处理
在IPSec传输模式下,组播报文按照AH协议或ESP协议的格式要求进行封装即可,只要网络线路中的路由器支持组播报文的转发,经过AH或ESP传输模式处理后的组播报文可顺利到达对应的多个终端。
在IPSec隧道模式下,由于需要构建新的MAC头和IP头,为了使组播报文能顺利地到达对端的网关设备,按照单播报文的封装方式将不能实现传输的目的,为此需要对组播报文的封装进行特殊的处理。
下图3为部署有IPSec安全网关的典型网络示意图。
当内部子网A和内部子网B之间传输的为单播报文时,从内部子网A发向内部子网B的数据报经IPSec安全网关A时,如果经策略查询确认需要进行IPSec处理,则封装后的数据报格式如图4
新构建的MAC头的目的MAC地址为下一跳路由器即路由器A的MAC地址mac_RA,源MAC地址为IPSec安全网关A自身的MAC地址mac_ipsecA;新构建的IP头的源IP地址为IPSec安全网关A的IP地址ip_ipsecA,目的IP地址为对端安全网关的IP地址ip_ipsecB。
从内部子网B发向内部子网A的数据报的封装格式如图5。
当内部子网A和内部子网B之间传输的是组播报文时,因为组播报对应多个接收主机,它的目的IP地址和目的MAC地址不是实际的主机地址或路由器地址,如果按照上述单播报文的封装方法数据报将不能到达目的端。为了使组播报文能进行IPSec保护,同时能够通过路由器转发至对应的组播成员,对组播报文的封装方式如图6。
组播报文经IPSec隧道封装后,新构建MAC头的目的MAC地址保持原有报文中的目的MAC地址不变,新构建IP头的目的IP地址保持原有报文中的目的IP地址不变,这样对组播报文执行了IPSec保护的基础上,又可使封装后的IPSec组播报文顺利通过网络传输,到达目的端。
注:该文中对组播报文的封装方法基于线路中的路由器支持组播报文的转发,如果路由器不支持组播报文的转发,可通过GRE over IPSec方式实现多播报文到单播报文的转换以及IPSec的处理,具体实现方法本文不作详述。
2)关于SA的来源
SA的协商是点到点的。由于组播包存在一源对应多个目的或多源对应一个目的的情况,所以无法通过IKE来协商组播通信所用的SA。为了解决这个问题,可以采用人工分发的方式,使组播通信的各个点维持相同的SA。
3)关于抗重放服务
在组播通信中,进入方向接收的数据包可能来自采用同一个SA的不同子网,由于SA相同,报文中携带的序列号可能重复,所以在对组播包的IPSec处理中,不能启用抗重放服务。
4 带VLAN标记报文的IPSec处理
如果IPSec安全网关部署于两台交换机的VLAN TRUNK之间,则经过IPSec安全网关的数据报将带有VLAN标记。802.1Q 的VLAN标记占4字节,位于数据报MAC头中,其中2字节为VLAN ID,2字节为标志码16’h8100。
在IPSec传输模式下,对于带有VLAN标记的数据报的处理与普通报的处理方式一致。
在IPSec隧道模式下,由于原始数据包和封装后的数据包地址可能落在不同的VLAN中,或者封装后数据包地址不在VLAN中。如果封装后地址属于某一VLAN,此时需将封装后数据包所属的VLAN ID代替原始的数据包中的VLAN ID;如果封装后地址不属于VLAN,则新封装后的数据包MAC头中不带有VLAN标记。封装地址所属的VLAN ID可由外部配置进IPSec安全网关。
在进入方向,带有VLAN标记的数据包经IPSec处理解封后,需将VLAN ID还原成目的主机所在的VLAN ID。具体可通过预先配置好的查找表来实现,将解封后的数据包的目的地址送到查找表中匹配,如果有匹配结果,匹配结果即为原始数据包的VLAN ID,将该VLAN ID替换掉封装地址所属的VLAN ID;如果没有匹配结果,解封时,数据包MAC头中不保留VLAN标记字段。
5 结束语
随着网络的发展和IPSec协议的广泛应用,IPSec设备在各种网络环境下的适应性将直接影响到设备的推广使用和用户的使用效果。基于本文所提出的解决方案,当网络中存在NAT设备、组播环境下、或者安全网关接入在VLAN TRUNK环境下,网络数据报可以接受IPSec的保护并能顺利通过网络传输。
参考文献:
.北京:机械工程出版社,2001.
[2] 孙利君,杨东鹤.IPSec与NAT之间的兼容性分析和解决方案[J].现代电子技术,2007,9.