12-IPsec配置
本章节下载: 12-IPsec配置 (217.67 KB)
目 录
IPsec(IP Security)是IETF制定的三层隧道加密协议,它为Internet上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证,是一种传统的实现三层VPN(Virtual Private Network,虚拟专用网)的安全技术。特定的通信方之间通过建立IPsec隧道来传输用户的私有数据,并在IP层提供了以下安全服务:
l 数据机密性(Confidentiality):IPsec发送方在通过网络传输包前对包进行加密。
l 数据完整性(Data Integrity):IPsec接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改。
l 数据来源认证(Data Authentication):IPsec在接收端可以认证发送IPsec报文的发送端是否合法。
l 防重放(Anti-Replay):IPsec接收方可检测并拒绝接收过时或重复的报文。
IPsec具有以下优点:
l 支持IKE(Internet Key Exchange,因特网密钥交换),可实现密钥的自动协商功能,减少了密钥协商的开销。可以通过IKE建立和维护SA(Security Association,安全联盟)的服务,简化了IPsec的使用和管理。
l 所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec,而不必对这些应用系统和服务本身做任何修改。
l 对数据的加密是以数据包为单位的,而不是以整个数据流为单位,这不仅灵活而且有助于进一步提高IP数据包的安全性,可以有效防范网络攻击。
IPsec协议不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构,包括网络认证协议AH(Authentication Header,认证头)、ESP(Encapsulating Security Payload,封装安全载荷)、IKE(Internet Key Exchange,因特网密钥交换)和用于网络认证及加密的一些算法等。其中,AH协议和ESP协议用于提供安全服务,IKE协议用于密钥交换。
IPsec提供了两种安全机制:认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。
IPsec协议中AH协议和ESP协议的功能及工作原理如下:
l AH协议(IP协议号为51)定义了认证的应用方法,提供数据源认证、数据完整性校验和防报文重放功能,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。AH的工作原理是在每一个数据包上添加一个身份验证报文头,此报文头插在标准IP包头后面,对数据提供完整性保护。可选择的认证算法有MD5(Message Digest)、SHA-1(Secure Hash Algorithm)等。
l ESP协议(IP协议号为50)定义了加密和可选认证的应用方法,提供加密、数据源认证、数据完整性校验和防报文重放功能。ESP的工作原理是在每一个数据包的标准IP包头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾。与AH协议不同的是,ESP将需要保护的用户数据进行加密后再封装到IP包中,以保证数据的机密性。常见的加密算法有DES、3DES、AES等。同时,作为可选项,用户可以选择MD5、SHA-1算法保证报文的完整性和真实性。
在实际进行IP通信时,可以根据实际安全需求同时使用这两种协议或选择使用其中的一种。AH和ESP都可以提供认证服务,不过,AH提供的认证服务要强于ESP。同时使用AH和ESP时,设备支持的AH和ESP联合使用的方式为:先对报文进行ESP封装,再对报文进行AH封装,封装之后的报文从内到外依次是原始IP报文、ESP头、AH头和外部IP头。
IPsec在两个端点之间提供安全通信,端点被称为IPsec对等体。
SA是IPsec的基础,也是IPsec的本质。SA是通信对等体间对某些要素的约定,例如,使用哪种协议(AH、ESP还是两者结合使用)、协议的封装模式(传输模式和隧道模式)、加密算法(DES、3DES和AES)、特定流中保护数据的共享密钥以及密钥的生存周期等。建立SA的方式有手工配置和IKE自动协商两种。
SA是单向的,在两个对等体之间的双向通信,最少需要两个SA来分别对两个方向的数据流进行安全保护。同时,如果两个对等体希望同时使用AH和ESP来进行安全通信,则每个对等体都会针对每一种协议来构建一个独立的SA。
SA由一个三元组来唯一标识,这个三元组包括SPI(Security Parameter Index,安全参数索引)、目的IP地址、安全协议号(AH或ESP)。
SPI是用于唯一标识SA的一个32比特数值,它在AH和ESP头中传输。在手工配置SA时,需要手工指定SPI的取值。使用IKE协商产生SA时,SPI将随机生成。
通过IKE协商建立的SA具有生存周期,手工方式建立的SA永不老化。IKE协商建立的SA的生存周期有两种定义方式:
l 基于时间的生存周期,定义了一个SA从建立到失效的时间;
l 基于流量的生存周期,定义了一个SA允许处理的最大流量。
生存周期到达指定的时间或指定的流量,SA就会失效。SA失效前,IKE将为IPsec协商建立新的SA,这样,在旧的SA失效前新的SA就已经准备好。在新的SA开始协商而没有协商好之前,继续使用旧的SA保护通信。在新的SA协商好之后,则立即采用新的SA保护通信。
IPsec有如下两种工作模式:
l 隧道(tunnel)模式:用户的整个IP数据包被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中。通常,隧道模式应用在两个安全网关之间的通讯。
l 传输(transport)模式:只是传输层数据被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被放置在原IP包头后面。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯。
不同的安全协议在tunnel和transport模式下的数据封装形式如图1-1所示。
(1) 认证算法
认证算法的实现主要是通过杂凑函数。杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。IPsec对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。IPsec使用两种认证算法:
l MD5:MD5通过输入任意长度的消息,产生128bit的消息摘要。
l SHA-1:SHA-1通过输入长度小于2的64次方bit的消息,产生160bit的消息摘要。
MD5算法的计算速度比SHA-1算法快,而SHA-1算法的安全强度比MD5算法高。
(2) 加密算法
加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。目前设备的IPsec实现三种加密算法:
l DES(Data Encryption Standard):使用56bit的密钥对一个64bit的明文块进行加密。
l 3DES(Triple DES):使用三个56bit的DES密钥(共168bit密钥)对明文进行加密。
l AES(Advanced Encryption Standard):使用128bit、192bit或256bit密钥长度的AES算法对明文进行加密。
这三个加密算法的安全性由高到低依次是:AES、3DES、DES,安全性高的加密算法实现机制复杂,运算速度慢。对于普通的安全要求,DES算法就可以满足需要。
有如下两种协商方式建立SA:
l 手工方式(manual)配置比较复杂,创建SA所需的全部信息都必须手工配置,而且不支持一些高级特性(例如定时更新密钥),但优点是可以不依赖IKE而单独实现IPsec功能。
l IKE自动协商(isakmp)方式相对比较简单,只需要配置好IKE协商安全策略的信息,由IKE自动协商来创建和维护SA。
当与之进行通信的对等体设备数量较少时,或是在小型静态环境中,手工配置SA是可行的。对于中、大型的动态网络环境中,推荐使用IKE协商建立SA。
安全隧道是建立在本端和对端之间可以互通的一个通道,它由一对或多对SA组成。
使用IPsec保护IPv6路由协议是指,使用AH/ESP协议对IPv6路由协议报文进行加/解封装处理,并为其提供认证和加密的安全服务,目前支持OSPFv3、IPv6 BGP、RIPng路由协议。
IPsec对IPv6路由协议报文进行保护的处理方式是基于业务的IPsec,即IPsec保护某一业务的所有报文。该方式下,设备产生的所有需要IPsec保护的IPv6路由协议报文都要被进行加封装处理,而设备接收到的不受IPsec保护的以及解封装(解密或验证)失败的IPv6路由协议报文都要被丢弃。
这种基于业务的IPsec既不需要ACL来限定要保护的流的范围,也不需要指定IPsec隧道的起点与终点,IPsec安全策略仅与具体的业务绑定,不管业务报文从设备的哪个接口发送出去都会被IPsec保护。
由于IPsec的密钥交换机制仅仅适用于两点之间的通信保护,在广播网络一对多的情形下,IPsec无法实现自动交换密钥,因此必须使用手工配置密钥的方式。同样,由于广播网络一对多的特性,要求各设备对于接收、发送的报文均使用相同的SA参数(相同的SPI及密钥)。因此,目前仅支持手工安全策略生成的SA对IPv6路由协议报文进行保护。
与IPsec相关的协议规范有:
l RFC2401:Security Architecture for the Internet Protocol
l RFC2402:IP Authentication Header
l RFC2406:IP Encapsulating Security Payload
l RFC4552:Authentication/Confidentiality for OSPFv3
使用IPsec安全策略建立IPsec安全隧道保护IPv6路由协议的基本配置思路如下:
(1) 配置安全提议:指定安全协议、认证算法和加密算法、封装模式等;
(2) 配置手工方式的安全策略:指定SA的SPI和密钥;
(3) 在路由协议上应用安全策略。
表1-1 IPsec保护IPv6路由协议配置任务简介
配置任务 |
说明 |
详细配置 |
配置安全提议 |
必选 |
|
配置手工方式的安全策略 |
必选 |
|
在路由协议上应用安全策略 |
必选 |
分别参考“三层技术-IP路由配置指导”中的“IPv6 BGP配置”、“OSPFv3配置”和“RIPng配置” |
安全提议是安全策略或者安全框架的一个组成部分,它用于保存IPsec需要使用的特定安全协议、加密/认证算法以及封装模式,为IPsec协商SA提供各种安全参数。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
创建安全提议,并进入安全提议视图 |
ipsec proposal proposal-name |
必选 缺省情况下,没有任何安全提议存在 |
|
配置安全提议采用的安全协议 |
transform { ah | ah-esp | esp } |
可选 缺省情况下,采用ESP协议 |
|
配置安全算法 |
配置ESP协议采用的加密算法 |
esp encryption-algorithm { 3des | aes [ key-length ] | des } |
可选 缺省情况下,ESP协议采用DES加密算法 |
配置ESP协议采用的认证算法 |
esp authentication-algorithm { md5 | sha1 } |
可选 缺省情况下,ESP协议采用MD5认证算法 |
|
配置AH协议采用的认证算法 |
ah authentication-algorithm { md5 | sha1 } |
可选 缺省情况下,AH协议采用MD5认证算法 |
|
配置安全协议对IP报文的封装形式 |
encapsulation-mode { transport | tunnel } |
可选 缺省情况下,安全协议采用隧道模式对IP报文进行封装 传输模式必须应用于数据流的源地址和目的地址与安全隧道两端地址相同的情况下 若要配置应用于IPv6路由协议的手工安全策略,则该安全策略引用的安全提议仅支持传输模式的封装模式 |
l 可对安全提议进行修改,但对已协商成功的SA,新修改的安全提议并不起作用,即SA仍然使用原来的安全提议(除非使用reset ipsec sa命令重置),只有新协商的SA将使用新的安全提议。
l 只有选择了相应的安全协议后,该安全协议所需的安全算法才可配置。例如,如果使用transform命令选择了esp,那么只有ESP所需的安全算法才可配置,而AH所需的安全算法则不能配置。ESP协议允许对报文同时进行加密和认证,或只加密,或只认证。
安全策略规定了对什么样的数据流采用什么样的安全提议。一条安全策略由“名字”和“顺序号”共同唯一确定。
目前,设备仅支持手工安全策略:需要用户手工配置密钥、SPI等参数。
手工配置安全策略时,除完成该安全策略需要引用的访问控制列表及安全提议的配置之外,为保证SA的协商成功,安全隧道两端的配置必须符合以下要求:
l 安全策略引用的安全提议应采用相同的安全协议、安全算法和报文封装形式;
l 同一个范围内的,所有设备上的安全策略所引用的安全提议采用的安全协议、安全算法和报文封装形式要相同,而且所有设备上的SA的SPI及密钥均要保持一致。该范围与协议相关:对于OSPFv3,它是OSPFv3邻居之间或一个OSPFv3区域内;对于RIPng,它是RIPng直连邻居之间或一个RIPng进程内;对于IPv6 BGP,它是IPv6 BGP邻居之间或一个对等体组内。
l 两端SA使用的密钥应当以相同的方式输入。即,一端以字符串方式输入密钥,另一端必须也以字符串方式输入密钥。而且,任何一端出入方向的SA使用的密钥也应当以相同的方式输入。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
用手工方式创建一条安全策略,并进入安全策略视图 |
ipsec policy policy-name seq-number manual |
必选 缺省情况下,没有任何安全策略存在 |
|
配置安全策略所引用的安全提议 |
proposal proposal-name |
必选 缺省情况下,安全策略没有引用任何安全提议 |
|
配置SA的安全参数索引参数 |
sa spi { inbound | outbound } { ah | esp } spi-number |
必选 |
|
配置SA使用的密钥 |
配置AH协议的认证密钥(以16进制方式输入) |
sa authentication-hex { inbound | outbound } ah hex-key |
二者必选其一 |
配置AH协议的认证密钥(以字符串方式输入) |
sa string-key { inbound | outbound } ah string-key |
||
配置ESP协议的认证密钥和加密密钥(以字符串方式输入) |
sa string-key { inbound | outbound } esp string-key |
至少选其一 以字符串方式输入密钥时,系统会自动地同时生成认证算法的密钥和加密算法的密钥 |
|
配置ESP协议的认证密钥(以16进制方式输入) |
sa authentication-hex { inbound | outbound } esp hex-key |
||
配置ESP协议的加密密钥(以16进制方式输入) |
sa encryption-hex { inbound | outbound } esp hex-key |
l 通过手工方式建立SA,一条安全策略只能引用一个安全提议,并且如果已经引用了安全提议,必须先取消原先的安全提议才能引用新的安全提议。
l 如果先后以不同的方式输入了密钥,则最后设定的密钥有效。
在完成上述配置后,在任意视图下执行display命令可以显示配置后IPsec的运行情况,通过查看显示信息认证配置的效果。
在用户视图下执行reset命令可以清除IPsec统计信息。
表1-4 IPsec显示和维护
操作 |
命令 |
显示安全策略的信息 |
display ipsec policy [ brief | name policy-name [ seq-number ] ] [ | { begin | exclude | include } regular-expression ] |
显示安全提议的信息 |
display ipsec proposal [ proposal-name ] [ | { begin | exclude | include } regular-expression ] |
显示SA的相关信息 |
display ipsec sa [ brief | policy policy-name [ seq-number ] ] [ | { begin | exclude | include } regular-expression ] |
显示IPsec处理报文的统计信息 |
display ipsec statistics [ | { begin | exclude | include } regular-expression ] |
清除已经建立的SA |
reset ipsec sa [ policy policy-name [ seq-number ] ] |
清除IPsec的报文统计信息 |
reset ipsec statistics |
如图1-2所示,Switch A、Switch B和Switch C相连,并通过RIPng来学习网络中的IPv6路由信息。具体组网要求如下:
l 在各设备之间建立IPsec安全隧道,对它们收发的RIPng报文进行安全保护;
l 安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96。
配置思路:
l 配置RIPng的基本功能
l 配置手工方式的IPsec安全策略
l 在RIPng进程下或接口上应用IPsec安全策略(进程下配置的IPsec安全策略对该进程的所有报文有效,接口下的IPsec安全策略只对接口下的报文有效)
图1-2 配置IPsec保护RIPng报文组网图
RIPng配置的详细介绍请参考“三层技术-IP路由配置指导”中的“RIPng”。
(1) 配置Switch A
l 配置各接口的IPv6地址(略)
l 配置RIPng的基本功能
<SwitchA> system-view
[SwitchA] ripng 1
[SwitchA-ripng-1] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ripng 1 enable
[SwitchA-Vlan-interface100] quit
l 配置IPsec安全策略
# 创建并配置名为tran1的安全提议(报文封装形式采用传输模式,安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96)。
[SwitchA] ipsec proposal tran1
[SwitchA-ipsec-proposal-tran1] encapsulation-mode transport
[SwitchA-ipsec-proposal-tran1] transform esp
[SwitchA-ipsec-proposal-tran1] esp encryption-algorithm des
[SwitchA-ipsec-proposal-tran1] esp authentication-algorithm sha1
[SwitchA-ipsec-proposal-tran1] quit
# 创建并配置名为policy001的安全策略(协商方式为manual,出入方向SA的SPI均为123456,出入方向SA的密钥均为abcdefg)。
[SwitchA] ipsec policy policy001 10 manual
[SwitchA-ipsec-policy-manual-policy001-10] proposal tran1
[SwitchA-ipsec-policy-manual-policy001-10] sa spi outbound esp 123456
[SwitchA-ipsec-policy-manual-policy001-10] sa spi inbound esp 123456
[SwitchA-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg
[SwitchA-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg
[SwitchA-ipsec-policy-manual-policy001-10] quit
l 在RIPng进程上应用IPsec安全策略
[SwitchA] ripng 1
[SwitchA-ripng-1] enable ipsec-policy policy001
[SwitchA-ripng-1] quit
(2) 配置Switch B
l 配置各接口的IPv6地址(略)
l 配置RIPng的基本功能
<SwitchB> system-view
[SwitchB] ripng 1
[SwitchB-ripng-1] quit
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] ripng 1 enable
[SwitchB-Vlan-interface200] quit
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ripng 1 enable
[SwitchB-Vlan-interface100] quit
l 配置IPsec安全策略
# 创建并配置名为tran1的安全提议(报文封装形式采用传输模式,安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96)。
[SwitchB] ipsec proposal tran1
[SwitchB-ipsec-proposal-tran1] encapsulation-mode transport
[SwitchB-ipsec-proposal-tran1] transform esp
[SwitchB-ipsec-proposal-tran1] esp encryption-algorithm des
[SwitchB-ipsec-proposal-tran1] esp authentication-algorithm sha1
[SwitchB-ipsec-pr oposal-tran1] quit
# 创建并配置名为policy001的安全策略(协商方式为manual,出入方向SA的SPI均为123456,出入方向SA的密钥均为abcdefg)。
[SwitchB] ipsec policy policy001 10 manual
[SwitchB-ipsec-policy-manual-policy001-10] proposal tran1
[SwitchB-ipsec-policy-manual-policy001-10] sa spi outbound esp 123456
[SwitchB-ipsec-policy-manual-policy001-10] sa spi inbound esp 123456
[SwitchB-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg
[SwitchB-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg
[SwitchB-ipsec-policy-manual-policy001-10] quit
l 在RIPng进程上应用IPsec安全策略
[SwitchB] ripng 1
[SwitchB-ripng-1] enable ipsec-policy policy001
[SwitchB-ripng-1] quit
(3) 配置Switch C
l 配置各接口的IPv6地址(略)
l 配置RIPng的基本功能
<SwitchC> system-view
[SwitchC] ripng 1
[SwitchC-ripng-1] quit
[SwitchC] interface vlan-interface 200
[SwitchC-Vlan-interface200] ripng 1 enable
[SwitchC-Vlan-interface200] quit
l 配置IPsec安全策略
# 创建并配置名为tran1的安全提议(报文封装形式采用传输模式,安全协议采用ESP协议,加密算法采用DES,认证算法采用SHA1-HMAC-96)。
[SwitchC] ipsec proposal tran1
[SwitchC-ipsec-proposal-tran1] encapsulation-mode transport
[SwitchC-ipsec-proposal-tran1] transform esp
[SwitchC-ipsec-proposal-tran1] esp encryption-algorithm des
[SwitchC-ipsec-proposal-tran1] esp authentication-algorithm sha1
[SwitchC-ipsec-proposal-tran1] quit
# 创建并配置名为policy001的安全策略(协商方式为manual,出入方向SA的SPI均为123456,出入方向SA的密钥均为abcdefg)。
[SwitchC] ipsec policy policy001 10 manual
[SwitchC-ipsec-policy-manual-policy001-10] proposal tran1
[SwitchC-ipsec-policy-manual-policy001-10] sa spi outbound esp 123456
[SwitchC-ipsec-policy-manual-policy001-10] sa spi inbound esp 123456
[SwitchC-ipsec-policy-manual-policy001-10] sa string-key outbound esp abcdefg
[SwitchC-ipsec-policy-manual-policy001-10] sa string-key inbound esp abcdefg
[SwitchC-ipsec-policy-manual-policy001-10] quit
l 在RIPng进程上应用IPsec安全策略
[SwitchC] ripng 1
[SwitchC-ripng-1] enable ipsec-policy policy001
[SwitchC-ripng-1] quit
以上配置完成后,Switch A、Switch B和Switch C将通过RIPng协议学习到网络中的IPv6路由信息,且分别产生用于保护RIPng报文的SA。
可以通过如下display命令查看Switch A上RIPng的配置信息。如下显示信息表示RIPng进程1上已成功应用了IPsec策略,且携带了有效的SPI值。
<SwitchA> display ripng 1
RIPng process : 1
Preference : 100
Checkzero : Enabled
Default Cost : 0
Maximum number of balanced paths : 8
Update time : 30 sec(s) Timeout time : 180 sec(s)
Suppress time : 120 sec(s) Garbage-Collect time : 120 sec(s)
Number of periodic updates sent : 186
Number of trigger updates sent : 1
IPsec policy name: policy001, SPI: 123456
可以通过如下display命令查看Switch A上生成的SA。
<SwitchA> display ipsec sa
===============================
Protocol: RIPng
===============================
-----------------------------
IPsec policy name: "policy001"
sequence number: 10
mode: manual
-----------------------------
connection id: 1
encapsulation mode: transport
perfect forward secrecy:
tunnel:
flow:
[inbound ESP SAs]
spi: 123456 (0x3039)
proposal: ESP-ENCRYPT-DES ESP-AUTH-SHA1
No duration limit for this sa
[outbound ESP SAs]
spi: 123456 (0x3039)
proposal: ESP-ENCRYPT-DES ESP-AUTH-SHA1
No duration limit for this sa
Switch B和Switch C上也会生成相应的SA来保护RIPng报文,查看方式与Switch A同,此处略。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!