论文部分内容阅读
【摘要】随着互联网的普及,人们生活便利的同时伴随而来的是信息安全的问题和IPv4地址面临枯竭。解决问题的方法IPSec与NAT之间又存在很大的兼容性问题。本文从IPSec与NAT的原理入手,论述了二者的兼容醒问题及解决的方法。
【關键词】互联网 IPSecNAT
【中图分类号】TP393.4 【文献标识码】A 【文章编号】1009-9646(2008)08(b)-0160-01
Abstract:Along with Internet popularization, the people live are the information security question and the IPv4 address which convenient at the same time follows comes faced with the depletion.Solves between question method IPSec and NAT has the very big compatible problem.This article from IPSec and the NAT principle obtaining, elaborated the two to awake compatibly the question and the solution method.
Key words: InternetIPSec NAT
随着互联网的普及,人们对互联网的依存度越来越高,以现在奥运为例,互联网已经成为人们获取奥运信息的最重要方式之一。但随之而来的是两个愈来愈严重的两个问题:网络信息安全面临各种各样的挑战和IP地址(IPv4)面临枯竭。
虽然IPv6的使用能较大的缓解这两个问题的压力,但处在这个IPv4向IPv6的过渡时期,我们必须要有一定的方法来解决问题。一个办法是IPSec(网络协议安全),它可以使用户安全的接入互联网;另一个办法是NAT,它一方面可以缓解IP地址枯竭问题,另一方面可以对外隐藏内部网络,提高安全性。下面让我们先简单了解一下它们。
1 IPSec
IPSec协议是一种端到端的、确保基于IP通讯的数据安全性的机制。它不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构,主要包括:鉴定报头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload),密钥管理协议IKE(Internet Key Exchange)协议和用于网络验证级加密的一些算法等。它支持对数据加密,同时确保数据的完整性。它提供透明的安全服务,保护TCP/IP通信免遭窃听和篡改,可有效抵御网络攻击,同时保持易用性。它在IPv4中是一项可选支持的服务,在IPv6中是一项必须支持的服务。
基本工作原理是:发送方在数据传输前对数据加密,数据以密文方式传输,到达目的节点后由接收端实施解密,而掌握加解密方法的只有数据流的发送端和接收端。不采用数据加密时, IPSec使用验证包头(AH)提供验证来源验证(source authentication),确保数据的完整性; IPSec使用封装安全负载(ESP)与加密一道提供来源验证,确保数据完整性。IPSec协议下, 只有发送方与接受方知道秘密密钥.如果验证数据有效,接受方就可以知道数据来自发送方,并且在传输过程中没有受到破坏。它的特点是对数据的加密以数据包而不是数据流为单位,不仅灵活,也有助于进一步提高安全性。
IPSec有两种模式:传输模式和隧道模式。传输模式只对IP分组应用IPSec协议,对IP报头不进行任何修改,它只能应用于主机对主机的IPSec虚拟专用网VPN中。隧道模式中IPSec将原有的IP分组封装成带有新的IP报头的IPSec分组,这样原有的IP分组就被有效地隐藏起来了。
2 NAT
NAT(Network Address Translation)最初的设计目的是用来增加私有组织的可用地址空间和解决将现有的私有TCP/IP网络连接到互联网上的IP地址编号问题(私有IP地址只能内部使用,不能在互联网主干网上使用)。具体做法是通过将专用网络地址(如企业内部网Intranet)转换为公用地址(如互联网Internet)。这样通过在内部使用非注册的IP地址,并将它们转换为一小部分外部注册的IP地址,从而节省了目前越来越缺乏的地址空间(IPv4)。同事,这样也隐藏了内部网络结构,降低了内部网络受到攻击的风险。正是这种内部主机地址隐藏的特性使网络地址翻译技术成为了防火墙实现中经常采用的核心技术之一。
NAT功能通常有软硬两种方法实现。硬件方法是被集成到路由器、防火墙、单独的NAT设备中;软件方法是由网络操作系统和其他代理软件(如WINROUTE)来实现。NAT设备(或软件)维护一个状态表,用来实现内部网络的私有IP地址到外部网络的合法IP地址的映射。
NAT 分为三种类型:静态NAT(static NAT)、NAT池(pooled NAT)和端口NAT(Port-Level NAT)。其中静态NAT将内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址,这种映射是一对一的,主要作用是隐藏内部地址空间。
NAT池则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络,这样内部地址与外部地址就形成了多对多的动态映射。这种情况主要用于拨号网络,当远程用户联接上之后,动态地址NAT就会分配给他一个IP地址,用户断开时,这个IP地址就会被释放而留待以后使用。这种映射是多对多的,既可以节省地址,又可以隐藏内部地址空间。
端口NAT是人们最熟悉和常用的一种转换方式,将多个内部地址映射为一个合法公网地址,但以不同的协议端口号与不同的内部地址相对应,也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换。当位于内部网络中的主机通过NAT设备向外部主机发起会话请求时,NAT设备就会查询NAT表,看是否有相关会话记录,如果有相关记录,就会将内部IP地址及端口同时进行转换,再转发出去;如果没有相关记录,进行IP地址和端口转换的同时,还会在NAT表增加一条该会话的记录。外部主机接收到数据包后,用接受到的合法公网地址及端口作为目的IP地址及端口来响应,NAT设备接收到外部回来的数据包,再根据NAT表中的记录把目的地址及端口转换成对应的内部 IP地址及端口,转发给该内部主机。在Internet中使用NAPT时,所有不同的TCP和UDP信息流从外部看起来源于同一个IP地址,既节省了地址空间,又隐藏了内部网络结构。这个优点在小型办公室内非常实用,通过从ISP处申请的一个IP地址,将多个连接通过NAPT接入Internet。实际上,许多远程访问设备支持基于PPP的动态IP地址。这样,ISP甚至不需要支持NAPT,就可以做到多个内部IP地址共用一个外部IP地址上Internet。
经过上面的描述,我们会发现:NAT的核心是改变IP地址(NAPT还要改变端口),而IPSec的核心是保护IP头中的IP地址,防止篡改破坏。那么在NAT与IPSec共用的时候会出现几个兼容性问题:
(1)端口问题。NAT技术我们最常用的是NAPT,NAPT需要改变端口,而改变了端口的数据包是肯定会被接收端的IPSec丢弃的。另外IKE协商时UDP使用的端口号一般固定为500,也是无法共用。
(2)IP地址问题。NAT最基本的是IP地址转换,而IPSec的AH封装要提供包括IP地址在内的完整性保护,IP地址的改变会导致AH包无效。
(3)校验和问题。在传输模式中,不管上层协议是TCP还是UDP,都会由一个内容涉及到IP地址的校验和字段,不管是我们前面提到的IP地址改变还是端口改变都会导致校验和发生变化,从而导致IP包被对方丢弃。
那么我们如何解决这个问题使IPSec与NAT和平共处,鱼与熊掌兼得呢?
我们注意到在隧道模式的ESP情况下,TCP/UDP报头使不可见的,那么IP地址的转换对高层协议没有影响,也就是说静态NAT可以和ESP IPSec一起工作。
当然我们最关心的还是NAPT与IPSec的共处,而这个问题的关键在于IKE使用了一个固定的端口号500。一个简单的方法是专门用一个工作站运行IKE以处理所有的IPSec分组,只允许一个IPSec VPN通过。这种情况要保证内外部网络之间转换的源端口号是唯一的,以保证NAPT正常工作。
另外一个思路是在IPSec中通过IKE自动协商来完成SA的管理,IKE协商与UDP封装两种办法配合使用来完成IPSec穿越NAT。步骤为:首先在IKE协商的前两条消息中加入Vendor ID载荷来确定通信路径和远程主机是否支持NAT穿越;另外在原来的传输模式和隧道模式基础上添加UDP封装隧道模式和UDP封装传输模式;然后在SA协商成功后,利用协商好的安全参数,使用UDP封装,发送ESP数据包,成功穿越NAT实现通信。
【關键词】互联网 IPSecNAT
【中图分类号】TP393.4 【文献标识码】A 【文章编号】1009-9646(2008)08(b)-0160-01
Abstract:Along with Internet popularization, the people live are the information security question and the IPv4 address which convenient at the same time follows comes faced with the depletion.Solves between question method IPSec and NAT has the very big compatible problem.This article from IPSec and the NAT principle obtaining, elaborated the two to awake compatibly the question and the solution method.
Key words: InternetIPSec NAT
随着互联网的普及,人们对互联网的依存度越来越高,以现在奥运为例,互联网已经成为人们获取奥运信息的最重要方式之一。但随之而来的是两个愈来愈严重的两个问题:网络信息安全面临各种各样的挑战和IP地址(IPv4)面临枯竭。
虽然IPv6的使用能较大的缓解这两个问题的压力,但处在这个IPv4向IPv6的过渡时期,我们必须要有一定的方法来解决问题。一个办法是IPSec(网络协议安全),它可以使用户安全的接入互联网;另一个办法是NAT,它一方面可以缓解IP地址枯竭问题,另一方面可以对外隐藏内部网络,提高安全性。下面让我们先简单了解一下它们。
1 IPSec
IPSec协议是一种端到端的、确保基于IP通讯的数据安全性的机制。它不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构,主要包括:鉴定报头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload),密钥管理协议IKE(Internet Key Exchange)协议和用于网络验证级加密的一些算法等。它支持对数据加密,同时确保数据的完整性。它提供透明的安全服务,保护TCP/IP通信免遭窃听和篡改,可有效抵御网络攻击,同时保持易用性。它在IPv4中是一项可选支持的服务,在IPv6中是一项必须支持的服务。
基本工作原理是:发送方在数据传输前对数据加密,数据以密文方式传输,到达目的节点后由接收端实施解密,而掌握加解密方法的只有数据流的发送端和接收端。不采用数据加密时, IPSec使用验证包头(AH)提供验证来源验证(source authentication),确保数据的完整性; IPSec使用封装安全负载(ESP)与加密一道提供来源验证,确保数据完整性。IPSec协议下, 只有发送方与接受方知道秘密密钥.如果验证数据有效,接受方就可以知道数据来自发送方,并且在传输过程中没有受到破坏。它的特点是对数据的加密以数据包而不是数据流为单位,不仅灵活,也有助于进一步提高安全性。
IPSec有两种模式:传输模式和隧道模式。传输模式只对IP分组应用IPSec协议,对IP报头不进行任何修改,它只能应用于主机对主机的IPSec虚拟专用网VPN中。隧道模式中IPSec将原有的IP分组封装成带有新的IP报头的IPSec分组,这样原有的IP分组就被有效地隐藏起来了。
2 NAT
NAT(Network Address Translation)最初的设计目的是用来增加私有组织的可用地址空间和解决将现有的私有TCP/IP网络连接到互联网上的IP地址编号问题(私有IP地址只能内部使用,不能在互联网主干网上使用)。具体做法是通过将专用网络地址(如企业内部网Intranet)转换为公用地址(如互联网Internet)。这样通过在内部使用非注册的IP地址,并将它们转换为一小部分外部注册的IP地址,从而节省了目前越来越缺乏的地址空间(IPv4)。同事,这样也隐藏了内部网络结构,降低了内部网络受到攻击的风险。正是这种内部主机地址隐藏的特性使网络地址翻译技术成为了防火墙实现中经常采用的核心技术之一。
NAT功能通常有软硬两种方法实现。硬件方法是被集成到路由器、防火墙、单独的NAT设备中;软件方法是由网络操作系统和其他代理软件(如WINROUTE)来实现。NAT设备(或软件)维护一个状态表,用来实现内部网络的私有IP地址到外部网络的合法IP地址的映射。
NAT 分为三种类型:静态NAT(static NAT)、NAT池(pooled NAT)和端口NAT(Port-Level NAT)。其中静态NAT将内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址,这种映射是一对一的,主要作用是隐藏内部地址空间。
NAT池则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络,这样内部地址与外部地址就形成了多对多的动态映射。这种情况主要用于拨号网络,当远程用户联接上之后,动态地址NAT就会分配给他一个IP地址,用户断开时,这个IP地址就会被释放而留待以后使用。这种映射是多对多的,既可以节省地址,又可以隐藏内部地址空间。
端口NAT是人们最熟悉和常用的一种转换方式,将多个内部地址映射为一个合法公网地址,但以不同的协议端口号与不同的内部地址相对应,也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换。当位于内部网络中的主机通过NAT设备向外部主机发起会话请求时,NAT设备就会查询NAT表,看是否有相关会话记录,如果有相关记录,就会将内部IP地址及端口同时进行转换,再转发出去;如果没有相关记录,进行IP地址和端口转换的同时,还会在NAT表增加一条该会话的记录。外部主机接收到数据包后,用接受到的合法公网地址及端口作为目的IP地址及端口来响应,NAT设备接收到外部回来的数据包,再根据NAT表中的记录把目的地址及端口转换成对应的内部 IP地址及端口,转发给该内部主机。在Internet中使用NAPT时,所有不同的TCP和UDP信息流从外部看起来源于同一个IP地址,既节省了地址空间,又隐藏了内部网络结构。这个优点在小型办公室内非常实用,通过从ISP处申请的一个IP地址,将多个连接通过NAPT接入Internet。实际上,许多远程访问设备支持基于PPP的动态IP地址。这样,ISP甚至不需要支持NAPT,就可以做到多个内部IP地址共用一个外部IP地址上Internet。
经过上面的描述,我们会发现:NAT的核心是改变IP地址(NAPT还要改变端口),而IPSec的核心是保护IP头中的IP地址,防止篡改破坏。那么在NAT与IPSec共用的时候会出现几个兼容性问题:
(1)端口问题。NAT技术我们最常用的是NAPT,NAPT需要改变端口,而改变了端口的数据包是肯定会被接收端的IPSec丢弃的。另外IKE协商时UDP使用的端口号一般固定为500,也是无法共用。
(2)IP地址问题。NAT最基本的是IP地址转换,而IPSec的AH封装要提供包括IP地址在内的完整性保护,IP地址的改变会导致AH包无效。
(3)校验和问题。在传输模式中,不管上层协议是TCP还是UDP,都会由一个内容涉及到IP地址的校验和字段,不管是我们前面提到的IP地址改变还是端口改变都会导致校验和发生变化,从而导致IP包被对方丢弃。
那么我们如何解决这个问题使IPSec与NAT和平共处,鱼与熊掌兼得呢?
我们注意到在隧道模式的ESP情况下,TCP/UDP报头使不可见的,那么IP地址的转换对高层协议没有影响,也就是说静态NAT可以和ESP IPSec一起工作。
当然我们最关心的还是NAPT与IPSec的共处,而这个问题的关键在于IKE使用了一个固定的端口号500。一个简单的方法是专门用一个工作站运行IKE以处理所有的IPSec分组,只允许一个IPSec VPN通过。这种情况要保证内外部网络之间转换的源端口号是唯一的,以保证NAPT正常工作。
另外一个思路是在IPSec中通过IKE自动协商来完成SA的管理,IKE协商与UDP封装两种办法配合使用来完成IPSec穿越NAT。步骤为:首先在IKE协商的前两条消息中加入Vendor ID载荷来确定通信路径和远程主机是否支持NAT穿越;另外在原来的传输模式和隧道模式基础上添加UDP封装隧道模式和UDP封装传输模式;然后在SA协商成功后,利用协商好的安全参数,使用UDP封装,发送ESP数据包,成功穿越NAT实现通信。