IPSec与NAT兼容性研究论文

时间:2022-03-18 03:21:00

IPSec与NAT兼容性研究论文

摘要网络地址转换技术(NAT)与IPSec在因特网上都是得到广泛应用的技术,但是它们之间却是不兼容的。该文首先分别介绍了NAT和IPSec两种协议的基本原理,分析了两者的不兼容性,然后讨论了解决该问题必须满足的要求,最后给出了利用UDP封装法实现NAT透明穿透的解决方案。关键词IPSec;NAT;IKE;UDP封装1引言基于IP技术的虚拟专用网(VirtualProfessionalNetwork,简称VPN)是通过Internet平台将局域网扩展到远程网络和远程计算机用户的一种成本效益极佳的方法。随着网络安全技术的飞快发展,越来越多大型企业利用互联网采用IPSec技术建立VPN网络,IPSec已逐渐成为VPN构建的主流技术。IP安全协议(IPSecurityProtocol,简称IPSec)是由互联网工程工业组(InternetEngineeringTaskForce,简称IETF)1998年底规划并制定的网络IP层标准。IPSec不仅可以为IP协议层以上所有的高层协议和应用提供一致性的安全保护,而且除了可用于IPv4之外,也可用于下一代IP协议IPv6。另外,NAT(NetworkAddressTranslation)技术通过改变进出内部网络的IP数据包的源和目的地址,把无效的内部网络地址翻译成合法的IP地址在Internet上使用。该技术一方面可以把私有IP地址隐藏起来,使外界无法直接访问内部网络,对内部网络起到保护作用;另一方面,它可以缓解由于IPv4先天设计上的不足,而导致的IP地址严重短缺的现状。但是,被广泛使用的网络地址转换(NAT)设备却制约着基于IPSec技术的VPN的发展,这是因为IPSec协议在VPN中承担保护传输数据的安全性任务。在数据传输过程中,任何对IP地址及传输标志符的修改,都被视作对该协议的违背,并导致数据包不能通过安全检查而被丢弃。但在VPN中运用NAT技术,则不可避免地要将私网地址映射为公网地址,即对IP地址要进行修改。因此,在VPN网络中如何使IPSec和NAT协同工作,实现NAT的透明穿透具有现实意义。2协议介绍2.1IPSecIPSec包括安全协议和密钥管理两部分。其中,AH和ESP是两个安全协议,提供数据源验证、面向无连接的数据完整性、抗重放、数据机密性和有限抗流量分析等安全任务。为了能够将相应的安全服务、算法和密钥应用于需要保护的安全通道,IPSec规定两个通信实体进行IPSec通信之前首先构建安全关联SA。SA规定了通信实体双方所需要的具体安全协议、加密算法、认证算法以及密钥。IKE提供了用来协商、交换和更新SA以及密钥的完整机制。IPSec定义了两种类型的封装模式——传输模式和隧道模式。传输模式只对IP分组应用IPSec协议,对IP报头不进行任何修改,它只能应用于主机对主机的IPSec虚拟专用网VPN中。隧道模式中IPSec将原有的IP分组封装成带有新的IP报头的IPSec分组,这样原有的IP分组就被有效地隐藏起来了。隧道主要应用于主机到网关的远程接入的情况。2.2NATNAT能解决目前IP地址紧缺的问题,而且能使得内外网络隔离,提供一定的网络安全保障。它解决问题的办法是:在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址在Internet上使用,其具体的做法是把IP包内的地址或用合法的IP地址来替换。NAT功能通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中。NAT有三种类型:静态NAT、动态地址NAT、网络地址端口转换NAPT。其中静态NAT设置起来最为简单,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。而动态地址NAT则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。NAPT则是把内部地址映射到外部网络的一个IP地址的不同端口上。根据不同的需要,三种NAT方案各有利弊。3IPSec与NAT的不兼容性分析根据协议的定义,我们知道IPSec和NAT两个协议之间存在一定的不兼容性。其不兼容性主要有以下几种形式:1)NAT对AH的影响IPSecAH进行验证的时候,处理的是整个IP包,包括源地址和目的地址。如果IPSec通信双方存在NAT设备,NAT设备就会修改外层IP包头的源地址并修改其校验和,这样接收方会因认证失败而丢弃该包。2)NAT对ESP的影响TCP/UDP校验和地计算涉及一个虚构的IP包头,该包头含有IP源和目的地址。因此,当NAT设备改变IP地址时也需要更新IP头和TCP/UDP校验和。如果采用ESP传输模式,IP包经过NAT设备时,NAT设备修改了IP包头,但是TCP/UDP校验和由于处于加密负载中而无法被修改。这样,该信包经过IPSec层后将因为TCP协议层的校验和的错误而被丢弃。另外,由于TCP/UDP校验和只与内层原始IP包头有关,外层IP包头的修改并不对其造成影响,因此采用ESP隧道模式和仅静态或动态NAT的情况下不存在TCP校验和的问题。但是,在NAPT情况下,因为NAPT需要TCP/UDP端口来匹配出入信包,而端口号受到ESP加密保护,所以ESP分组通信将会失败。3)NAT对IKE的影响IKE主模式与快速模式中如果使用IP地址作为身份信息,经过NAT后,会导致IKE协商的失败。IKE协议使用固定目的端口500,当NAPT设备后的多个主机向同一响应者发起SA协商时,为了实现多路分发返回的IKE包,NAPT修改外出的IKE包的UDP源端口。因此,响应者应该能处理端口号并非500的IKE协商请求,但往往NAPT对UDP端口的映射很快会被删除,再协商的过程就将出现一些不可预见的问题,很容易导致NAPT设备无法将协商包送到正确的目的地。综上所述,IPSec组件的支持能力从表1中可以看出,只有在隧道模式和地址转换情况下才可以实现IPSec数据流的NAT穿越。这一方法既降低了IPSec协议的安全性,又限制了NAT的工作方式,因此在实际应用中可行度较差。4IPSec与NAT的兼容性要求在现有的条件下,为了推动基于IPSec的VPN的发展,IPSec和NAT兼容性解决方案需要满足下列要求:1)可部署性IPSec和NAT兼容性解决方案作为一个过渡的解决办法必须比IPv6易于部署。应该只需修改主机,无需改变路由器,在短时间内能与现存的路由器和NAT产品协同工作。2)远程访问IPSec的一个重要应用是远程访问公司的内部网络。NAT穿越方案必须考虑远程客户端与VPN网关之间存在多个NAT的情况。3)防火墙兼容性IPSec和NAT兼容性方案应该避免对IKE或IPSec目的端口的动态分配,使防火墙管理员进行简单的配置,就可以控制穿越NAT的IPSec数据流。4)可扩展性IPSec和NAT兼容性方案应具有良好的扩展性,必须保证在大规模远程访问的环境中,在大量远程接入的环境下,同一时间段多个主机和远程安全网关建立连接。5)后向兼容性IPSec和NAT兼容性方案中必须能与已有的IPSec实现互操作。穿越方案应该能自动检测是否存在NAT,能判断通信对方的IKE实现是否支持NAT穿越。6)安全性IPSec和NAT兼容性解决方案的引入必须保证不得带来新的安全漏洞。5利用UDP封装法实现NAT的穿透本文中的解决方案是采用UDP封装法实现NAT的透明穿透,不需要修改现有的NAT网关和路由器。所以该方案具有简单且易于实现的优点,缺点是由于添加了一个UDP报文头,而加大了带宽开销,但相对于目前持续扩大的传输带宽来说,这个UDP报文头的带宽开销可以忽略不计。下面详细讨论其原理和实现过程。5.1封装格式UDP封装法是在原有的IP包的IP头和AH/ESP的数据之间再封装一个UDP头,这样封装后的数据包端口值对NAT可见,就可以正确的实现端口转换。UDP封装格式如图1所示。UDP封装格式另外,由于IKE已经使用了UDP的500端口,为了简化配置和避免多个端口带来的安全隐患,UDP封装的ESP也使用该端口。这样就需要采取一定的方法来区分端口500的数据包是IKE消息还是UDP封装的ESP。为了区分两者,我们采用在IKE报头添加Non-ESP标记。在确定存在一个中间NAT之后,支持IPSecNAT-T的对话方开始使用新的IKE报头。5.2IKE协商过程IPSec通信实体双方是否采用UDP封装取决于对话对方是否支持该方法以及是否存在NAT设备,这个过程通过IKE协商来完成。在IKE协商过程中增添了新的NAT-D和NAT-OA有效载荷和以及UDP通道类型。1)新的NAT-Discovery(NAT-D)有效载荷这个新的有效载荷包含一个散列值,它整合了一个地址和端口号。在主模式协商期间,即IKE协商第一阶段第三、四条消息中,IPSec对话方包括两个NAT-Discovery有效载荷——一个用于目标地址和端口,另一个用于源地址和端口。接收方使用NAT-Discovery有效载荷来发现NAT之后是否存在一个经NAT转换过的地址或端口号,并基于被改变的地址和端口号来确定是否有对话方位于NAT之后。2)新的NAT-OriginalAddress(NAT-OA)有效载荷:这个新的有效载荷包含IPSec对话方的原始地址。对于UDP封装的ESP传输模式,每个对话方在快速模式协商期间发送NAT-OA有效载荷。接收方将这个地址存储在用于SA的参数中。3)用于UDP封装的ESP传输模式和隧道模式的新的封装模式这两种新的封装模式是在快速模式协商期间指定的,用于通知IPSec对话方应该对ESP使用UDP封装。5.3地址通告和Keepalive包由于用UDP来封装IPSec分组的思想只解决了NAPT设备不支持AH和ESP通信的问题。例如TCP校验和错误、UDP端口映射的保持等问题还需要辅助方法来解决。为保证校验和正确无误,通信双方需将自身的原始IP地址和端口发送给对方,即实现地址通告。地址通告的实现通过IKE第二阶段的前两条消息中的NAT-OA有效载荷。因为NAT-OA有效载荷中包含IPSec对话方的原始地址,为此,接收方就拥有了检验解密之后的上层校验和所需的信息。消息发起者在NAT中创建了一个UDP端口映射,它在初始主模式和快速模式IKE协商期间使用。然而,NAT中的UDP映射通常超过一定时间没用就会被删除掉。如果响应者随后向发起者发送IKE消息却没有提供UDP端口映射,那么这些消息将被NAT丢弃。这个问题的解决办法是通过定期发送Keepalive包,用于后续IKE协商和UDP封装的ESP的UDP端口映射同时在NAT中得到刷新,从而保证通信的正常运行。6结束语IPSec作为网络层的安全协议,目前的应用越来越广泛,已成为构建VPN的基础协议之一。而由于IPv6取代IPv4将是一个漫长的过程,NAT设备的广泛存在极大地限制了IP层安全协议IPSec的推广,因此在目前的条件下,UDP封装方法无疑是一种在当前环境下无需修改NAT网关和路由器、简单可接受的解决IPSec和NAT兼容性的方法,具有一定的现实意义。但是该方案还不完善,有待进一步讨论和研究。参考文献[1]RFC3022-2001.TraditionalIPnetworkaddresstranslator(TraditionalNAT)[S].[2]RFC2401-1998.SecurityArchitectureoftheInternetProtocol[S].[3]RFC2402-1998.IPAuthenticationHeader[S].[4]RFC2406-1998.IPEncapsulatingSecurityPayload(ESP)[S].[5]RFC2409-1998.TheInternetKeyExchange(IKE)[S].[6]RFC3103-2001.RealmSpecificIPProtocolSpecification[S].[7]AbobaB,WilliamDixon.IPSec-NATcompatibilityrequirements[Z].Internetdraft,draft-ietf-ipsec-nat-reqtstxt,2001[8]AriHuttunen.UDPencapsulateofIPSecpackets[Z].Internetdraft,draft-ietf-ipsec-udp-encapstxt,2001.[9]KivirenT.NegotiationofNAT-traversalintheIKE[Z].Internetdraft,draft-ietf-ipsec-udp-iketxt,2001