ipsecipsec共享密钥怎么获取协商分几步?每一步的主要目的是什么

    在实施VPN时,除了实现隧道功能以外,还要实现数据安全,两者缺一不可;在隧道方面,之前所讲到的GRE就是最常用的隧道技术,而在数据安全方面,其实就是要让数据加密传输,至于如何对数据进行加密传输,有一个使用最广泛,且最经典的技术方案,这就是IPsec(IP Security),IPsec最突出,也是最主要的功能就是保证VPN数据的安全传输。

    IPsec定义了使用什么样的方法来管理相互之间的认证,以及使用什么样的方法来保护数据,IPsec只是定义了一些方法,而IPsec本身并不是一个协议,就像OSI(Open System Interconnect)参考模型一样,OSI并不是一个协议,OSI只是一个框架,一个模型,OSI里面包含着多个协议,如TCP,UDP,IP,ICMP等等;IPsec中同样也包含着为之服务的各种协议去实现IPsec要完成的各个功能,只有这样,IPsec才能起到作用。

IPsec能够起到的功能有:

保护数据完整性(Data integrity),确保数据不被中截获篡改。
保证数据私密性(Data confidentiality),确保数据加密不被明文形式读取。

防止中间人攻击(Man-in-the-Middle),防止中间人截获数据。

防止数据被重放(Anti-Replay),防止数据被黑客读取篡改后再传输给接收方。

为IPsec服务的总共有三个协议:

虽然总共是三个协议,但分为两类:

Protocol协议中的部分SKEME协议,所以IKE也可写为ISAKMP/Oakley,它是针对密钥安全的,是用来保证密钥的安全传输、交换以及存储,主要是对密钥进行操作,并不对用户的实际数据进行操作。

Exchange)网密钥交换,基于Internet安全联盟(sa)和密钥管理协议(ISAKAMP)义的框架.它为2个对等体提供了相互验证、交换密钥管理信息以及协商安全服务的手段,但是没有规定如何让进行验证,和采取什么样的算法的密钥。通俗的说,它为加密传输提供了交通工具,但是传送什么东西却留给了其他的规定(如ipsec

Header)主要工作是如何保护数据安全,也就是如何加密数据,是直接对用户数据进行操作的。因为在实施VPN时,除了实现隧道功能以外,还要实现数据安全,两者缺一不可;在之前我的提到的GRE隧道技术中,只能实现隧道而不能实现安全,而IPSec则可以为隧道提供数据保护功能,从而构建一个完整的VPN体系。IPsec除了能够为隧道提供数据保护来实现VPN之外,IPsec还可以自己单独作为隧道协议来提供隧道的建立,如果IPsec自己单独作为隧道协议来使用,那么IPsec就不需要借助任何其它隧道协议就能独立实现VPN功能;IPsec到底是只使用数据保护功能再配合其它隧道协议,还是自己独立实现隧道来完成VPN功能,可以由配置者自己决定。

注:AH和ESP都有防止数据被篡改的认证机制,而ESP还有加密数据的机制,AH没有加密数据的机制,只有通过封装来实现对数据的保护机制,不像ESP可以对数据直接加密。

重点:这里的ESP和AH的认证和下面的认证(Authentication)不是一个概念,下面的是指两个对等体之间的认证,就是保证双方vpn通道的对接点(如两台route或防火墙)是合法的不是黑客冒充的,而AH和ESP中的认证时指对于ipsec中交换的秘钥的合法可靠性和对于数据的合法可靠性的认证,防止被中间篡改不过一般只用ESP协议,因为ESP既有认证机制也有加密机制。

    IKE会在VPN对等体之间采用认证机制(Authentication),认证可以有效确保会话是来自于真正的对等体而不是攻击者,因为如果最开始本身就是在和一个攻击者或黑客进行会话和协商,那么后面的所有工作都是白废,所以保证只和合法的对等体会话是非常重要的;IKE的认证方式有三种:

其中Pre-Shared Keys (PSK)是最简单的,使用由管理员事先在双方定义好的密码,认证时,只有双方密码匹配之后,后续的工作才能继续;配置时通常可以包含IP地址,子网以及掩码,也可以指定为任意地址来代替固定地址,适用于IP地址不固定的环境。 PKI是使用第三方证书做认证,叫做Certificate Authority (CA),,里面包含名字、序列号,有效期以及其它可以用来确认身份的参数;证书也可以被取消。(本文只涉及Pre-Shared Keys与共享秘钥PSK)

    虽然IKE使用了认证来保证会话一定是来自合法的对等体,但是单靠认证也无法保证密钥的安全,因为数据还是有可能被第三者截获,所以IKE还必须有一套机制来保证密钥的安全,因为只要密钥泄露,就全玩完了。在密钥方面,IKE使用了称为Diffie-Hellman的算法在VPN对等体之间建立安全的密钥用来加密数据, Diffie-Hellman使用了极为复杂的数学算法,最后将在VPN对等体之间计算出只有它们自己才知道的密钥,即使他们的会话被第三者监控,也无法推算出密钥,本文不对Diffie-Hellman的详细计算过程做介绍,因为这也不是本文的最终目的。 Diffie-Hellman算法目前有3种密钥长度可选,所以在配置时,需要定义Diffie-Hellman的密钥长度,分别有如下选择:

Group 1 密钥长度为768 bit,也是默认的密钥长度;

    用于数据加密的密钥的值是靠算法计算出来的,是不能由管理员定义和修改的,只能在配置IKE的时候选择其中一组秘钥算法,默认不配置是group1秘钥算法。

    也就是说,esp只是个协议。是用于定义使用哪种方法来加密,而DES、3DES等是esp中定义的加密方法对应的具体算法。(esp与3eds的关系相当于,替换法与用第N个数字替换第N+2个数字,这样的关系。用简单的话说就是:我们使用替换法(esp)为秘钥/数据来加密,具体是用数据中的字符串的第N个数字来替换第N+2个数字(3des),来形成一个新的加密后的秘钥/数据,然后在隧道中传输)密钥算法(Diffie-Hellman)的选择就是让配置者定义密钥将使用多少个bit的长度来进行的加密,如果选择group的1024bit长度,就是要将密钥设置成1024bit长,然后在使用esp对着1024bit的秘钥进行3des或者des算法加密处理,最终形成一个加密后的秘钥,传递给隧道的对端

注:IPSec目前只支持IPv4 Unicast(IPv4 单播),不支持其它任何协议(如视频的组播流量,IGP路由协议用组播来建立邻居,所以iPv4不支持IGP协议,除非使用GRE over IPSEC)。

    定义了各种类型的安全措施,包括ip包加密和认证的相关信息相当于ipces中的规则、契约规定如何加密,如何认证)。但是sa是单向传递的就是说,2个对等体上必须要有相同的sa规则认证、加密等每一个对应一个套sa规则

Association),SA并不是隧道,而是一组规则,就好比是需要会话的对等体之间必须遵守的一份合同。SA中的规则能够保证所有数据的安全传递,因此SA中包含了之前提到的保证数据和密钥安全时必不可少的认证、加密等安全策略,这些需要用到的技术,都要在SA中定义。    因为VPN之间传输的数据需要加密才能保证安全,并且加密时所用到的密钥要更加安全,所以对待密钥,我们也需要付出巨大的努力。在密钥的安全上,由IKE负责,而数据的安全,则由IPsec负责,虽然是这么说,但需要注意,IKE也是IPsec不可分割的一部分,IKE不是独立存在的。 limit (byte count)来衡量,在建立SA时就会协商出来,双方会比对,最终取值小的一方;通常是时间先过期,在要过期最后120秒之前,会自动重建另一条SA,避免活动的SA到期后无法传输数据,这样就能实现平滑过渡,以丢最少的包。注:IKE SA等同于ISAKMP SA。(本段内容特别重要,可明确理解ipsec配置过程)

    用户的数据流量真正是在IPsec SA上传递的,而不是在IKE SA;IPsec SA直接为用户数据流服务,IPsec SA中的所有安全策略都是为了用户数据流的安全。 每个IPsec对等体都有一对IPsec SA,一个是去往远程目的地的,而另一个是从远程回来的,也就是一进一出,都存放在本地SA Database中。

SA,两个SA分别定义了如何保护密钥以及如何保护数据,其实这两个SA都是由IKE建立起来的,所以将IKE的整个运行过程分成了两个Phase(阶段),即:第一阶段和第二阶段

mode(主模式),但是IKE也是需要保护自己的流量安全的(这些流量并非用户流量),所以IKE SA之间也需要协商出一整套安全策略,否则后续的密钥和IPsec SA的建立就不能得到安全保证;IKE SA之间需要协商的套安全策略包括:

1、认证方式(Authentication,用于对合法对端的认证

3、Hash算法(HMAC,用于对秘钥和数据的认证

SA来建立的,建立IPsec SA的过程称为 快速模式(quick mode)。IPsec SA才是真正为用户数据服务的,用户的所有流量都是在IPsec SA中传输的,用户流量靠IPsec SA来保护,IPsec SA同样也需要协商出一整套安全策略,其中包括:

2、Hash算法(HMAC用于对数据的认证

SA中也就谈不了密钥算法了,但也可以强制再算。    因为在实施VPN时,除了实现隧道功能以外,还要实现数据安全,两者缺一不可;在之前我的提到的隧道技术中,只能实现隧道而不能实现安全,而IPSec则可以为隧道提供数据保护功能,从而构建一个完整的VPN体系。IPsec除了能够为隧道提供数据保护来实现VPN之外,IPsec还可以自己单独作为隧道协议来提供隧道的建立,如果IPsec自己单独作为隧道协议来使用,那么IPsec就不需要借助任何其它隧道协议就能独立实现VPN功能;IPsec到底是只使用数据保护功能再配合其它隧道协议,还是自己独立实现隧道来完成VPN功能,完全由IPsec

mode(默认模式)通过Internet连接的远程网络之间,当双方需要直接使用对方私有IP地址来互访时,因为私有IP网段是不能传递到Internet上进行路由的,所以目标地址是私有IP的数据包到达Internet后是会被丢弃的,要使地址是私有IP的数据包在Internet上传递,数据包的包头就必须带有公网IP;在之前,我们详细介绍过最常用的隧道协议GRE的工作原理,其根本功能就是要实现隧道功能,通过隧道连接的两个远程网络就如同直连,因为隧道将数据包原来的私有IP地址先隐藏起来,在外部封装上公网IP,等数据包通过公网IP被路由到该IP的路由器后,再由该路由器剥除数据包外层的公网IP,从而发现数据包的私有IP后,再通过私有IP将数据包发到真正的目的地,为此,GRE需要完成多次封装,总共有3次,换句话说,就是在GRE隧道中传输的数据包都有3个包头,GRE中的IP数据包是一层套一层,总共有3个IP地址。
mode就拥有着与GRE相同的隧道功能,那就是将数据包原来的私有IP地址先隐藏起来,在外部封装上公网IP,等数据包通过公网IP被路由到该IP的路由器后,再由该路由器剥除数据包外层的公网IP,从而发现数据包的私有
IP后,再通过私有IP将数据包发到真正的目的地,所以,IPsec的Tunnel mode也会对原始数据包封装多个IP包头,当IPsec工作在Tunnel mode时,数据包的封装过程如下:

    从图中可以看出,当IPsec工作在Tunnel mode时,整个原始数据包都会被加密,包括数据部分和包头部分,正因为该封装形式隐藏了原始的IP 包头,导致了原始IP包头不可见,那么路由器就无法对该数据包进行路由,所以需要添加一个新的IP包头来正常路由,通常是加密设备自己的IP地址被加到新IP包头中,这个地址也可在IOS中定义;并且我们可以确定这个IP地址一定是在传输网(通常指公网Internet)中可以被路由的。至少为什么同时出现3个包头,理论同GRE隧道的原理,因为要实现隧道功能,此部分的理论可以参见之前GRE隧道部分。 IPsec包头的大小共32字节,而普通IP包头大小为20字节,所以可以看出,原始IP数据包经过Tunnel模式的IPsec封装之后,会多出大约52字节大小的包头。当原始数据包被Tunnel模式的IPsec封装时,这种封装方式被认为更安全,因为原始数据包的所有内容,包括数据部分,以及真正的源IP和目的IP都被加密了,所以更安全。

    Transport mode IPsec除了作为安全协议来为隧道提供数据保护之外,也可以自己单独作为隧道协议来提供隧道的建立,如果IPsec自己单独作为隧道协议来使用,那么IPsec就不需要借助任何其它隧道协议就能独立实现VPN功能;这些都是由IPsec Mode来控制的,如果IPsec要自己独立实现隧道来完成VPN功能,就需要工作在Tunnel mode,Tunnel模式的IPsec不仅实现了隧道功能,也保留了数据安全,实现了完整的VPN功能。如果IPsec不需要实现隧道功能,而只需要实现保护数据的安全功能,就只要工作在Transport mode即可,因为Transport模式的IPsec只有安全功能而没有隧道功能,所以还要再配合其它隧道协议,最终实现完整的VPN功能。当IPsec工作在Transport mode时,数据包的封装过程如下:


mode时,IPsec包头是添加在原始IP包头与上层协议(如传输层)之间的,所以原始IP包头在传输过程中还是可见的,同样也容易被分析。因为没有新IP包头被加入,所以没有多少增加的字节。由于数据包被Transport模式的IPsec封装时,原始IP包头在最外面,路由过程中是根据原始IP包头来路由的,所以当通过Internet连接的远程网络之间需要直接使用对方私有IP地址来互访时,此封装不可行,因为Transport

Header),其中IKE是针对密钥安全的,是用来保证密钥的安全传输、交换以及存储,主要是对密钥进行操作,并不对用户的实际数据进行操作,如果要保护用户数据,需要靠ESP(Encapsulating Security Protocol)和(Authentication Header),ESP和AH主要工作是如何保护数据安全,也就是如何加密数据,是直接对用户数据进行操作的,IPsec对用户数据的保护,靠ESP和AH的封装。

ESP包头中使用IP协议号50来标识,意为IP协议号为50的数据包都被当作ESP数据包来处理;从上图中也可以看出,即使是封装ESP,也分为两种情况,因为IPsec本身分为两种模式,所以在进行安全封装数据包时,不同的模式,也会有不同的封装格式。从图中还可以看出,原始数据包经过ESP封装之后,只是数据被加密了,而原始的IP包头是没有改变的,虽然是这样,但也会使用其它方式,如HMAC来保证数据的安全性,其中包括:

AH对用户数据包的封装过程如下:


AH包头中使用IP协议号51来标识,从图中可以发现,原始数据包经过AH封装之后,并没有被加密,这是因为AH封装并不使用常规的方法去加密数据部分,而是采用隐藏数据的方法,也就是相当于加一个防改写的封条给数据,很显然,这简直就是掩耳盗铃,如果数据机密要求高,千万不要单独使用AH封装。

set就是定义了数据包是受到怎样的保护。

map是思科的IOS中配置IPsec的组件,执行两个主要功能:选择需要加密处理的数据;定义数据加密的策略以及数据发往的对端。选择需要加密处理的数据就是定义什么样的流量需要被保护,因为也许用户并不是需要所有的数据都被保护,所以需要先匹配指定的流量才行;

    定义数据加密的策略以及数据发往的对端,也就相当于定义数据的目的地,有时,这也表示隧道的终点。其实Crypto map除了以上两个功能以外,还包含其它一些功能,如定义IPsec的Mode;Crypto map中的策略是分组存放的,以序号区分,如果一个Crypto map有多个策略组,则最低号码的组优先;当配置完Crypto map后,需要应用到接口上才能生效,并且一个接口只能应用一个Crypto map。 Crypto map还分为静态map(static map)和动态map(dynamic map),如果需要简单的区分它们,就是数据发往的对端是否固定,如果是动态map,那么对端是不固定的,在存在隧道的时候,也就表示隧道的终点是不固定的,但源始终是自己。

VPN)时才有,因为当远程VPN用户的VPN隧道建立之后,该用户的所有流量都将被发送到隧道之上,这样一来,原本用户正常的用户,比如发往Internet的流量也被发到隧道上,结果就会造成远程VPN用户与Internet失去连接;为了让用户需要走VPN隧道的流量才被发送到隧道上,而其它流量,还是从原来的接口发送而不被IPsec封装,所以需要将用户的流量分为两类,从而区分对待,这就是隧道分离(Split Tunneling);其实Split Tunneling和非远程VPN有某些相同之处,非远程VPN也有定义感兴趣流量的功能,这个功能就是指定什么样的流量通过VPN传输,什么样的流量正常传输;在最终的结果是,这两个功能在配置上是一样的。

VPN中最简单的VPN,但并不代表该形式的VPN是最常用的。 在配置IPsec VPN范畴的VPN时,无论配置哪种形式,基本上需要如下几个重要步骤:

1、配置IKE(ISAKMP)策略 定义认证标识

其中每步的具体内容为:

无论前面定义了何种认证方式,都需要添加认证信息,如密码、数字证书等等。

也就是定义Phase Two中一些加密算法以及HMAC算法,此transform set就是定义了VPN流量中的数据包是受到怎样的保护。

定义哪些流量需要通过VPN来传输,通过IPsec来保护;匹配流量的方法为定义ACL,建议使用Extended ACL来匹配指定的流量,ACL中被permit匹配的的流量表示加密,而被deny匹配的流量则表示不加密。

注:在配置ACL定义感兴趣流量时需要格外注意的是ACL中不要使用any来表示源或者目标,否则会出问题。

crypto map配置后,是不会生效的,必须将crypto map应用到接口上,目前还没有听说crypto map对接口类型有任何要求,也就是正常接口都可以应用,当然必须是三层可路由接口。

第一步.配置第一阶段配置IEK参数,协商秘钥的安全参数。

第二部,配置对等体认证PSK

配置预共享秘钥参数和对端地址,key 0表示在running-config中以明文保存PSK密码

第三步.配置第二阶段配置ipsec参数,协商通过ipsec隧道的数据的安全参数。

配置ipsec传输集名称和参数(AH和ESP的)可单独用AH或ESP,也可以两者都用。AH只有认证机制,ESP有认证机制和加密机制,但是没有AH的认证机制好。

第四步.配置感兴趣的流量。定义需要进行加密走vpn隧道的流量

在R2上也使用相同的配置与R1建立对等体关系,然后建立ipsec-vpn,使用两端内网进行测试完成ipsec建立。

IPSec在NAT环境中的部署是VPN的热门难点技术之一,本专栏针对该问题进行原理性探讨,为后续VPN部署方案做下铺垫。


nat会把IP数据包中的内网源地址改为外网地址。

VPN中标准身份标识也是IP地址,如上图所示,从前几期专栏的介绍中我们可以得知,NAT处理过程中会改变IP地址,因此IPSec的身份确认机制必须能够适应IP地址变化;目前解决此问题的方法主要有两种,第一种是使用数字证书替代IP地址作为身份标识,第二种是使用字符串取代IP地址作为身份标识;我国内市场范围内,第二种方法更为常见,部署也更为简单,所以本期主要对第二种方法着重进行介绍。

2.   IP地址复用: 从上期专栏中,IPSec由AH和ESP两个协议组成,其中AH无法穿越NAT,ESP从理论上可以穿越NAT,但是ESP的IP协议号是50,并不是基于UDP和TCP的协议,因此当NAT网关背后存在多个ESP应用端时,无法只根据协议号进行反向映射,为了使ESP能够在NAT环境中进行地址复用,ESP必须做出改变。

IKE身份确认及野蛮(激进)模式协商

IPSec的身份确认最常见是通过IKE协议代劳,IKE支持的身份认证机制有两种:

1.   数字证书方式,通过CA数字证书体系确认身份,是最为安全、可靠的方式。

2.   身份标识+预共享密钥方式,通过发起方和响应方预先配置相同的密钥,如bigtree,完成双方对彼此身份的认证,这是最为常见的方式;在预共享秘密钥认证机制中,身份标识则可以分为几类:

a)   指定IP地址,使用IP地址作为身份标识,是IKE的默认方式,响应方只允许指定IP地址发起协商,安全性比较高;

b)   指定IP地址范围,这种方式依然使用IP地址作为身份标识,由于发起方必须要指定IP地址,否则无法发起协商,指定IP地址范围是响应方特性,如响应方可以指定2.0.0.0/8范围内的地址都可以发起协商,而不是只允许2.1.1.2发起协商,能够减少配置,但安全性略有下降;

c)   什么都不指定,也是使用IP地址作为身份标识,但允许任意IP地址发起协商,只要预共享密钥一致,双方就能够通过身份确认,通常适用于发起方动态获取公网地址,如PPPoE接入互联网方式,还适用于发起方众多,而响应方不想单独为每个发起方单独指定预共享密钥,这种方式虽然不是非常安全,但是可以简化配置,安全性再次下降;

d)   指定对端名字,发起方和响应方都预先配置好本端名字,使用该名字作为身份标识,与指定IP地址类似,通过指定对端名字方式,即使双方预共享密钥一致,只要对端名字不合法,立即中断协商,由于名字未与IP地址进行绑定,而且名字在网络中明文传递,故安全性不如指定IP地址方式高,但这种身份标识方式可以穿越NAT。


在上图中,发起方Spartucus和响应方Crixus都是用CA颁布的数字证书作为身份标识,通过数字证书体系检验对方身份的真伪,由于数字证书中的身份信息并不包含IP地址信息,所以使用数字证书是可以轻松穿越NAT的。


在预共享密钥身份确认体系中,使用名字作为身份标识,也能穿越NAT,由于该方式不需要搭建CA服务器,在穿越NAT的应用场景中,该方式使用较广。


如果要使用名字作为身份标识,那么IKE协商就必须要使用一种特殊的协商方式——野蛮模式(Aggressive Mode)或者叫激进模式

1.   发起方协商的第一条信息就包含身份信息,并且是明文显示,因此有身份泄露的隐患;

2.   响应方根据发起方的身份信息进行确认,并使用预共享密钥信息计算hash;

3.   发起方根据响应方的身份信息也进行hash计算,与响应方提供的hash进行比较,如果一致则身份确认通过,进行IKE SA密钥种子确认,如果不一致则双方协商结束;

4.   IKE SA协商完毕之后,利用该SA协商IPSec SA,从第三条报文开始都是加密的,但双方身份信息都使用明文传送

在上一期专栏中,我们介绍了常规的IKE协商方式,称为主模式(Main Mode),它正常情况下需要6条报文协商出IKE SA,预共享认证方式只能使用IP地址作为身份标识;

而野蛮模式只需要3条报文就能实现,预共享认证中既可以使用IP地址也可以使用名字方式作为身份标识。主模式穿越NAT只能使用数字证书认证方式

IKE协商IPSec SA的过程称为快速模式(Quick Mode),和野蛮模式一样只需要3条报文即可协商完成,在我们的专栏中,为了介绍简便,通常只画出2条报文交互的示意。

从前面几期专栏的反复介绍可以得知,基于UDP、TCP的应用可以在NAT出口进行复用,不会有麻烦,那么在IPSec中是否如此呢?IPSec是一个框架协议,直接构建在IP层之上,具体协议由AH和ESP组成,ESP协议号50,AH协议号51,它们都没有类似于UDP/TCP端口号的概念,因此也就没有NAT复用标识,ESP要穿越NAT还需要想其它办法,而AH则因为保护源IP地址的关系,在NAT穿越中属于天生无法支持。


ESP穿越NAT其实很简单,通过借用UDP的方式,巧妙地实现了NAT地址复用,它使用的是UDP端口500(IKE协商协议ISAKMP所使用端口),ESP在什么时候会进行UDP封装呢?它是通过IKE协商时检测出来的:

3.   响应方Crixus接收到协商报文后发现源地址2.1.1.2和协商报文中的IP地址信息192.168.1.2不一致,即判断中间经过了NAT设备,并告知Spartacus,双方要使用UDP封装;如果Crixus没有检测到NAT转换,那么继续使用原生的非UDP封装模式。

本期专栏主要介绍了IPSec在NAT环境中的变化,为下一期IPSec VPN部署方案介绍做预热,敬请期待第15期专栏。


IPSec是基于网络层的,不能穿越通常的NAT、防火墙,这篇文章就是要讨论,在需要NAT网络的环境中,如果使用IPsec VPN  隧道技术。

  IPSec隧道模式

  IPSec传输模式

  隧道模式通常是建立在双方的网关之间的。传输模式下,IPSec主要对上层的传输进行封装保护,通常情况下,传输模式只用于两台主机之间的通信。

  因为我们讨论的是NAT环境下的VPN传输,所以我们就只是关注隧道模式下IPSec是如何动作的。

  不过我们先来看一看两种模式的区别,下面给出包头的结构,就一目了然。

一、封装AH认证头的两种方式的不同

   AH协议(IP协议号为51)提供数据源认证、数据完整性校验和防报文重放功能,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。AH的工作原理是在每一个数据包上添加一个身份验证报文头,此报文头插在标准IP包头后面,对数据提供完整性保护。可选择的认证算法有MD5(Message Digest)、SHA-1(Secure Hash Algorithm)等。MD5算法的计算速度比SHA-1算法快,而SHA-1算法的安全强度比MD5算法高。

  设计AH认证协议的目的是用来增加IP数据报的安全性。AH协议提供无连接的完整性、数据源认证和抗重放保护服务,但是AH不提供任何保密性服务。IPSec验证报头AH是个用于提供IP数据报完整性、身份认证和可选的抗重传攻击的机制,但是不提供数据机密性保护。验证报头的认证算法有两种:一种是基于对称加密算法(如DES),另一种是基于单向哈希算法(如MD5或SHA-1)。 

       传输模式只对上层协议数据(传输层数据)和IP头中的固定字段提供认证保护,把AH插在IP报头的后面,主要适合于主机实现。

  隧道模式把需要保护的IP包封装在新的IP包中,作为新报文的载荷, 然后把AH插在新的IP报头的后面。隧道模式对整个IP数据报提供认证保护。

二、ESP认证加密方法

Payload,封装安全载荷)协议:封装安全载荷(ESP)用于提高Internet协议(IP)协议的安全性。它可为IP提供机密性、数据源验证、抗重放以及数据完整性等安全服务。ESP属于IPSec的机密性服务。其中,数据机密性是ESP的基本功能,而数据源身份认证、数据完整性检验以及抗重传保护都是可选的。ESP主要支持IP数据包的机密性,它将需要保护的用户数据进行加密后再重新封装到新的IP数据包中。

  上面看过了AH和ESP认证头的结构,与两种模式下的不同。下面讨论的是,为什么在NAT环境中,ipsec vpn 不能使用AH认证方法?

  IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。但是NAT处理过程是需要修改IP数据包的IP包头、端口号才能正常工作的。所以,如果从我们的网关出去的数据包经过了ipsec的处理,当这些数据包经过NAT设备时,包内容被NAT设备所改动,修改后的数据包到达目的地主机后其解密或完整性认证处理就会失败,于是这个数据包被认为是非法数据而丢弃。无论传输模式还是隧道模式,AH都会认证整个包头,不同于ESP 的是,AH 还会认证位于AH头前的新IP头,当NAT修改了IP 头之后,IPSec就会认为这是对数以完整性的破坏,从而丢弃数据包。因此,AH是不可能与NAT一起工作的。

  意思就是说,AH处理数据时,所使用的数据是整个数据包,甚至是IP包头的IP地址,也是处理数据的一部分,对这些数据作整合,计算出一个值,这个值是唯一的,即只有相同的数据,才可能计算出相同的值。当NAT设备修改了IP地址时,就不符合这个值了。这时,这个数据包就被破坏了。

  而ESP并不保护IP包头,ESP保护的内容是ESP字段到ESP跟踪字段之间的内容,因此,如何NAT只是转换IP的话,那就不会影响ESP的计算。但是如果是使用PAT的话,这个数据包仍然会受到破坏。

  所以,在NAT网络中,只能使用IPSec的ESP认证加密方法,不能用AH。

  但是也是有办法解决这个缺陷的,不能修改受ESP保护的TCP/UDP,那就再加一个UDP报头。

  NAT-T的基本思路是IPSec封装好的数据包外再进行一次UDP数据封装。这样,当此数据包穿过NAT网关时,被修改的只是最外层的IP/udp数据报。

NAT-T的操作步骤:

  一、判断双方是否支持NAT-T,这是IKE协商的第一阶段,双方通过发送一个VENDOR ID来识别是否支持NAT-T,等一下做实验会看到这个。

  二、判断通信链路上是否存在NAT设备,这一步是NAT 发现,NAT发现的原理是判断通信方的IP地址和端口是否发生了改变,判断的方法是,使用IP地址和端口号进行HASH运算,送往对方进行校验。一旦发现NAT,则立即进行端口浮动,也就是在IKE协议的第二阶段将IKE的UDP 500浮动到UDP 4500端口。

  三、进行ESP处理


金融行业对信息安全的要求强度高,除了网上银行,很少通过互联网采取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技术组建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开始协商所采用的数据包封装方式,至此完成协商过程。

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解决冲突的办法

NAT-T采用以下方式解决通过 NAT使用IPSec的问题。
1)NAT无法更新上层校验和的问题。
通过在NAT-OA IKE有效载荷中发送原始地址,接收方拥有检验解密之后的上层校验和(源和目标IP地址和端口)所需的所有信息。
2)鉴定IKE有效载荷中包含嵌入的IP地址问题。
通过在 NAT-OA IKE有效载荷中发送原始地址,接收方拥有了可用来在快速模式协商期间检验鉴定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-T的局限性

在VPN中使用NAT-T功能,管理员需要注意以下局限性。
1.增加数据处理和通讯的额外开销
使用NAT-T功能会导致在IKE协商过程中增加大约200字节的开销,同时数据传输过程中每个数据包都会增加大约20字节的开销。
由于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网关的通讯始终畅通。


介绍两个IP地址都固定的网关之间建立通过CLI方式建立IPSec VPN隧道配置举例,两端PC都可以主动发起协商。

图1所示,网络A和网络B分别通过FW_A和FW_B连接到Internet。网络环境描述如下:

通过组网实现如下需求:在FW_A和FW_B之间建立基于路由的IPSec隧道,使网络A和网络B的用户可通过IPSec隧道互相访问。


IP地址:可以任意配置,但不能与其他IP地址冲突。

IP地址:可以任意配置,但不能与其他IP地址冲突。

我要回帖

更多关于 ipsec共享密钥怎么获取 的文章

 

随机推荐