构建穿越NAT设备的IPSec隧道

来源:互联网 发布:编程常用算法名称 编辑:程序博客网 时间:2024/05/16 12:53
来源:本站原创 作者:文/山东轻工业学院 杨燕 点击次数:1096次 时间:2008-4-9
   

金融行业对信息安全的要求强度高,除了网上银行,很少通过互联网采取IPSEC VPN方式开展业务和办公。但在金融行业网络内部,完全可以利用IPSEC VPN在数据传输、身份认证与审计等功能方面所具备的优势,实现多种应用。例如,利用IPSEC VPN技术,实现通过CDMA构建安全的ATM业务传输网络,以及解决金融行业内部服务器系统管理所存在的安全问题。

一、网络技术——NAT与IPsec

NAT网络地址翻译(Network Address Translation)是目前使用比较广泛的一种网络技术,它的基本功能是进行IP数据包网络地址的转换,主要用来解决IPv4地址紧张的问题。其工作原理为:当内部网络流量流经NAT服务器时,由NAT设备将内部网络的IP源地址替换为Internet网络源地址,然后在Internet网络上进行传送。
NAT技术的实现方式有3种:静态NAT方式,内部网络中的每个主机都被永久映射成外部网络中的某个合法地址;NAT池方式,采用动态分配的方法将外部网络中定义的一系列合法地址映射到内部网络;端口NAT方式,内部地址被映射到外部网络的一个IP地址的不同端口上。通过上述3种方式,可使公共IP地址紧张的矛盾得到一定程度的缓解,而拥有有限IP资源的ISP(入侵防御系统)服务商也能尽可能地为更多用户提供网络服务。
当NAT设备转换的是源地址时,我们称其为SNAT(源地址NAT)。简单过程如下:当内网一个外出的数据包经过NAT设备时,数据包的源地址就会被NAT设备的公网地址所替代,同时NAT设备会记录内外地址的映射信息,数据包被路由后在Internet上就可以传输了。当数据包返回到NAT设备时,NAT设备通过记录下的地址映射信息将网络目标地址转为原来的内部网络源地址,我们称其为DNAT(目标地址NAT)。
由于通过NAT设备实现了内部IP地址信息的对外隐藏,形成内外网的隔离,使得外网无法访问内部主机,所以NAT技术在一定程度上提高了内部网络的安全性。
早期对Internet安全的需求非常少,在IP协议设计之初并没有考虑其安全性。随着基于Internet的商业发展,安全问题日益突出,必须建立新的安全协议标准来满足这种需求。由此,IPSec(IP Security)协议应运而生,它主要用于提供网络层上的数据保护,提供透明的安全通信,保证企业内部信息能够在Internet上进行安全交换。IPSec通过对数据加密、认证、完整性检查提供数据的保密性、完整性、可靠性,同时,通过安全策略配置还可抵抗重放攻击。
IPSec的安全结构包括3个基本协议:AH(头部认证)协议、ESP(封装安全载荷)协议、密钥管理协议。AH协议为IP包提供信息源验证和完整性保证;ESP协议提供加密保证;密钥管理协议提供双方交流时的共享安全信息。IPSec通过以上3个基本协议在IP包头后增加新的字段以保证安全。
AH协议为IP数据包提供无连接的数据完整验证、数据源身份认证和防重放攻击3种服务。ESP协议除了为IP数据包提供AH已有的3种服务,还提供数据包加密和数据流加密。对于ESP协议,加密是其基本功能,而数据源身份的认证、数据完整性验证以及防重放攻击则是可选的。
IPSec协议有两种工作模式:隧道模式和传输模式。在隧道模式下,IPSec将整个原始IP数据包放入一个新的IP数据包中,这样每一个IP数据包都有两个IP包头:外部IP包头和内部IP包头。外部IP包头指定将对IP数据包进行IPSec处理的目的地址,内部IP包头指定原始IP数据包最终的目的地址。IP包的源地址和目的地址都被隐藏起来,使IP包能安全地在网上传送。其最大优点在于终端系统不必为了适应IP安全而作任何改动。隧道模式既可以用于两个主机之间的IP通信,又可以用于两个安全网关之间或一个主机与一个安全网关之间的IP通信。
在传输模式下,要保护的内容是IP包的载荷,在IP包头之后和传输层数据字段之前插入IPSec包头(AH或ESP或二者同时),原始的IP包头未作任何修改,只对包中的净荷(数据)部分进行加密。由于传输模式的IP包头暴露在外,因而容易遭到攻击。传输模式常用于两个终端节点间的连接,如客户机和服务器之间。
传输模式数据包封装格式:

隧道模式数据包封装格式:

IPSec的优点:它定义了一套用于认证、保护私有性和完整性的标准协议。 IPSec支持一系列加密算法如DES、3DES。它检查传输数据包的完整性,以确保数据没有被修改。IPSec可用来在多个防火墙和服务器之间提供安全性,确保运行在TCP/IP协议上的VPN之间的互操作性。

二、NAT与Ipsec的冲突

在多数情况下,NAT的处理对用户使用是完全透明的,但是当用户希望使用IPSec技术组建VPN网络时,NAT却带来了很大的麻烦。IPSec协议的主要目标是保护IP数据包的完整性,保护数据信息不能被修改,无论是故意改动还是发生了随机的传输错误,数据报都将被IPSec抛弃,意味着IPSec会禁止任何对数据包的修改。但NAT的处理过程需要修改IP数据包的IP头数据、传输层报文头数据甚至传输数据的内容(如FTP应用),才能够正常工作。所以一旦经过IPSec处理的IP包穿过NAT设备时,IP包内容被NAT设备所改动,修改后的数据包到达目的主机后其解密或完整性认证处理就会失败,于是这个报文将被认为是非法数据而被丢弃。从而导致在使用了NAT设备的网络链路中无法实现标准IPSec 的通讯。
目前NAT 技术已被广泛地应用于防火墙、接入路由等网络设备中,如果IPSec VPN无法与这些设备协调工作,那么它的应用范围将受到极大的限制。
由于无论在传输模式还是在隧道模式下,AH都会认证整个数据包,包括认证位于AH头之前的IP头。当NAT设备修改了IP头之后,IPSec就会认为这是对数据包完整性的破坏,从而丢弃数据包。因此AH是绝对不可能和NAT在一起工作的。
ESP在传输模式时会保护TCP/UDP头,但是并不保护IP头,因此修改IP地址并不会破坏整个数据包的完整性。但如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP所保护的,从而导致完整性校验失败。所以可能和NAT一起工作的只能是隧道模式下的ESP。

三、解决方案

现在有许多的解决方案来解决NAT 和IPSec共存问题,这里我们主要讨论一种最主要的解决方法:NAT-T。
NAT-T设计简单,不需要改动已有的设备或者协议,只需要边界设备支持即可。这个技术的基本思路是在IPSec封装好的数据包外再进行一次UDP的数据封装。这样,当此数据包穿过NAT网关时,被修改的只是最外层的IP/UDP数据,而对其内部真正的IPSec 数据没有进行改动;在目的主机处再把外层的IP/UDP封装去掉,就可以获得完整的IPSec数据包。NAT-T在实际运作时,第一步是探测通信双方是否支持NAT-T,这主要通过IKE协商时彼此发送的第一个数据包来判断。在判断双方均支持NAT-T后,进入到第二步NAT设备的发现,即去发现在上方的链路中间是否存在NAT设备,通过判断通信双发的IP地址或者端口是否发生了改变而得知。当发现上方的链路中存在NAT设备后,通信双方NAT-T开始协商所采用的数据包封装方式,至此完成协商过程。
UDP的封装格式:
标准IPV4

隧道ESP模式

NAT-T的协商和建立连接分为以下几个独特步骤,步骤执行时完全透明,无需管理员人为操作。
1)在IKE协商过程中,隧道两端的IPSec主机协商并同意在必要时使用NAT-T功能。
2)隧道两端的IPSec主机通过计算和比较出站/入站数据包头中IP地址的哈希数值检查通讯链路中是否存在NAT设备。
3)如果发现存在NAT设备,NAT-T模块自动对IPSec数据包进行再次封装,封装时使用UDP包头和附加的NAT-T包头作为额外的地址信息。
4)完成NAT-T封装后的UDP数据包被正确路由到远端IPSec主机。
5)远端IPSec主机在收到NAT-T数据包后进行解包处理,并将还原后的IPSec数据包交给IPSec处理引擎。
NAT-T功能使用IKE 端口(UDP 500)和UDP 4500端口实现NAT-T封装数据包的传递。

四、NAT-T解决冲突的办法

NAT-T采用以下方式解决通过 NAT使用IPSec的问题。
1)NAT无法更新上层校验和的问题。
通过在NAT-OA IKE有效载荷中发送原始地址,接收方拥有检验解密之后的上层校验和(源和目标IP地址和端口)所需的所有信息。
2)鉴定IKE有效载荷中包含嵌入的IP地址问题。
通过在 NAT-OAIKE有效载荷中发送原始地址,接收方拥有了可用来在快速模式协商期间检验鉴定IKE有效载荷内容的原始地址。
3)无法改变IKE UDP端口号问题。
IPSec NAT-T对话方能够接受来自500之外其他端口的IKE消息。为了防止IKE敏感(IKE-aware)的NAT修改IKE包,IPSec NAT-T对话方在主模式协商期间把IKE UDP端口500改为UDP端口4500。为允许IKE流量使用这个新的UDP端口,您可重新配置防火墙以允许UDP端口4500。
4)NAT无法多路传输IPSec数据流的问题。
通过使用UDP报头封装ESP PDU,NAT能够使用UDP端口来多路传输IPSec数据流。不必要再跟踪ESP报头中的SPI。
5)IKE UDP端口映射的NAT超时可能导致的问题。
通过定期发送NAT Keepalive包,用于后续IKE协商和UDP封装的ESP PDU的UDP 端口映射同时在NAT中得到刷新。

五、NAT-T的局限性

在VPN中使用NAT-T功能,管理员需要注意以下局限性。
1.增加数据处理和通讯的额外开销
使用NAT-T功能会导致在IKE协商过程中增加大约200字节的开销,同时数据传输过程中每个数据包都会增加大约20字节的开销。
2.降低了安全性
由于AH协议需要对数据包头和有效负载都进行验证,而NAT-T则需要在通讯过程中对数据包头进行修改,所以NAT-T无法用于安全性更高的AH通讯,而只能用于ESP通讯。NAT-T需要对IPSec数据包的包头进行修改,造成了IPSec数据包认证的不充分,导致通讯双方身份的可信度降低。
3.多重NAT-T客户端支持
目前多数NAT设备都使用同一个公共IP的不同端口为多个内部终端提供地址转换服务,由于NAT-T协议无法区别同一地址的不同端口,通常情况下在一个NAT设备后同时只能有一台VPN 主机与VPN 服务器建立IPSec连接。目前,已有IPSec VPN产品引入了多重NAT-T客户端支持技术。该技术在NAT-T协商和处理过程中引入了端口等消息封装机制,以使IPSec服务器能够识别使用同一个NAT地址的多个IPSec终端发出的不同隧道协商请求,并建立彼此独立的安全关联。
4.安全关联的更新周期
由于不能保证NAT设备始终使用固定的IP或固定的端口为内部主机进行访问映射,所以IPSec必须能够自动检测到NAT 设备为IPSec主机提供的当前映射地址及端口,并在映射地址及端口发生变化时及时更新安全关联中的地址参数,保证远程VPN主机与VPN网关的通讯始终畅通。

原创粉丝点击