10-IKEv2配置
本章节下载: 10-IKEv2配置 (272.44 KB)
目 录
1.4.2 指定IKEv2协商时本端和对端采用的身份认证方式
1.8.1 配置IKEv2 cookie-challenge功能
1.10.1 IKEv2提议不匹配导致IKEv2 SA协商失败
1.10.2 IPsec提议不匹配导致IPsec SA协商失败
IKEv2(Internet Key Exchange Version 2,互联网密钥交换协议第2版)是第1版本的IKE协议(本文简称IKEv1)的增强版本。IKEv2与IKEv1相同,具有一套自保护机制,可以在不安全的网络上安全地进行身份认证、密钥分发、建立IPsec SA。相对于IKEv1,IKEv2具有抗攻击能力和密钥交换能力更强以及报文交互数量较少等特点。
要建立一对IPsec SA,IKEv1需要经历两个阶段,至少需要交换6条消息。在正常情况下,IKEv2只需要进行两次交互,使用4条消息就可以完成一个IKEv2 SA和一对IPsec SA的协商建立,如果要求建立的IPsec SA的数目大于一对,则每增加一对IPsec SA只需要额外增加一次交互,也就是两条消息就可以完成,这相比于IKEv1简化了设备的处理过程,提高了协商效率。
IKEv2定义了三种交互:初始交换、创建子SA交换以及通知交换。
下面简单介绍一下IKEv2协商过程中的初始交换过程。
图1-1 IKEv2的初始交换过程
如图1-1所示,IKEv2的初始交换过程中包含两个交换:IKE_SA_INIT交换(两条消息)和IKE_AUTH交换(两条消息)。
· IKE_SA_INIT交换:完成IKEv2 SA参数的协商以及密钥交换;
· IKE_AUTH交换:完成通信对等体的身份认证以及IPsec SA的创建。
这两个交换过程顺序完成后,可以建立一个IKEv2 SA和一对IPsec SA。
创建子SA交换:当一个IKE SA需要创建多个IPsec SA时,使用创建子SA交换来协商多于一个的SA,另外还可用于进行IKE SA的重协商功能。
通知交换:用于传递控制信息,例如错误信息或通告信息。
在IKE_SA_INIT交换阶段,发起方采用“猜”的办法,猜一个响应方最可能使用的DH组携带在第一条消息中发送。响应方根据发起方“猜”的DH组来响应发起方。如果发起方猜测成功,则这样通过两条消息就可以完成IKE_SA_INIT交换。如果发起方猜测错误,则响应方会回应一个INVALID_KE_PAYLOAD消息,并在该消息中指明将要使用的DH组。之后,发起方采用响应方指定的DH组重新发起协商。这种DH猜想机制,使得发起方的DH组配置更为灵活,可适应不同的响应方。
在IKE_SA_INIT交换中消息是明文传输的,响应方接收到第一个消息后无法确认该消息是否来自一个仿冒的地址。如果此时一个网络攻击者伪造大量地址向响应方发送IKE_SA_INIT请求,根据IKEv1协议,响应方需要维护这些半开的IKE会话信息,从而耗费大量响应方的系统资源,造成对响应方的DoS攻击。
IKEv2使用cookie-challenge机制来解决这类DoS攻击问题。当响应方发现存在的半开IKE SA超过指定的数目时,就启用cookie-challenge机制。响应方收到IKE_SA_INIT请求后,构造一个Cookie通知载荷并响应发起方,若发起方能够正确携带收到的Cookie通知载荷向响应方重新发起IKE_SA_INIT请求,则可以继续后续的协商过程。
半开状态的IKEv2 SA是指那些正在协商过程中的IKEv2 SA。若半开状态的IKEv2 SA数目减少到阈值以下,则cookie-challenge功能将会停止工作
为了保证安全,IKE SA和IPsec SA都有一个生存时间,超过生存时间的SA需要重新协商,即SA 的重协商。与IKEv1不同的是,IKEv2 SA的生存时间不需要协商,由各自的配置决定,重协商总是由生存时间较小的一方发起,可尽量避免两端同时发起重协商造成冗余SA的生成,导致两端SA状态不一致。
与IKEv1不同,IKEv2中所有消息都是以“请求–响应”对的形式出现,IKEv2通过消息头中的一个Message ID字段来标识一个“请求–响应”对。发起方发送的每一条消息都需要响应方给予确认,例如建立一个IKE SA一般需要两个“请求-响应”对。如果发起方在规定时间内没有接收到确认报文,则需要对该请求消息进行重传。IKEv2消息的重传只能由发起方发起,且重传消息的Message ID必须与原始消息的Message ID一致。
与IKEv2相关的协议规范有:
· RFC 2408:Internet Security Association and Key Management Protocol (ISAKMP)
· RFC 4306:Internet Key Exchange (IKEv2) Protocol
· RFC 4718:IKEv2 Clarifications and Implementation Guidelines
· RFC 2412:The OAKLEY Key Determination Protocol
· RFC 5996:Internet Key Exchange Protocol Version 2 (IKEv2)
IKEv2配置任务如下:
(1) 配置IKEv2 profile
d. 配置本端身份信息
e. 配置匹配对端身份的规则
(2) 配置IKEv2安全策略
(3) 配置IKEv2安全提议
若IKEv2安全策略中指定了IKEv2提议,则必配。
(4) 配置IKEv2 keychain
只要其中一端配置的认证方式为预共享密钥方式,则必选。
如果两端配置的认证方式都是RSA数字签名方式,则不需要配置。
(5) (可选)配置IKEv2 cookie-challenge功能
该功能仅对于响应方有意义。
(6) (可选)配置全局IKEv2 DPD探测功能
(7) (可选)配置IKEv2 NAT Keepalive功能
(8) (可选)配置为对端分配IP地址的IKEv2本地地址池
为了配置过程顺利进行,在IKEv2配置之前,用户需要确定以下几个因素:
· 确定IKEv2初始交换过程中使用的算法的强度,即确定对初始交换进行安全保护的强度(包括加密算法、完整性校验算法、PRF算法和DH组算法)。不同的算法的强度不同,算法强度越高,受保护数据越难被破解,但消耗的计算资源越多。一般来说,密钥越长的算法强度越高。
· 确定本地认证方法以及对端的认证方法。若使用预共享密钥方式,则要确定通信双方预先约定的预共享密钥;若使用RSA数字签名方式,则要确定本端所使用的PKI域。关于PKI的配置,请参见“安全配置指导”中的“PKI”。
创建一个IKEv2 profile,并进入IKEv2 Profile视图。
(1) 进入系统视图。
system-view
(2) 创建一个IKEv2 profile,并进入IKEv2 Profile视图。
ikev2 profile profile-name
IKEv2协商时本端和对端采用的身份认证方式。只能指定一个本端身份认证方式,可以指定多个对端身份认证方式。本端和对端可以采用不同的身份认证方式。
(1) 进入系统视图。
system-view
(2) 进入IKEv2 Profile视图。
ikev2 profile profile-name
(3) 指定IKEv2本端和对端的身份认证方式。
authentication-method { local | remote } { dsa-signature | ecdsa-signature | pre-share | rsa-signature }
缺省情况下,未配置本端和对端认证方式。
根据IKEv2 profile中配置的认证方法,配置IKEv2 keychain或PKI域。
· 如果任意一方指定的身份认证方式为数字签名(dsa-signature、rsa-signature或者ecdsa-signature),则需要配置PKI域。
· 如果任意一方指定的身份认证方式为预共享密钥(pre-share),则需要配置IKEv2 keychain。
(1) 进入系统视图。
system-view
(2) 进入IKEv2 Profile视图。
ikev2 profile profile-name
(3) 根据IKEv2 profile中配置的认证方法,配置IKEv2 keychain或PKI域
¡ 配置采用预共享密钥认证时使用的Keychain
keychain keychain-name
¡ 配置采用数字签名认证时使用的PKI域。
certificate domain domain-name [ sign | verify ]
根据authentication-method命令使用的认证方法选择其中一个配置。
· 如果本端的认证方式为数字签名,则可以配置任何类型的身份信息。若配置的本端身份为IP地址,但这个IP地址与本地证书中的IP地址不同,设备将使用FQDN类型的本端身份,该身份的内容为设备的名称(可通过sysname命令配置)。
· 如果本端的认证方式为预共享密钥,则只能配置除DN之外的其它类型的身份信息。
(1) 进入系统视图。
system-view
(2) 进入IKEv2 Profile视图。
ikev2 profile profile-name
(3) 配置本端身份信息。
identity local { address { ipv4-address | ipv6 ipv6-address } | dn | email email-string | fqdn fqdn-name | key-id key-id-string }
缺省情况下,未配置本端身份信息。此时使用IP地址标识本端的身份,该IP地址为IPsec安全策略应用的接口的IP地址。
IKEv2对等体需要根据对端的身份信息查找一个本端的IKEv2 profile,然后使用此IKEv2 profile中的信息验证对端身份。对端身份信息若能满足本地某个IKEv2 profile中指定的匹配规则,则该IKEv2 profile为查找的结果。匹配IKEv2 profile的顺序取决于IKEv2 profile的优先级,优先级高的先匹配。
(1) 进入系统视图。
system-view
(2) 进入IKEv2 Profile视图。
ikev2 profile profile-name
(3) 配置匹配对端身份的规则。
match remote { certificate policy-name | identity { address { { ipv4-address [ mask | mask-length ] | range low-ipv4-address high-ipv4-address } | ipv6 { ipv6-address [ prefix-length ] | range low-ipv6-address high-ipv6-address } } | fqdn fqdn-name | email email-string | key-id key-id-string } }
协商双方都必须配置至少一个match remote规则,当对端的身份与IKEv2 profile中配置的match remote规则匹配时,则使用此IKEv2 profile中的信息与对端完成认证。
(1) 进入系统视图。
system-view
(2) 进入IKEv2 Profile视图。
ikev2 profile profile-name
(3) 配置IKEv2 profile的可选功能。
¡ 配置IKEv2 DPD探测功能。
dpd interval interval [ retry seconds ] { on-demand | periodic }
缺省情况下,IKEv2 profile视图下没有配置DPD探测功能,采用系统视图下的DPD配置。若两者没有配置,则不进行DPD探测。
¡ 配置IKEv2 profile的使用范围。
match local address { interface-type interface-number | ipv4-address | ipv6 ipv6-address }
缺省情况下,未限制IKEv2 profile的使用范围。
限制IKEv2 profile只能在指定的地址或指定接口的地址下使用(这里的地址指的是IPsec策略下配置的本端地址,若本端地址没有配置,则为引用IPsec策略的接口下地址)。
¡ 配置IKEv2 profile的优先级。
priority priority
缺省情况下,IKEv2 profile的优先级为100。
优先级仅用于响应方在查找IKEv2 profile时调整IKEv2 profile的匹配顺序。
¡ 配置IKEv2 SA生存时间。
sa duration seconds
缺省情况下,IKEv2 SA的生存时间为86400秒。
本端和对端的IKEv2 SA生存时间可以不一致,也不需要进行协商,由生存时间较短的一方在本端IKEv2 SA生存时间到达之后发起重协商。
¡ 配置发送NAT keepalive的时间间隔。
nat-keepalive seconds
缺省条件下,使用全局的IKEv2 NAT keepalive配置。
在IKEv2 peer之间存在NAT网关的情况下,设备通过定期向对端发送NAT keepalive 报文,防止已有的NAT会话表项因长时间无流量匹配而被老化。
¡ 开启指定的配置交换功能。
config-exchange { request | set { accept | send } }
缺省条件下,所有的配置交换功能均处于关闭状态。
该功能用于分支和总部虚拟隧道IP地址的请求和分配。
参数 |
说明 |
request |
用于分支侧向中心侧安全网关提交IP地址分配请求 |
set accept |
用于分支侧接受中心侧主动推送的IP地址 |
set send |
用于中心侧主动推送IP地址给分支侧 |
¡ 开启AAA授权功能。
aaa authorization domain domain-name username user-name
缺省条件下,IKEv2的AAA授权功能处于关闭状态。
通过AAA授权获取一个地址池的名字,地址池中配置了可分配给对端的IP地址。关于AAA授权IKE本地地址池的具体配置请参见“用户接入与认证”中的“AAA”。
在进行IKE_SA_INIT协商时,系统需要查找到一个与本端相匹配的IKEv2安全策略,并使用其中引用的安全提议进行安全参数的协商,匹配的依据为本端安全网关的IP地址。
· 若系统中配置了IKEv2安全策略,则根据本端安全网关的IP地址与所有已配置的IKEv2安全策略进行逐一匹配,如果未找到匹配的IKEv2安全策略或找到的安全策略中引用的安全提议配置不完整,则IKE_SA_INIT协商将会失败。
· 若系统中未配置任何IKEv2安全策略,则直接采用缺省的IKEv2安全策略default。
· 系统中存在多个IKEv2安全策略的情况下,系统根据安全策略的优先级从高到低的顺序依次匹配。如果通过match local address命令指定了匹配IKEv2安全策略的本端地址,则优先匹配指定了本端地址匹配条件的策略,其次匹配未指定本端地址匹配条件的策略。
(1) 进入系统视图。
system-view
(2) 创建IKEv2安全策略,并进入IKEv2安全策略视图。
ikev2 policy policy-name
缺省情况下,存在一个名称为default的缺省IKEv2安全策略。
(3) 指定匹配IKEv2安全策略的本端地址。
match local address { interface-type interface-number | ipv4-address | ipv6 ipv6-address }
缺省情况下,未指定用于匹配IKEv2安全策略的本端地址,表示本策略可匹配所有本端地址。
(4) 指定IKEv2安全策略引用的IKEv2安全提议。
proposal proposal-name
缺省情况下,IKEv2安全策略未引用IKEv2安全提议。
(5) 指定IKEv2安全策略的优先级。
priority priority
缺省情况下,IKEv2安全策略的优先级为100。
IKEv2安全提议用于保存IKE_SA_INIT交换中使用的安全参数,包括加密算法、完整性验证算法、PRF算法和DH组,其中每类安全参数均可以配置多个,其优先级按照配置顺序依次降低。
· 一个完整的IKEv2安全提议中至少应该包含一组安全参数,即一个加密算法、一个完整性验证算法、一个PRF算法和一个DH组。
· 若同时指定了多个IKEv2安全提议,则它们的优先级按照配置顺序依次降低。
(1) 进入系统视图。
system-view
(2) 创建IKEv2安全提议,并进入IKEv2提议视图。
ikev2 proposal proposal-name
缺省条件下,存在一个名称为default的缺省IKEv2安全提议。
该提议中定义的加密算法为aes-cbc-128和3des,完整性校验算法为sha1和md5,PRF算法为sha1和md5,DH组为group5和group2。
(3) 指定IKEv2安全提议使用的加密算法。
encryption { 3des-cbc | aes-cbc-128 | aes-cbc-192 | aes-cbc-256 | aes-ctr-128 | aes-ctr-192 | aes-ctr-256 | camellia-cbc-128 | camellia-cbc-192 | camellia-cbc-256 | des-cbc } *
缺省情况下,IKEv2安全提议未定义加密算法。
(4) 指定IKEv2安全提议使用的完整性校验算法。
integrity { aes-xcbc-mac | md5 | sha1 | sha256 | sha384 | sha512 } *
缺省情况下,IKEv2安全提议未定义完整性校验算法。
(5) 指定IKEv2安全提议使用的DH组。
dh { group1 | group14 | group2 | group24 | group5 | group19 | group20 } *
缺省情况下,IKEv2安全提议未定义DH组。
(6) 指定IKEv2安全提议使用的PRF算法。
prf { aes-xcbc-mac | md5 | sha1 | sha256 | sha384 | sha512 } *
缺省情况下,IKEv2安全提议使用配置的完整性校验算法作为PRF算法。
IKEv2 keychain用来指定与对端进行IKEv2协商时使用的共享密钥信息。一个IKEv2 keychain下可以指定多个IKEv2 peer,每个IKEv2 peer中包含了一个对称预共享密钥或一个非对称预共享密钥对,以及用于查找该IKEv2 peer的匹配参数(对等体的主机名称、IP地址或地址范围、身份信息)。其中,IKEv2协商的发起方使用对端的主机名称、IP地址或地址范围查找IKEv2 peer,响应方使用对端的IP地址、地址范围或身份信息查找IKEv2 peer。
(1) 进入系统视图。
system-view
(2) 创建IKEv2 keychain,并进入IKEv2 keychain视图。
ikev2 keychain keychain-name
(3) 创建IKEv2 peer,并进入IKEv2 peer视图。
peer name
(4) 指定IKEv2 peer的主机名称。
hostname name
缺省情况下,未配置IKEv2 peer的主机名称。
(5) 指定IKEv2 peer的主机地址。
address { ipv4-address [ mask | mask-length ] | ipv6 ipv6-address [ prefix-length ] }
缺省情况下,未指定IKEv2 peer的主机地址。
不同的IKEv2 peer中不能指定相同的主机地址。
(6) 指定IKEv2 peer的身份信息。
identity { address { ipv4-address | ipv6 { ipv6-address } } | fqdn fqdn-name | email email-string | key-id key-id-string }
缺省情况下,未指定IKEv2 peer的身份信息。
(7) 配置IKEv2 peer的预共享密钥。
pre-shared-key [ local | remote ] { ciphertext | plaintext } string
缺省情况下,未配置IKEv2 peer的预共享密钥。
IKEv2 cookie-challenge功能用来防止攻击者通过源IP仿冒对响应方造成DoS攻击。
开启IKEv2 cookie-challenge功能的同时需要指定启用cookie-challenge功能的阈值,当响应方本地存在的半开状态的IKEv2 SA数目达到指定的阈值时,则cookie-challenge功能开始生效。
(1) 进入系统视图。
system-view
(2) 开启IKEv2 cookie-challenge功能。
ikev2 cookie-challenge number
缺省情况下,IKEv2 cookie-challenge功能处于关闭状态。
IKEv2 DPD探测功能用来探测对端是否存活,包括以下两种模式:
· 按需探测模式(on-demand):根据流量来探测对端是否存活。在本端发送用户报文时,如果发现自最后一次收到对端报文之后,在指定的触发IKEv2 DPD的时间间隔内一直未收到对端报文,则发送DPD报文探测对端是否存活。
· 定时探测模式(periodic):按照配置的触发IKEv2 DPD的时间间隔定时发送DPD报文,探测对端是否存活。
当系统视图下和IKEv2 profile视图下都配置DPD探测功能时,IKEv2 profile视图下的DPD配置覆盖系统视图下的全局DPD配置。若IKEv2 profile视图下没有配置DPD探测功能,则应用全局DPD配置。
(1) 进入系统视图。
system-view
(2) 配置IKEv2 DPD探测功能。
ikev2 dpd interval interval [ retry seconds ] { on-demand | periodic }
缺省情况下,全局IKEv2 DPD探测功能处于关闭状态。
IKEv2 NAT Keepalive功能仅对位于NAT之后的设备(即该设备位于NAT设备连接的私网侧)有意义。NAT之后的IKEv2网关设备需要定时向NAT之外的IKEv2网关设备发送NAT Keepalive报文,以确保NAT设备上相应于该流量的会话存活,从而让NAT之外的设备可以访问NAT之后的设备。因此,配置的发送NAT Keepalive报文的时间间隔需要小于NAT设备上会话表项的存活时间。本功能必须在探测到NAT之后才能生效。
(1) 进入系统视图。
system-view
(2) 配置向对端发送NAT Keepalive报文的时间间隔。
ikev2 nat-keepalive seconds
缺省情况下,探测到NAT后发送NAT Keepalive报文的时间间隔为10秒。
IKEv2本地地址池与AAA授权配合使用,可以向对端网关(客户端)分配地址或应答地址请求,从而使得对端网关(企业分支客户端)使用由企业中心网关统一分配的IP地址作为私网地址来进行通信,达到由企业中心统一管理的目的。关于AAA授权IKEv2本地地址池的具体配置请参见“用户接入与认证”中的“AAA”。
(1) 进入系统视图。
system-view
(2) 配置为对端分配IPv4地址的IKEv2本地地址池。
ikev2 address-group group-name start-ipv4-address end-ipv4-address [ mask | mask-length ]
(3) 配置为对端分配IPv6地址的IKEv2本地地址池。
ikev2 ipv6-address-group group-name prefix prefix/prefix-len assign-len assign-len
可在任意视图下执行以下命令:
· 显示IKEv2安全策略的配置信息。
display ikev2 policy [ policy-name | default ]
· 显示IKEv2 profile的配置信息。
display ikev2 profile [ profile-name ]
· 显示IKEv2安全提议的配置信息。
display ikev2 proposal [ name | default ]
· 显示当前IKEv2 SA的信息。
display ikev2 sa [ count | [ { local | remote } { ipv4-address | ipv6 ipv6-address } ] [ verbose [ tunnel tunnel-id ] ] ]
· 显示IKEv2统计信息。
display ikev2 statistics
请在用户视图下执行以下命令:
· 清除IKEv2 SA及其协商生成的Child SA。
reset ikev2 sa [ [ { local | remote } { ipv4-address | ipv6 ipv6-address } ] | tunnel tunnel-id ] [ fast ]
· 清除IKEv2统计信息。
reset ikev2 statistics
通过如下命令查看当前的IKEv2 SA信息,发现IKEv2 SA的状态(Status字段)为IN-NEGO。
<Sysname> display ikev2 sa
Tunnel ID Local Remote Status
---------------------------------------------------------------------------
5 123.234.234.124/500 123.234.234.123/500 IN-NEGO
Status:
IN-NEGO: Negotiating, EST: Established, DEL:Deleting
IKEv2提议配置错误。
(1) 排查IKEv2相关配置。具体包括:检查两端的IKEv2提议是否匹配,即IKEv2提议中的认证方法、认证算法、加密算法、PRF算法是否匹配。
(2) 修改IKEv2提议的配置,使本端IKEv2提议的配置和对端匹配。
通过display ikev2 sa命令查看当前的IKEv2 SA信息,发现IKEv2 SA协商成功,其状态(Status字段)为EST。但通过display ipsec sa命令查看当前的IPsec SA时,发现没有协商出相应的IPsec SA。
IPsec安全策略参数配置错误。
(1) 排查IPsec相关配置。具体包括:检查双方接口上应用的IPsec安全策略的参数是否匹配,即引用的IPsec安全提议的协议、加密算法和认证算法是否匹配。
(2) 修改IPsec策略配置,使本端IPsec安全策略的配置和对端匹配。
双方的ACL配置正确,也有相匹配的IKEv2安全提议,但安全隧道无法建立或者存在安全隧道却无法通信。
这种情况一般是由于网络状态不稳定,安全隧道建立好以后,有一方的设备重启造成了两端的IKEv2 SA或者IPsec SA不对称。
使用display ikev2 sa命令检查双方是否都已建立IKEv2 SA。如果有一端存在的IKEv2 SA在另一端上不存在,请先使用reset ikev2 sa命令清除双方不对称存在的IKEv2 SA,并重新发起协商;如果两端存在对称的IKEv2 SA,则使用display ipsec sa命令查看接口上的安全策略是否已建立了对称的IPsec SA。如果一端存在的IPsec SA在另一端上不存在,请使用reset ipsec sa命令清除双方不对称存在的IPsec SA,并重新发起协商。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!