IKE 协议简介  
 
1.       IKE 协议
IPSec  的安全联盟可以通过手工配置的方式建立,但是当网络中节点增多时,手工配置将非常困难,而且难以保证安全性。这时就要使用 IKEInternet Key Exchange,因特网密钥交换)自动地进行安全联盟建立与密钥交换的过程。
IKE 协议是建立在由 Internet 安全联盟和密钥管理协议 ISAKMP  Internet   Security Association 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 数据安全传送。

从下图我们可以看出 IKE IPSec 的关系。

IKE 协议_第1张图片

具体安全联盟的建立过程如下图所示:

IKE 协议_第2张图片

(1)  当一个报文从某接口外出时,如果此接口应用了IPSec,会进行安全策略的匹
配。
(2)  如果找到匹配的安全策略,会查找相应的安全联盟。如果安全联盟还没有建立,则触发 IKE 进行协商。IKE 首先建立阶段 1 的安全联盟,即IKE SA
(3) 在阶段 1 安全联盟的保护下协商阶段2 的安全联盟,即IPSec SA
(4)  使用 IPSec SA 保护通讯数据。

 

4. IKE 的协商模式
RFC2409  The Internet Key Exchange)中规定,IKE 第一阶段的协商可以采用两种模式:主模式(Main Mode)和野蛮模式(Aggressive Mode 。主模式被设计成将密钥交换信息与身份、认证信息相分离。这种分离保护了身份信息;交换的身份信息受已生成的 Diffie-Hellman 共享密钥的保护。但这增加了3 条消息的开销。
野蛮模式则允许同时传送与 SA、密钥交换和认证相关的载荷。将这些载荷组合到一条消息中减少了消息的往返次数,但是就无法提供身份保护了。
虽然野蛮模式存在一些功能限制,但可以满足某些特定的网络环境需求。例如:远程访问时,如果响应者(服务器端)无法预先知道发起者(终端用户)的地址、或者发起者的地址总在变化,而双方都希望采用预共享密钥验证方法来创建 IKE SA,那么,不进行身份保护的野蛮模式就是唯一可行的交换方法;另外,如果发起者已知响应者的策略,或者对响应者的策略有全面的了解,采用野蛮模式能够更快地创建 IKE SA
 

相关配置: 

设置安全策略中引用的IKE Peer  (仅用于IKE 协商方式)
对于 IKE 协商方式,无需象手工方式那样配置对等体、SPI 和密钥等参数,IKE 将自动协商这些它们,因而仅需要将安全策略和IKE Peer 关联即可。
在安全策略中引用 IKE Peer    ike-peer peer-name
删除在安全策略中引用的IKE Peer  undo ike-peer peer-name

配置IKE协商时的本地 ID 
 
在系统视图下进行下列配置
配置IKE协商时的本地ID   ike local-name router-name
删除本地ID   undo ike local-name

指定IKE对端属性
 
1. 创建 IKE Peer并进入 IKE Peer视图
 
通过 IKE Peer,可以定义了一系列属性数据来描述 IKE协商所需的参数,包括创建IKE提议、协商模式、ID类型、NAT穿越、共享密钥、对端地址和对端名称等。
请在系统视图下进行下列配置。
创建IKE Peer并进入IKE Peer视图  ike peer peer-name
删除指定的IKE Peer  undo ike peer peer-name
 
2.       配置 IKE协商模式
 
请在 IKE Peer视图下进行下列配置。
配置IKE协商方式  exchange-mode  { main | aggressive }
恢复缺省IKE协商方式  undo exchange-mode
缺省情况下,采用主模式进行 IKE协商。
 
3.       配置 IKE安全提议
 
请在 IKE Peer视图下进行下列配置。 
配置 IKE安全提议   ike-proposal proposal-number
 
取消IKE安全提议  undo ike-proposal
缺省情况下,采用主模式时使用已配置的所有 IKE 安全提议,采用野蛮模式时使用
缺省的 IKE安全提议。
 
4. 配置对端 ID类型
 
当进行 IKE交换时,可以使用对端的 IP地址作为 ID,也可以使用对端名称作为 ID 
请在 IKE Peer视图下进行下列配置。 
配置 IKE PeerID类型   local-id-type { ip | name }
 
恢复缺省的ID类型  undo local-id-type
缺省情况下,IKE Peer采用的本端 ID类型为 IP地址形式。
 
5. 配置 IPSec是否需要 NAT穿越
 
请在 IKE Peer视图下进行下列配置。
使能 IPSec NAT穿越   nat traversal
 
禁止IPSec NAT穿越  undo nat traversal
缺省情况下,禁止 NAT穿越功能。
 
6. 配置身份验证字
 
如果选择了 Pre-shared key验证方法。需要为每个对端配置预共享密钥。建
立安全连接的两个对端的预共享密钥必须一致。
请在 IKE Peer视图下进行下列配置。 
配置与对端共享的  pre-shared key  pre-shared-key key
 
删除身份验证字  undo pre-shared-key
 
7. 配置对端 IP地址
 
请在 IKE Peer视图下进行下列配置。
配置对端地址或地址段  remote-address low-ip-address [ high-ip-address ]
删除配置的对端地址  undo remote-address
 
8. 配置对端名称
 
在野蛮模式下,可以使用 remote-name命令配置对端名称。
请在 IKE Peer视图下进行下列配置。
配置对端名称   remote-name name
 
删除配置的对端名称  undo remote-name
 
创建IKE安全提议
 
IKE提议定义了一套属性数据来描述 IKE协商怎样进行安全通信。配置 IKE提议包括创建 IKE提议、选择加密算法、选择验证方法、选择验证算法、选择 Diffie-Hellman组标识和设置安全联盟生存周期。
用户可以按照优先级创建多条 IKE 提议,但是协商双方必须至少有一条匹配的 IKE提议才能协商成功。
采用主模式时:若在协商发起方的 ike peer中指定 IKE提议,IKE协商时将只发送指定的 IKE提议,响应方在自己的 IKE提议配置中寻找与发送方指定的 IKE提议相匹配的 IKE提议,如果没有匹配的则协商失败;若发起方的 ike peer中不指定 IKE提议,IKE协商时将发送发起方所有的 IKE提议,响应方在自己的 IKE提议配置中依次寻找与发送方的 IKE提议相匹配的 IKE提议。
采用野蛮模式时:若在协商发起方的 ike peer中指定 IKE提议,同采用主模式的情况;若发起方的 ike peer中不指定 IKE提议, IKE协商时将只发送发送方默认的 IKE提议,响应方也会用默认的 IKE提议匹配。
 
IKE显示与调试
 
IKE 提供以下命令显示当前所有安全联盟的状态和每个 IKE 提议配置的参数。display 命令可在所有视图下进行下列操作,debugging reset 命令只能在用户视图下操作。
显示当前已建立的安全通道  display ike sa [ secp [ slot/card/port  ] ]
查看IKE Peer的配置情况 display  ike  peer [  name  peer-name ] [  secp [ slot/card/port  ] ]
删除当前已建立的安全通道 reset ike sa [  connection-id  ] [  secp [ slot/card/port  ] ]
显示每个IKE提议配置的参数   display ike proposal [ secp [ slot/card/port  ] ]  
打开 IKE的调试信息  debugging  ike {  all | error |  exchange | message |  misc | transport  } [  secp [ slot/card/port  ] ]
关闭IKE的调试信息  undo  debugging  ike {  error |  exchange | message |  misc | transport } [  secp [ slot/card/port  ] ]