IPSec ***原理与配置


    本篇主要讲解IPSEC ×××相关理论概念,工做原理及配置过程。从安全和加密原理入手,讲解了IPSEC 在***对等体设备实现的安全特性,如数据的机密性、数据的完整性,数据验证等。重点分析IKE阶段1和阶段2的协商创建过程,为×××等体间故障排查打下坚实的理论基础,最后,分别在Cisco的路由器和防火墙上实现IPSEC ×××的应用和配置,并结合企业需求进行案例分析和讲解。git

 

1、×××概述算法

    ×××技术起初是为了解决明文数据在网络上传输带来的安全隐患而产生的。TCP/IP协议族中的不少协议都采用明文传输,如telnet、ftp、tftp等。一些***可能为了获取非法利益,经过诸如窃听、假装等***方式截获明文数据,使企业或者我的蒙受损失。安全

    ×××技术能够从某种程度上解决该问题。例如,它能够对公网上传输的数据进行加密,即便***经过窃听工具截获到数据,也没法了解数据信息的含义。×××也能够实现数据传输双方的身份验证,避免***假装成网络中的合法用户***网络资源。bash

 

 

一、×××的定义服务器

    ×××(virtual private network,虚拟专用网)就是在两个网络实体之间创建的一种受保护的链接,这两个实体能够经过点到点的链路直接相连,但一般状况下他们会相隔较远的距离。网络

杨书凡09.png

    ×××技术的做用:架构

(1)经过使用加密技术防止数据被窃听。ssh

(2)经过数据完整性验证防止数据被破坏、篡改。ide

(3)经过认证机制实现通讯双方身份确认,来防止通讯数据被截获和回放。函数

    此外,×××技术还定义了:

* 何种流量须要被保护。

* 数据被保护的机制。

* 数据的封装过程。

    实际工做环境中的×××解决方案不必定包含上述全部功能,这要由具体的环境需求和实现方式决定。并且不少企业可能采用不止一种的×××解决方案。

 

 

二、×××的链接模式

    ×××技术有两种基本的链接模式:隧道模式和传输模式。这两种模式实际上定义了两台实体设备之间传输数据时所采用的不一样的封装过程。

1)传输模式

    传输模式一个最显著的特色就是:在整个×××的传输过程当中,IP包头并无被封装进去,这就意味着从源端到目的端数据始终使用原有的IP地址进行通讯。而传输的实际数据载荷被封装在×××报文中。对于大多数×××传输而言,×××的报文封装过程就是数据的加密过程,所以,***者截获数据后将没法破解数据内容,但却能够清晰地知道通讯双方的地址信息。

杨书凡10.png

 

    因为传输模式封装结构相对简单(每一个数据报文较隧道模式封装结构节省20字节),所以传输效率较高,多用于通讯双方在同一个局域网内的状况。例如:网络管理员经过网管主机登陆公司内网的服务器进行维护管理,就能够选用传输模式×××对其管理流量进行加密。

 

2)隧道模式

    隧道模式中,×××设备将整个三层数据报文封装在×××数据内,再为封装后的数据报文添加新的IP包头。因为新IP包头中封装的是×××设备的ip地址信息,因此当***者截获数据后,不但没法了解实际载荷数据的内容,同时也没法知道实际通讯双方的地址信息。

杨书凡11.png

    因为隧道模式的×××在安全性和灵活性方面具备很大的优点,在企业环境中应用十分普遍,总公司和分公司跨广域网的通讯、移动用户在公网访问公司内部资源等不少状况,都会应用隧道模式的×××对数据传输进行加密。

 

三、×××的类型

    一般状况下,×××的类型分为站点到站点×××和远程访问×××。

1)站点到站点×××

    站点到站点×××就是经过隧道模式在×××网关之间保护两个或者更多的站点之间的流量,站点间的流量一般是指局域网之间(L2L)的通讯流量。L2L的×××多用于总公司与分公司、分公司之间在公网上传输重要业务数据。

杨书凡12.png

 

    对于两个局域网的终端用户来讲,在×××网关中间的网络是透明的,就好像经过一台路由器链接的两个局域网。总公司的终端设备经过×××链接访问分公司的网络资源。数据包封装的地址都是公司内网地址(通常为私有地址),而×××网关对数据包进行的再次封装过程,客户端是全然不知的。

 

2)远程访问×××

    远程访问×××一般用于单用户设备与×××网关之间通讯链接,单用户设备通常为一台pc或小型办公网络等。×××链接的一端为PC,可能会让不少人误解远程访问×××使用传输模式,但由于该种×××每每也是从公网传输关键数据,并且单一用户更容易成为***的***对象,因此远程访问×××对于安全性要求较高,更适用于隧道模式。

    要想实现隧道模式的通讯,就须要给远程客户端分配两个IP地址:一个是它本身的NIC地址,另外一个是内网地址。也就是说远程客户端在×××创建过程当中同时充当×××网关(使用NIC地址)和终端用户(使用内网地址)。

杨书凡13.png

 

    当远端的移动用户与总公司的网络实现远程访问×××链接后,就好像成为总公司局域网中的一个普通用户,不只使用总公司网段内的地址访问公司资源,并且由于其使用隧道模式,真是的ip地址被隐藏起来,实际公网通讯的一段链路对于远端移动用户而言就像是透明的。

 

 

2、加密算法

    加密就是一种将数据转换成另一种形式的过程,若是不了解用于加密的算法,解密几乎是不可能的。举例而言,A给B发信息内容为”I LOVE YOU”,因为担忧C从中间截获,因而,A与B协商了一种简单的加密方法:把全部的字母按照26个字母顺序+3,”I LOVE YOU”就变成了”L ORYH BYX”,即便C截获了数据也没法得知信息的真正含义。这里“+3”就能够理解为一种简单的加密算法。

    实际×××设备所使用的算法是至关复杂的,通常会涉及一些较为复杂的数学算法,利用这些算法能够实现数据加密、数据完整性验证、身份验证等×××的基本功能。通常来讲,能够将这些加密算法分为两大类:对称加密算法和非对称加密算法。

一、对称加密算法

    对称加密算法使用同一秘钥对信息提供安全的保护。假设对称加密算法的秘钥为“K”,客户端传输的明文数据为“M”,×××网关加密后的数据为“C”,而E和D为加密和解密函数,则数据加密过程以下:

杨书凡14.png

(1)发送发和接收方共享秘钥“K”,也就是说加密和解密使用同一把钥匙。

(2)发送方的×××网关经过加密函数E将明文数据M加密成为密文数据C。

(3)接收方的×××网关经过解密函数D将数据还原为明文数据M。

 

    目前常见的对称加密算法有DES、3DES、AES等。

1)DES算法

    DES加密算法曾经在×××领域应用很广,属IBM的研发产品,其秘钥长度为4位,其中8位用于奇偶校验,因此实际有效长度为56位。虽然该算法目前还没找到更好的方法破解,可是经过暴力破解已经能够在较短期内攻破DES算法,因此在实际工程实施过程当中(若是没有设备硬件性能支持)已经不建议使用该种算法。

2)3DES算法

    NIST在1999年研发了3DES算法,理论上3DES算法是DES算法的加强版本,由于3DES使用了三个阶段的DES,即同时使用了三个不一样的56位秘钥,因此至关于产生了一个168位的有效秘钥长度。这种级别的秘钥目前尚未计算机有能力在短期内破解,并且其执行效率虽然在软件环境中比较慢,但在硬件环境中并不明显。

3)AES算法

    3DES算法虽然目前为止是安全的,但随着计算机硬件的更新,总有一天要被攻破,NIST在2002年研发了AES算法欲取代DES和3DES算法。该算法比3DES算法更安全,它支持12八、192和256位秘钥长度,有效的秘钥长度可达上千位。更重要的是,AES算法采用了更为高效的编写方法,对CPU占用率较少,因此诸如IPSEC ×××等时机工程的实施过程当中趋向于使用AES来提供更好的加密功能。

 

二、非对称加密算法

1)算法的原理

    非对称几秒算法使用公钥和私钥两个不一样的秘钥进行加密和解密。用一个秘钥加密的数据仅能被另外一个秘钥解密,且不能从一个秘钥推出另外一个秘钥。假设接收方的公钥和私钥分别为P和Q,客户端传输的明文数据为M,×××网关加密后的数据为C,而D、E分别为加密和解密函数,数据加密过程以下:

杨书凡15.png

(1)通讯双方交换公钥(主要是把接收方的公钥传输给发送方)。

(2)发送方的×××网关经过公钥将明文数据M加密成为密文数据C。

(3)接收方的×××网关经过本身的私钥解密数据。整个过程私钥始终没有在网络中传输。

 

2)算法的优、缺点

    非对称加密算法的最大优点在于其安全性。目前为止,尚未任何一种方法能够在合理的时间范围内攻破该种算法。为了方便理解,在这里举例说明。

    假若有两个数字分别为25169和29663,若是要求将两个数相乘,能够轻松地得出答案:746588047。但若是给出的是74588047,要求猜出该数字是由哪两个数相乘得出的,就须要花费很长时间才可能得出答案。若是数字很大,那么可能花费一辈子的时间也难以得出答案,这就是非对称加密算法的安全性所在。更重要的是,私钥永远不可能被任何其余设备获得。

    非对称加密算法也不是天衣无缝的,因为其计算过程复杂,它的计算效率要比对称加密算法低不少(大约慢1500倍)。

 

3)DH算法

    经常使用的非对称加密算法有:RSA(使用三位数学家名字的首字母来命名)、DSA(digital signature algorithm,数字签名算法)、DH(diffie-hellman,迪菲赫尔曼)。前两种经常使用于验证功能,而DH通常被用来实现ipsec中的internet秘钥交换(IKE)协议。

    DH算法的原理与传统意义上的非对称加密算法有优势区别:通讯双方交换公钥后,会用本身的秘钥和对方的公钥经过DH算法计算出一个共享秘钥,而后双方会使用这个共享秘钥加密传输数据。从算法原理看,能够说DH算法已经将对称加密算法和非对称加密算法综合在一块儿。

    DH算法支持可变的秘钥长度,因为公钥和私钥的长度不一样,所以经过DH算法计算出的共享秘钥的有效长度也就不一样。这些都是经过DH算法的秘钥组定义的。Cisco的路由器只支持DH组一、2和5。其中DH组1的有效秘钥长度为768,DH组2的有效秘钥长度为1024,DH组5的有效秘钥长度为1536。秘钥的有效长度越长,安全性也就越强。同时CPU的资源占用率也就越高。所以,选择合适的DH组要从网络的安全需求和设备自己的性能两个方面考虑。

 

三、秘钥交换

    在探讨加密算法的过程当中,忽略了一个关键的问题:秘钥的交换。许多有经验的网络工程师使用对称加密算法加密数据时,都会担忧秘钥如何实现安全共享。

    一种解决方案就是带外共享,即通讯双方经过一张磁盘、一张纸或打一个电话方式实现秘钥的共享。这种方案最大的缺陷是实施过程花费的时间较长。若是管理的×××设备数量较多,或者公司对于秘钥的安全性要求较高,须要一小时更换一次秘钥,这种方案基本就不可能实施了。

    另外一种解决方案就是带内共享。即经过telnet、ssh等链接方式经过网络传输秘钥。这种方法能够提升共享秘钥的效率,但前提是必须保证传输秘钥的通道绝对安全,而传输秘钥自己就是为了创建一条安全的通道,这彷佛陷入一种死循环中。

    其实,解决这个问题并不困难,能够经过非对称加密算法(如前面提到的DH算法)加密对称加密算法的秘钥,在用对称加密算法加密实际要传输的数据。若是公司须要一小时更换一次秘钥,只需让非对称加密算法一小时从新计算一次便可,并且因为非对称加密算法的私钥不会在网络上传输,其安全性也可获得保障。


 

3、数据报文验证

    数据报文验证包括两个方面:数据来源验证(身份验证)和报文完整性验证。

一、HMAC功能实现验证功能

    在×××领域,对数据进行来源和完整性验证一般是借助散列算法实现的,HMAC(hash-based message authentication codes,散列消息代码)功能专门开发用来处理数据包相关的验证问题,它使用一个共享的对称秘钥来产生固定的输出结果——数字签名。HMAC属于单向散列算法(hash算法)的一个子集,区别于前面讲解的加密算法,散列算法是不可逆的,即加密后的数据是没法还原的。

    传统意义上的散列函数对于保障数据传输的安全性存在缺陷,即网上的窃听者能够截获传输的数据,而后篡改数据内容,并经过散列算法获得固定的输出,这样接收方就不可能知道有人篡改过数据。而HMAC功能让共享秘钥成为散列函数中的一个变量,经过计算获得固定的输出——数字签名,这样及时窃听者截获数据,因为没有共享秘钥,他没法再篡改后获得正确的数字签名,因此HMAC能够防篡改(完整性验证)。一样,因为共享秘钥只有真正的通讯双方具备,因此HMAC功能也能够实现身份验证。

杨书凡16.png

 

HMAC算法的原理以下:

1)双方共享执行hash算法的秘钥key。

2)路由器A的用户数据与共享秘钥key经过hash算法获得数字签名。

3)路由器A将数字签名和用户数据一同传输给路由器B。

4)路由器B执行相同的算法过程获得数字签名。

5)路由器B比对数字签名是否一致

 

    若是数据在传输过程当中被篡改或损坏,接收方经过HASH算法计算出来的数字签名就会和发送方的数字签名不一样,因而即可以得知数据的内容在传输过程当中被篡改。同理,若是窃听者想冒充一个通讯方,他虽然能够伪造通讯方的身份信息,但绝对没法伪造身份信息和共享秘钥计算后的数字签名。

 

二、MD5和SHA

    MD5和SHA是HMAC的两种经常使用算法,在包括×××的不少领域获得普遍应用。

    MD5(message-digest algorithm 5,信息-摘要算法)在RFC1321中有明确规定,它建立了一个128位的签名,是目前HMAC功能中应用最为普遍的一种算法。例如:之前咱们讲过的RIPV2,OSPF等不少路由选择协议都使用该算法作验证。MD5执行速度较快,但其安全性相对SHA稍差一点。

    SHA(secure hash algorithm,安全散列算法)是由NIST(美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)直属美国商务部)开发的,且已成为美国国家标准,通常成为SHA-1,它能够产生160位的签名(20字节的长度)。

    目前,已有人证实不一样的输入数值经过MD5计算能够获得相同的数字签名,说明MD5的签名可能具备必定程度的虚假性。SHA也出现相似的问题,而且有人宣称数字签名理论上是能够伪造的。由于存在这种安全隐患,如今已经开发了SHA-256和SHA-512等(有时统称为SHA-2),它们具备更长的签名长度,对于目前的计算机水平来讲,能够消除上述安全隐患。

 

4、IPSEC ×××

    IPSEC技术实现×××是目前较为普遍的一种应用,本节将探讨IPSEC的创建过程及配置方法,实际工做中可能会遇到多个厂家的设备,有时须要网络工程师分析分体、排除故障,所以,除了查阅各厂商的专业文档外,了解×××创建的各个阶段也是尤其重要的。

一、IPSec链接

    对等体之间创建IPSec ×××的链接须要三个步骤。

1)流量触发IPSec

通常来讲,IPSec创建过程是由对等体之间发送的流量触发的,一旦有×××流量通过×××网关,链接过程便开始创建了。固然,手工配置也能够实现这一过程。在配置设备实现此步骤前,网络工程师须要明确哪些流量须要被“保护”。

 

2)创建管理链接

IPSec使用ISAKMP/IKE阶段1来构建一个安全的管理连结。这里须要注意的是,这个管理链接只是一个准备工做,它不被用来传输实际的数据。在配置设备实现此步骤前,网络工程师须要明确设备如何实现验证,使用何种加密及认证算法,使用哪一种DH组等问题。

 

3)创建数据链接

IPSec基于安全的管理链接协商创建安全的数据链接,而ISAKMP/IKE阶段2就是用来完成这个任务的,数据链接用于传输真正的用户数据。在配置设备实现此步骤前,网络工程师须要明确使用何种安全协议,针对具体的安全协议应使用加密或验证算法,以及数据的传输模式(隧道模式或传输模式)等问题。

通过IPSec创建的三部曲后,×××流量即可以按照协商的结果被加密/解密了。可是×××链接并非一次性的,不管是管理链接仍是数据链接都有一个生存周期与之关联,一旦到期链接便会被终止。若是须要继续传输×××数据,链接须要从新被构建,这种设计主要是出于安全性的考虑的。


 

二、ISAKMP/IKE阶段1

    ISAKMP描述了秘钥管理的架构,它定义了消息的格式和秘钥交换协议的机制,以及构建链接的协商过程。而IKE是一个混合型的协议,它定义了秘钥的产生、共享和管理。IKE使用UDP端口500,通常来讲,ISAKMP和IKE关键字可互换使用。

    ISAKMP/IKE阶段1的交换过程有两个模式:主模式和积极模式。积极模式比主模式快,主模式比积极模式安全。

不管×××的类型是站点到站点仍是远程访问,都须要完成三个任务。

(1)协商采用何种方式创建管理链接。

杨书凡17.png


(2)经过DH算法共享秘钥信息。

杨书凡18.png

(3)对等体彼此进行身份验证。

杨书凡19.png

    在主模式中,这三个任务是经过六个数据报文完成的:前两个数据包用于协商对等体间的管理链接使用何种安全策略(交换ISAKMP/IKEc传输集);中间的两个数据包经过DH算法产生并交换加密算法和HMAC功能所需的秘钥,最后两个数据包使用预共享秘钥等方式执行对等体间的身份验证。这里须要注意的是,前四个报文为明文传输,从第5个数据报文开始为密文传输,而前四个数据包经过各类算法最终产生的秘钥用于第五、地6个数据包及后续数据的加密。

 

一、ISAKMP/IKE阶段1创建过程:

1)交换ISAKMP/IKE传输集

* ISAKMP/IKE传输集就是一组用来保护管理链接的安全措施,有些书籍称之为IKE策略或ISAKMP策略,它主要包括如下几个方面。

* 加密算法:DES,3DES或AES。

* HMAC功能:MD5或SHA-1。

* 设备验证的类型:预共享秘钥(也可使用RSA签名等方法)。

* Diffie-Hellman秘钥组:cisco支持一、二、五、7(cisco的路由器不支持秘钥组7)。

* 管理链接的生存周期。

 

    设备可能会有不止一个传输集,若是设备发起来接,它会将传输集列表(包括全部传输集)发送到远端对等体设备进行依次对比,直到找到匹配的结果。若是对比全部传输集后没有发现匹配的传输集,管理链接将没法创建,ipsec链接失败。例如,两端设备都只有一个传输集,且一端配置DES加密算法,另外一端配置了3DES加密算法,就会致使IPSEC创建失败。若是给其另外一端多配置一个传输集使用DES算法,对等体会自动找到与之匹配的传输集,管理链接便会创建起来。

    若是使用cisco产品实现×××链接,在ISAKMP/IKE传输集中除了生存周期,其余项必须匹配才能创建链接。若是对等图之间的生存周期不一样,对等体会使用双方生存周期数值较小的一个。这一样是ipsec的规则。但有些厂商没有遵循这一规则,所以若是遇到cisco与其余厂商设备构建ipsec链接时,应注意确保ISAKMP/IKE传输集中全部参数的匹配。

 

2)经过DH算法实现秘钥交换

    第一步只是协商管理链接的安全策略,而共享秘钥的产生与交换就要经过Diffie-Hellman来实现。

    DH算法属于非对称加密算法,所以它将产生公钥和私钥对的组合,且彼此共享公钥。×××对等体用对方的公钥和本身的私钥经过一种功能运算产生一个安全的共享秘钥,即便有人截获数据,也会由于没有私钥而没法对出共享秘钥。

 

3)实现设备之间的身份验证

    设备身份验证时最常使用的方法就是预共享秘钥,即在对等体之间经过带外的方式共享秘钥,并存储在设备的本地。设备验证的过程能够经过加密算法或HMAC功能两种方法实现,而加密算法不多用于身份验证,多数状况都会经过HMAC功能实现。

 

二、ISA/KMP/IKE阶段1相关配置命令

1)配置安全策略

    ISAKMP/IKE策略包含如下参数:策略的序列号、加密算法、验证方法、DH组、生存周期。配置命令以下。(用于加密和验证阶段1第五、6个数据包)

Router(config)# crypto isakmp policy { 1-10000 }    #创建ISAKMP/IKE管理链接策略,序列号越低,优先级越高
Router(config-isakmp)# encryption { des | 3des | aes }   #指定加密算法
Router(config-isakmp)# hash { sha | md5 }                #指定验证过程采用HMAC的验证功能
Router(config-isakmp)# authentication pre-share          #采用预共享密钥方式进行身份验证
Router(config-isakmp)# group { 1 | 2 | 5 }      #指定DH算法的密钥长度,默认为1,组号越大,算法越安全,占用设备资源越多        
Router(config-isakmp)# lifetime 86400           #指定管理链接的生存周期,默认86400s(24小时)
Router# show crypto isakmp policy            #查看上述配置


2)配置预共享秘钥

    经过下述命令配置预共享秘钥。

Router(config)# crypto isakmp key { 0 | 6 } keystring address peer-address {subnet_mask}
参数解释:
0表示秘钥为明文,6表示秘钥被加密
Keystring表示秘钥的具体内容
Peer-address表示对端与之共享秘钥的对等体设备地址
Subnet_mask:这里为可选命令,若是没有指定,默认将使用255.255.255.255做为掩码

Router# show crypto isakmp key    #查看密钥,秘钥处于明文和密文时,命令显示内容的差别


    经过show run信息看到的秘钥配置中仍然显示明文的密码。

    为了加强安全性,在IOS12.3(2)T版本中,增长了一个选项来加密秘钥,可是要求设备的IOS镜像必须支持AES加密,具体命令以下

Router(config)#key config-key password-encrypt
New key:                         #输入的秘钥至少为8个字母                 
Confirm key:                     #确认密钥                
Router(config)#password encryption aes



 

 

5、ISAKMP/IKE阶段2

    ISAKMP/IKE阶段2主要是在两个ipsec对等体间创建数据链接,其主要完成如下任务。

(1)定义对等体间须要保护何种流量。

(2)定义用来保护数据的安全协议。

杨书凡20.png

(3)定义传输模式。

(4)定义数据链接的生存周期及秘钥刷新的方式。

(5)其中,ipsec对等体通常是经过ACL来匹配那些须要加密传输的×××流量。

 

一、ISAKMP/IKE阶段2的创建过程

1)安全关联(sa)

Ipsec须要在两个对等体之间创建一条逻辑链接,这就要使用一个被称为安全关联的信令协议,这是由于ipsec须要无链接的IP协议在安全运行以前要成为面向链接的协议。SA的链接是在源点和终点之间的单向链接,若是须要双向链接,就须要两个SA链接,每一个方向一个。SA链接由三个要素定义。

*  安全参数索引(SPI):用于惟一表示每条SA链接。

* 安全协议的类型:IPSEC定义了两种安全协议,即AH和ESP。

* 目的IP地址。

ISAKMP/IKE阶段2具备这种特性,即ISAKMP/IKE的数据链接实际是经过两个单向链接创建的,而两个链接采用的加密或者认证方式都是相同的。这就使ISAKMP/IKE阶段2的这个特性不易被观察到。

 

2)ISAKMP/IKE阶段2的传输集

数据链接的传输集顶一个数据链接时如何被保护的。与管理链接的传输集相似。对等体设备能够保存一个或多个传输集,但其具体内容却彻底不一样。

* 安全协议:AH协议,ESP协议。

* 链接模式:隧道模式,传输模式。

* 加密方式:对于ESP而言,有DES、3DES、AES、AES-19二、AES-256或不使用加密算法。

* 验证方式:MD5或SHA-1。

 

3)ISAKMP/IKE阶段2的安全协议

    IPSEC的数据链接能够经过安全协议实现对数据链接的保护:AH协议和ESP协议。能够经过其中的一个协议来实现数据的加密和验证,如使用ESP协议,也可使用两个协议一块儿来实现。AH使用IP协议号51,ESP使用IP协议号50。

AH(认证头协议)在RFC 2402中有明肯定义。

* 数据完整性服务。

* 数据验证。

* 保护数据回放***。


    AH协议保护整个数据报文,但易变的字段除外,如IP包头中的TTL和TOS字段。

杨书凡21.png

* 下一个头:这个八位字段定义了IP数据报文携带的有效载荷类型(TCP,UDP,ICMP,OSPF等),它与封装前IP首部中的协议字段功能同样。

* 有效载荷长度:这个八位字段的功能与字面意思不一样,它并不定义有效载荷的长度,实际只定义了AH头部的长度。

* 安全参数索引(SPI):这个32字段是由接收端设备分配的一个数字,用来惟一表示一条单向链接,能够提供超过1亿种标识号码。

* 序列号:这个32位字段对于数据报文提供排序信息,用来防止重放***。即便数据报文重传,该序列号也不会重复,并且当须要到达232也不会回绕,而必须从新创建新的链接。

* 完整性校验和(ICV):这个字段提供验证功能,它就是MD5或SHA等HMAC功能产生的数字签名。AH的ICV值是完整的IP数据报文产生的数字签名,也就是说,它对整个IP数据报文进行完整性校验。

    从报文结果不难发现,AH协议只能实现验证功能,而并未提供任何形式的数据加密,并且正由于其对整个IP数据报文实现验证功能,因此他与NAT或PAT不能一块儿使用。

 

    ESP在RFC2406中有明肯定义,它与AH区别以下:

(1)ESP对用户数据实现加密功能。

(2)ESP只对IP数据的有效载荷进行验证,不包括外部的IP包头。

 

    所以,若是有***对IP包头内容进行篡改,ESP是没法检测到的。这一点一点却使ESP能够和NAT一块儿共用。可是,不管是ESP仍是AH都没法和PAT一块儿使用,这是因为PAT要修改第四层的数据包头。

杨书凡22.png

* ESP头部:SPI字段、序列号与AH报文结构中对应的字段的功能相似。

* ESP尾部:补丁用于减小有效载荷被窃听并被猜想的可能性:补丁长度定义了补丁字节数。下一个头与AH报文结构中对应字段的功能相似。ICV依然提供验证功能,可是ICV只是ip数据报文的有效载荷经过HMAC功能产生的数字签名。

    另外,ESP协议加密功能的实现与采用何种链接模式相关。

 

二、ISAKMP/IKE阶段2的配置命令

    ISAKMP/IKE阶段2的配置过程有三个部分组成。

1)配置Crypto ACL

    定义何种流量须要被保护的一种方法就是创建一个crypto ACL,经过ACL匹配ipsec ***流量,其中,permit语句指定了须要被保护的流量,而deny语句定义了不须要保护的流量。一般状况,两端对等体设备上的crypto ACL互为镜像,不然阶段2的链接创建就会失败。配置命令以下:

Router(config)# access-list number{ deny | permit } protocol source mac destination mac


 

2)配置阶段2的传输集

    在ipsec对等体之间能够配置多个数据链接的传输集,必须保证两端至少有一对匹配的传输集,这样ISAKMP/IKE阶段2的数据SA链接才能协商成功。设备的传输集由设备性能决定,若是全部对等体设备的性能相近,则共同使用一种传输集便可,若是设备间性能差别较为明显,一般就须要多个传输集了。配置名另以下。

Router(config)# crypto ipsec transform-set transform_set_name transform1[transform2[transform3]

参数解释:
Transform_set_name:为传输集名称,该名称具备惟一性,不能与任何其余传输集相同
Transform1:传输集选项,参考下表:

AH

ESP验证

ESP加密

ah-md5-hmac

ah-sha-hmac

esp-md5-hmac

esp-sha-hmac

esp-null

esp-des

esp-3des

esp-aes 128

esp-aes 192

esp-aes 256

Router(cfg-crypto-tran)# mode { tunnel | transport }   #定义传输模式,默认为隧道模式

   要想查看路由器上的传输集,使用show crypto ipsec transform-set命令。

 

    若是在数据链接创建以后修改传输集的配置,并不会影响现有的SA设置,只有链接的生存周期到期,SA才会从新创建链接或者SA被手动清除(经过clear crypto sa或clear crypto ipsec sa命令)。

 

3)配置crypto map

    Crypto map的功能就是将全部的信息组织在一块儿构建ipsec会话。一般路由器的接口上只对应一个crypto map,一台路由器能够在多个接口上实现流量保护,这时可能就须要多个crypto map了。

    Crypto map有两种类型:静态的crypto map和动态的crypto。在构建L2L会话时一般会使用静态的,具体配置命令以下。

Router(config)# crypto map map_name seq_num ipsec-isakmp    #seq_num为map序列号,范围1-65535,值越小,优先级越高
Router(config-crypto-m)# match address ACL_name_or_num      #调用ACL的名字或编号
Router(config-crypto-m)# set peer { hostname| IP_address}       #指定对等体设备,即配置的设备与谁创建链接
Router(config-crypto-m)# set transform-set transform_set_name1   #指定传输集的名称,最多能够列出六个传输集的名称

Router(config-crypto-m)# set pfs [ group1 | group2 | group5 ]  
Router(config-crypto-m)# set security-association lifetime {seconds seconds| kilobytes kilobytes}
Router(config-crypto-m)# set security-association idle-time seconds

命令解释:

* Set PFS:(PFS:perfect forward secrecy,完美转发保密)保证两个阶段中的秘钥只能使用一次,进一步加强了安全性,但使用PFS可能占用设备更多的资源。Set pfs命令用于启用这项功能并指定使用哪一个DH秘钥组,这是一条可选命令。

* Set security-association lifetime:用于指定SA的生存周期。默认状况下,cisco的设备已经设定数据链接的生存周期为3600s或4608000KB,至关于一小时内以10Mb/s速率传输的流量。生存周期的阈值是由时间和流量两个方面的因素决定的。且至关于任何一项到达阈值的限制时,SA就会被从新协商创建。

    若是在IPSEC对等体之间只设置lifetime,即便没有ipsec流量传递,SA也始终处于激活状态,若是在×××设备上配置了不少ipsec链接,这些暂时没有实际意义的SA就会占用设备的内存和CPU资源。从IOS12.2(15)T开始,cisco为数据SA引入空闲超时计时器,若是没有流量经过SA传输,SA就会被设备自动删除。

* Set security-association idle-time命令用于设定空闲超时计数器,范围为60-86400s。默认状况下,空闲超时计时器是关闭的。

 

 




IPSec ×××综合案例

    某软件开发公司为了下降人员成本,在中小城市创建了分支公司,可是分支公司上传给总公司的数据通常为软件开发的关键业务数据,若是其被窃取,可能给公司带来难以预计的损失。做为该分支公司的网络管理员,对网络提出如下设计需求。


(1)分支公司开发项目小组所在网络地址为172.16.10.0/24,该网络的主机能够经过***访问总公司开发数据服务器(10.10.33.0/24),但不能访问internet。

(2)分支公司的其余客户端(同属于172.16.0.0/16网段)能够访问internet。

   根据上述需求能够明显看出,网络管理员须要在分支公司的网关路由器上同时配置***和PAT。

杨书凡23.png 


 

在GNS3上实验拓扑以下图:

杨书凡24.png

 

在3sw上的配置

3sw#vlan database    #建立VLAN
3sw(vlan)#vlan 10
3sw(vlan)#vlan 20
3sw(vlan)#exit
3sw#conf t
3sw(config)#int vlan 10   #配置VLAN地址
3sw(config-if)#ip add 172.16.10.254 255.255.255.0
3sw(config-if)#no sh
3sw(config-if)#int vlan 20
3sw(config-if)#ip add 172.16.20.254 255.255.255.0
3sw(config-if)#no sh
3sw(config-if)#int f1/0
3sw(config-if)#no switchport 
3sw(config-if)#ip add 192.168.1.2 255.255.255.252

3sw(config)#int f1/1
3sw(config-if)#switchport access vlan 10
3sw(config-if)#int f1/2
3sw(config-if)#switchport access vlan 20
3sw(config-if)#exit

3sw(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1  #配置路由

           

在分公司R1的配置以下:

R1#conf t
R1(config)#int f0/0           #配置接口地址
R1(config-if)#ip add 192.168.1.1 255.255.255.252
R1(config-if)#no sh
R1(config-if)#int f0/1
R1(config-if)#ip add 100.0.0.1 255.255.255.252
R1(config-if)#no sh

R1(config)#ip route 0.0.0.0 0.0.0.0 100.0.0.2   #配置路由
R1(config)#ip route 172.16.0.0 255.255.0.0 192.168.1.2

R1(config)#access-list 1 deny 172.16.10.0 0.0.0.255       #配置NAT
R1(config)#access-list 1 permit 172.16.0.0 0.0.255.255
R1(config)#ip nat inside source list 1 interface f0/1 overload 
R1(config)#int f0/0
R1(config-if)#ip nat inside 
R1(config)#int f0/1
R1(config-if)#ip nat outside 

R1(config)#crypto isakmp policy 1      #配置ISAKMP策略
R1(config-isakmp)#encryption 3des      #配置加密算法
R1(config-isakmp)#hash sha             #配置数字签名
R1(config-isakmp)#authentication pre-share  #采用预共享密钥
R1(config-isakmp)#group 2                   #指定DH密钥组
R1(config-isakmp)#lifetime 10000            #设定生存周期
R1(config)#crypto isakmp key 6 ***key address 200.0.0.1     #配置预共享密钥

R1(config)#access-list 100 permit ip 172.16.10.0 0.0.0.255 10.10.33.0 0.0.0.255   #ACL
R1(config)#crypto ipsec transform-set ***-set esp-des ah-sha-hmac   #配置IPSec变换集
R1(cfg-crypto-trans)#exit 
R1(config)#crypto ipsec security-association lifetime seconds 1800  #设定生存周期

R1(config)#crypto map ***-map 1 ipsec-isakmp        #配置加密映射
R1(config-crypto-map)#set peer 200.0.0.1            #配置IPSec对等体设备
R1(config-crypto-map)#set transform-set ***-set     #应用IPSec变换集
R1(config-crypto-map)#match address 100             #应用ACL

R1(config)#int f0/1                #将其映射到接口
R1(config-if)#crypto map ***-map


在ISP上配置: 

ISP#conf t
ISP(config)#int f0/0
ISP(config-if)#ip add 100.0.0.2 255.255.255.252
ISP(config-if)#no sh
ISP(config-if)#int f0/1
ISP(config-if)#ip add 200.0.0.2 255.255.255.252
ISP(config-if)#no sh

 

在总公司R2的配置: 

R3#conf t
R3(config)#int f0/0
R3(config-if)#ip add 200.0.0.1 255.255.255.252
R3(config-if)#no sh
R3(config-if)#int f0/1
R3(config-if)#ip add 10.10.33.254 255.255.255.0
R3(config-if)#no sh
R3(config)#ip route 0.0.0.0 0.0.0.0 200.0.0.2

R3(config)#crypto isakmp policy 1
R3(config-isakmp)#encryption 3des
R3(config-isakmp)#hash sha
R3(config-isakmp)#authentication pre-share 
R3(config-isakmp)#group 2
R3(config-isakmp)#lifetime 10000    
R3(config)#crypto isakmp key 6 ***key address 100.0.0.1

R3(config)#access-list 100 permit ip 10.10.33.0 0.0.0.255 172.16.10.0 0.0.0.255        
R3(config)#crypto ipsec transform-set ***-set esp-des ah-sha-hmac 
R3(cfg-crypto-trans)#exit 
R3(config)#crypto ipsec  security-association lifetime seconds 1800

R3(config)#crypto map ***-map 1 ipsec-isakmp 
R3(config-crypto-map)#set peer 100.0.0.1
R3(config-crypto-map)#set transform-set ***-set
R3(config-crypto-map)#match address 100

R3(config)#int f0/0
R3(config-if)#crypto map ***-map


验证IPSec ×××

R1#show crypto isakmp policy      #显示ISKMP协商策略的配置结构 
R1#show crypto isakmp sa          #查看管理链接SA的状态
R1#show crypto ipsec transform-set   #查看IPSec变换集 
R3#show crypto ipsec security-association lifetime   #显示数据链接的生存周期
R1#show crypto ipsec sa          #查看数据链接SA的细节信息 
R1#show crypto map               #查看Crypto Map的信息