IPSec概述

本章将详细介绍secpath防火墙ipsec功能的配置,此时的secpath完全可以等同为路由器来看待,在文中我们将沿用路由器方面的术语和标识来描述secpath,即本章所提及的路由器均可使用secpath来取代。

1.1    ipsec
协议简介

   ipsec
ip security)协议族是ietf制定的一系列协议,它为ip数据报提供了高质量的、可互操作的、基于密码学的安全性。特定的通信方之间在ip层通过加密与数据源验证等方式,来保证数据报在网络上传输时的私有性、完整性、真实性和防重放。

私有性(confidentiality)指对用户数据进行加密保护,用密文的形式传送。

完整性(data integrity)指对接收的数据进行验证,以判定报文是否被篡改。

真实性(data authentication)指验证数据源,以保证数据来自真实的发送者。

防重放(anti-replay)指防止恶意用户通过重复发送捕获到的数据包所进行的***,即接收方会拒绝旧的或重复的数据包。

   ipsec
通过ahauthentication header,认证头)和espencapsulating securitypayload,封装安全载荷)两个安全协议实现了上述目标。为简化ipsec的使用和管理,ipsec还可以通过ikeinternet key exchange,因特网密钥交换协议)进行自动协商交换密钥、建立和维护安全联盟的服务,以简化ipsec的使用和管理。

   (1)ah
协议

   ah
是报文头验证协议,主要提供的功能有数据源验证、数据完整性校验和防报文重放功能;然而,ah并不加密所保护的数据报。

   (2)esp
协议

   esp
是封装安全载荷协议。它除提供ah协议的所有功能外(但其数据完整性校验不包括ip头),还可提供对ip报文的加密功能。

   ah
esp可以单独使用,也可以同时使用。对于ahesp,都有两种操作模式:传输模式和隧道模式。工作模式将在后文介绍。

   (3)ike
协议

   ike
协议用于自动协商ahesp所使用的密码算法,并将算法所需的必备密钥放到恰当位置。

   ike
协商并不是必须的,ipsec所使用的策略和算法等也可以手工协商。关于两种协商方式的比较,将在后文介绍。

1. 2  ike
协议简介

   1. ike
协议

   ipsec
的安全联盟可以通过手工配置的方式建立,但是当网络中节点增多时,手工配置将非常困难,而且难以保证安全性。这时就要使用ikeinternet key exchange,因特网密钥交换)自动地进行安全联盟建立与密钥交换的过程。

   ike
协议是建立在由internet安全联盟和密钥管理协议isakmpinternet securityassociation and key management protocol)定义的框架上。它能够为ipsec提供了自动协商交换密钥、建立安全联盟的服务,以简化ipsec的使用和管理。

   ike
具有一套自保护机制,可以在不安全的网络上安全地分发密钥、验证身份、建立ipsec安全联盟。

   2. ike
的安全机制

   dh
diffie-hellman)交换及密钥分发。diffie-hellman算法是一种公共密钥算法。通信双方在不传送密钥的情况下通过交换一些数据,计算出共享的密钥。加密的前提是交换加密数据的双方必须要有共享的密钥。ike的精髓在于它永远不在不安全的网络上直接传送密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥。即使第三者(如***)截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。

完善的前向安全性(perfect forward secrecypfs)。pfs是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。pfs是由dh算法保障的。

身份验证。身份验证确认通信双方的身份。对于pre-shared key验证方法,验证字用来作为一个输入产生密钥,验证字不同是不可能在双方产生相同的密钥的。验证字是验证双方身份的关键。

身份保护。身份数据在密钥产生之后加密传送,实现了对身份数据的保护。

   3. ike
的交换阶段

   ike
使用了两个阶段为ipsec进行密钥协商并建立安全联盟:第一阶段,通信各方彼此间建立了一个已通过身份验证和安全保护的通道,此阶段的交换建立了一个isakmp安全联盟,即isakmp sa(也可称ike sa);第二阶段,用在第一阶段建立的安全通道为ipsec协商安全服务,即为ipsec协商具体的安全联盟,建立ipsec saipsec sa用于最终的ip数据安全传送。



   (1)
当一个报文从某接口外出时,如果此接口应用了ipsec,会进行安全策略的匹配。

   (2)
如果找到匹配的安全策略,会查找相应的安全联盟。如果安全联盟还没有建立,则触发ike进行协商。ike首先建立阶段1的安全联盟,即ike sa

   (3)
在阶段1安全联盟的保护下协商阶段2的安全联盟,即ipsec sa

   (4)
使用ipsec sa保护通讯数据。

   4. ike
的协商模式

rfc2409the internet keyexchange)中规定,ike第一阶段的协商可以采用两种模式:主模式(main mode)和野蛮模式(aggressive mode)。

主模式被设计成将密钥交换信息与身份、认证信息相分离。这种分离保护了身份信息;交换的身份信息受已生成的diffie-hellman共享密钥的保护。但这增加了3条消息的开销。

野蛮模式则允许同时传送与sa、密钥交换和认证相关的载荷。将这些载荷组合到一条消息中减少了消息的往返次数,但是就无法提供身份保护了。

虽然野蛮模式存在一些功能限制,但可以满足某些特定的网络环境需求。例如:远程访问时,如果响应者(服务器端)无法预先知道发起者(终端用户)的地址、或者发起者的地址总在变化,而双方都希望采用预共享密钥验证方法来创建ike sa,那么,不进行身份保护的野蛮模式就是唯一可行的交换方法;另外,如果发起者已知响应者的策略,或者对响应者的策略有全面的了解,采用野蛮模式能够更快地创建ike sa

1.3 ipsec
基本概念

   1.
安全联盟

   ipsec
在两个端点之间提供安全通信,端点被称为ipsec对等体。

   ipsec
能够允许系统、网络的用户或管理员控制对等体间安全服务的粒度。例如,某个组织的安全策略可能规定来自特定子网的数据流应同时使用ahesp 进行保护,并使用3destriple data encryptionstandard,三重数据加密标准)进行加密;另一方面,策略可能规定来自另一个站点的数据流只使用esp保护,并仅使用des加密。通过sa security association,安全联盟),ipsec能够对不同的数据流提供不同级别的安全保护。

安全联盟是ipsec的基础,也是ipsec的本质。sa是通信对等体间对某些要素的约定,例如,使用哪种协议(ahesp还是两者结合使用)、协议的操作模式(传输模式和隧道模式)、加密算法(des3des)、特定流中保护数据的共享密钥以及密钥的生存周期等。

安全联盟是单向的,在两个对等体之间的双向通信,最少需要两个安全联盟来分别对两个方向的数据流进行安全保护。同时,如果希望同时使用ahesp来保护对等体间的数据流,则分别需要两个sa,一个用于ah,另一个用于esp

安全联盟由一个三元组来唯一标识,这个三元组包括spisecurity parameter index,安全参数索引)、目的ip地址、安全协议号(ahesp)。spi是为唯一标识sa而生成的一个32比特的数值,它在ahesp头中传输。

安全联盟具有生存周期。生存周期的计算包括两种方式:

以时间为限制,每隔指定长度的时间就进行更新;

以流量为限制,每传输指定的数据量(字节)就进行更新。

   2.
安全联盟的协商方式

可以有两种协商方式建立安全联盟,一种是手工方式(manual),一种是ike自动协商(isakmp)方式。前者配置比较复杂,创建安全联盟所需的全部信息都必须手工配置,而且ipsec的一些高级特性(例如定时更新密钥)不被支持,但优点是可以不依赖ike而单独实现ipsec功能。而后者则相对比较简单,只需要配置好ike协商安全策略的信息,由ike自动协商来创建和维护安全联盟。

当与之进行通信的对等体设备数量较少时,或是在小型静态环境中,手工配置安全联盟是可行的。对于中、大型的动态网络环境中,推荐使用ike协商建立安全联盟

   3. ipsec
协议的操作模式

   ipsec
协议有两种操作模式:传输模式和隧道模式。sa中指定了协议的操作模式。

在传输模式下,ahesp被插入到ip头之后但在所有传输层协议之前,或所有其他ipsec协议之前。在隧道模式下,ahesp插在原始ip头之前,另外生成一个新头放到ahesp之前。不同安全协议在传输模式和隧道模式下的数据封装形式(传输协议以tcp为例)如下图所示:

190145281.jpg

传输模式

190145113.jpg

隧道模式

从安全性来讲,隧道模式优于传输模式。它可以完全地对原始ip数据报进行验证和加密;此外,可以使用ipsec对等体的ip地址来隐藏客户机的ip地址。从性能来讲,隧道模式比传输模式占用更多带宽,因为它有一个额外的ip头。因此,到底使用哪种模式需要在安全性和性能间进行权衡。

   4.
验证算法与加密算法

   (1)
验证算法

   ah
esp都能够对ip报文的完整性进行验证,以判别报文在传输过程中是否被篡改。验证算法的实现主要是通过杂凑函数,杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。ipsec对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。一般来说 ipsec使用两种验证算法:

   md5
md5通过输入任意长度的消息,产生128bit的消息摘要。

   sha-1
sha-1通过输入长度小于264次方比特的消息,产生160bit的消息摘要。

   sha-1
的摘要长于md5,因而是更安全的。

   (2)
加密算法

   esp
能够对ip报文内容进行加密保护,防止报文内容在传输过程中被窥探。加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。一般来说ipsec使用两种加密算法:

   des
:使用56bit的密钥对一个64bit的明文块进行加密。

   3des
:使用三个56bitdes密钥(共168bit密钥)对明文进行加密。

无疑,3des具有更高的安全性,但其加密数据的速度要比des慢得多。

  1.4 ipsec
nat穿越

   1. nat
穿越(nat traversal

   ipsec
的一个主要应用是建立***,但在实际组网应用中,有一种情况会对部署ipsec ***网络造成障碍:如果发起者位于一个私网内部,而它希望在自己与远端响应者之间直接建立一条ipsec隧道;这就涉及到ipsecnat的配合,主要问题在于,ike在协商过程中如何发现两个端点之间存在nat网关,以及如何使esp报文正常穿越nat网关。

首先,建立ipsec隧道的两端需要进行nat穿越能力协商,这是在ike协商的前两个消息中进行的,通过vendor id载荷指明的一组数据来标识,该载荷数据的定义与所采用草案(draft)版本的不同而不同。

nat网关发现是通过nat-d载荷来实现的,该载荷用于两个目的:在ike peer之间发现nat的存在;确定nat设备在peer的哪一侧。nat侧的peer作为发起者,需要定期发送nat-keepalive报文,以使nat网关确保安全隧道处于激活状态。

   2. ipsec
穿越nat的处理

   ipsec
穿越nat,简单来说就是在原报文的ip头和esp头(不考虑ah方式)间增加一个标准的udp报头。这样,当esp报文穿越nat网关时, nat对该报文的外层ip头和增加的udp报头进行地址和端口号转换;转换后的报文到达ipsec隧道对端时,与普通ipsec处理方式相同,但在发送响应报文时也要在ip头和esp头之间增加一个udp报头。

1.5 ipsec
secpath上的实现

   1. ipsec
secpath上的实现

   secpath
实现了上述所介绍的ipsec的全部内容。

其实现方式是基于下列思路:通过ipsec,对等体之间(此处是指secpath及其对端)能够对不同的数据流实施不同的安全保护(验证、加密或两者同时使用)。其中数据流的区分通过配置acl来进行;安全保护所用到的安全协议、验证算法和加密算法、操作模式等通过配置安全提议来进行;数据流和安全提议的关联(即定义对何种数据流实施何种保护)、sa的协商方式、对等体ip地址的设置(即保护路径的起/终点)、所需要的密钥和sa的生存周期等通过配置安全策略来进行;最后在路由器接口上实施安全策略即完成了ipsec的配置。

具体介绍如下:

   (1)
定义被保护的数据流

数据流是一组流量(traffic)的集合,由源地址/掩码、目的地址/掩码、ip报文承载的协议号、源端口号、目的端口号等来规定。一个数据流用一个 acl来定义,所有匹配一个访问控制列表规则的流量,在逻辑上作为一个数据流。一个数据流可以小到是两台主机之间单一的tcp连接;也可以大到是两个子网之间所有的流量。ipsec能够对不同的数据流施加不同的安全保护,因此ipsec配置的第一步就是定义数据流。

   (2)
定义安全提议

安全提议规定了对要保护的数据流所采用的安全协议、验证或加密算法、操作模式(即报文的封装方式)等。

   secpath
支持的ahesp安全协议,两者既可单独使用,也可联合使用。其中,ah支持md5sha-1验证算法;esp协议支持md5sha-1验证算法和des3des加密算法。secpath支持的操作模式包括传输模式和隧道模式。

对同一数据流,对等体两端必须设置相同的协议、算法和操作模式。另外,对于两个安全网关(例如路由器间)实施ipsec,建议采用隧道模式,以隐藏实际通信的源和目的ip地址。

因此,请先根据需要配置好一个安全提议,以便下一步将数据流和安全提议相关联。

   (3)
定义安全策略或安全策略组

安全策略规定了对什么样的数据流采用什么样的安全提议。一条安全策略由名字顺序号共同唯一确定。安全策略分为手工安全策略和ike协商安全策略,前者需要用户手工配置密钥、spisa的生存周期等参数,在隧道模式下还需要手工配置安全隧道两个端点的ip地址;后者则由ike自动协商生成这些参数。

安全策略组是所有具有相同名字、不同顺序号的安全策略的集合。在同一个安全策略组中,顺序号越小的安全策略,优先级越高。

   (4)
接口实施安全策略

在接口上应用安全策略组,安全策略组中的所有安全策略同时应用在这个接口上,从而实现对流经这个接口的不同的数据流进行不同的安全保护。

   2. ike
secpath上的实现

   secpath
支持ike的主模式和野蛮模式,并基于rfc2408rfc2409实现,能够与大多数主流设备厂商互通。

目前,secpath上的ipsec,如果需要进行nat穿越,则ike第一阶段协商应采用野蛮模式,对端id类型为对端名称,并在配置ipsec的安全提议时,安全协议采用esp,还需要以隧道模式(tunnel)封装报文。

   secpath
ike的实现步骤如下:

设置ike交换过程中所使用的本地id

指定对端(ike peer)的一系列属性(包括ike协商模式、预共享密钥值、对端地址或对端id、是否需要进行nat穿越等属性),以保证ike协商阶段的正确性;

创建ike安全提议,以确定ike交换过程中算法的强度,即安全保护的强度(包括身份验证方法、加密算法、验证算法、dh组等):不同的算法的强度不同,强度越高的算法,受保护数据越难被破解,但消耗的计算资源越多。一般来说,密钥越长的算法强度越高;

此外,除上述基本步骤外,ike还具有keepalive机制,可以判断对端是否能够正常通讯,因此还可配置keepalive“interval”“timeout”两个参数。当配置了ipsecnat穿越时,还可配置发送nat更新报文的时间间隔。

当上述ike配置完毕后,需要在ipsec的安全策略视图下引用ike peer,以完成了自动协商的ipsec的配置。(ipsec引用ike peer已经在上一章中介绍)

1.6 ipsec
在加密卡硬件上的实现

   1. ipsec
在加密卡硬件上的实现

   ipsec
加密卡在实现了上述全部功能的基础上,还扩展了部分功能。

ipsec加密卡的加密算法,采用aes,即使用128bit的密钥对明文进行加密。

上述特性涉及的配置命令完成的功能只在加密卡硬件存在时生效,对于无加密卡或者用户指定使用纯软件处理ipsec特性时,不提供上述功能。

加密卡进行加密/解密的工作过程是:

   (1)
防火墙主机将需要加密/解密的数据发送给加密卡

   (2)
加密卡对数据进行加密/解密运算

   (3)
加密卡将完成加密/解密的数据发送回主机

   (4)
主机对加密卡处理后的数据进行后续处理

目前的加密卡,是即插即用型。当加密卡被拔出或失效后,便会自动切换回软件处理加密/解密。

加密卡与vrp主体软件ipsec模块对数据的处理机制完全相同,区别仅仅在于加密卡是通过硬件实现加密/解密处理,而ipsec模块是通过软件实现加/解密处理。

   2. ike
在加密卡硬件上的实现

   ipsec
加密卡在实现软件的所有功能基础上,还扩展了部分功能。

   secpath
防火墙在ipsec高速加密卡中提供rsa加密nonce的身份验证方法。

上述特性涉及的配置命令完成的功能只在加密卡硬件存在时生效,对于无加密卡或者用户指定使用纯软件处理ipsec特性时,不提供上述功能。