IKE(网络密钥交换协议) #
IKE 属于一种混合型协议,由 Internet 安全关联和密钥管理协议(ISAKMP)和两种密钥交换协议 OAKLEY 与 SKEME 组成。IKE 创建在由 ISAKMP 定义的框架上,沿用了 OAKLEY 的密钥交换模式以及 SKEME 的共享和密钥更新技术,还定义了它自己的两种密钥交换方式:主模式和野蛮模式。
IKE 协商两种 SA:
- IKE(ISAKMP) SA (Phase 1)
- IPSEC SA(Phase 2)
IKE 与 IPSec 的关系如下图所示,对等体之间建立一个 IKE SA 完成身份验证和密钥信息交换后,在 IKE SA 的保护下,根据配置的 AH/ESP 安全协议等参数协商出一对 IPSec SA。此后,对等体间的数据将在 IPSec 隧道中加密传输。
IKE SA 是一个双向的逻辑连接,两个对等体间只建立一个 IKE SA。
IKEv1 协商阶段 1 #
IKEv1 协商阶段 1 的目的是建立 IKE SA。IKE SA 建立后对等体间的所有 ISAKMP 消息都将通过加密和验证,这条安全通道可以保证 IKEv1 第二阶段的协商能够安全进行。
IKEv1 协商阶段 1 支持两种协商模式:主模式(Main Mode)和野蛮模式(Aggressive Mode)。
主模式包含三次双向交换,用到了六条 ISAKMP 信息。
- 消息 ① 和 ② 用于提议交换发起方发送一个或多个 IKE 安全提议,响应方查找最先匹配的 IKE 安全提议,并将这个 IKE 安全提议回应给发起方。匹配的原则为协商双方具有相同的加密算法、认证算法、认证方法和 Diffie-Hellman 组标识。
- 消息 ③ 和 ④ 用于密钥信息交换双方交换 Diffie-Hellman 公共值和 nonce 值,用于 IKE SA 的认证和加密密钥在这个阶段产生。
- 消息 ⑤ 和 ⑥ 用于身份和认证信息交换(双方使用生成的密钥发送信息),双方进行身份认证和对整个主模式交换内容的认证。
IKEv1 协商阶段 2 #
IKEv1 协商阶段 2 的目的就是建立用来安全传输数据的 IPSec SA,并为数据传输衍生出密钥。这一阶段采用快速模式(Quick Mode)。该模式使用 IKEv1 协商阶段 1 中生成的密钥对 ISAKMP 消息的完整性和身份进行验证,并对 ISAKMP 消息进行加密,故保证了交换的安全性
AH/ESP 安全协议 #
IPSec 使用认证头 AH(Authentication Header)和封装安全载荷 ESP(Encapsulating Security Payload)两种 IP 传输层协议来提供认证或加密等安全服务。
- AH 协议
AH 仅支持认证功能,不支持加密功能。AH 在每一个数据包的标准 IP 报头后面添加一个 AH 报文头,AH 对数据包和认证密钥进行 Hash 计算,接收方收到带有计算结果的数据包后,执行同样的 Hash 计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH 协议的完整性验证范围为整个 IP 报文。 - ESP 协议
ESP 支持认证和加密功能。ESP 在每一个数据包的标准 IP 报头后面添加一个 ESP 报文头,并在数据包后面追加一个 ESP 尾(ESP Trailer 和 ESP Auth data)。与 AH 不同的是,ESP 将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但 ESP 没有对 IP 头的内容进行保护,除非 IP 头被封装在 ESP 内部(采用隧道模式)。
封装模式 #
传输模式 #
隧道模式 #
传输模式和隧道模式的区别在于:
- 从安全性来讲,隧道模式优于传输模式。它可以完全地对原始 IP 数据包进行验证和加密。隧道模式下可以隐藏内部 IP 地址,协议类型和端口。
- 从性能来讲,隧道模式因为有一个额外的 IP 头,所以它将比传输模式占用更多带宽。
- 从场景来讲,传输模式主要应用于两台主机或一台主机和一台 VPN 网关之间通信;隧道模式主要应用于两台 VPN 网关之间或一台主机与一台 VPN 网关之间的通信。
配置 #
Step1:ACL 设定感兴趣流 #
R2#show run | se access
access-list 100 permit ip 172.168.0.0 0.0.255.255 192.168.0.0 0.0.255.255
R3#show run | se access
access-list 100 permit ip 192.168.0.0 0.0.255.255 172.168.0.0 0.0.255.255
Step2: IKE Phase 1 #
R3(config)#crypto isakmp policy 10
R3(config-isakmp)# encr aes 256
R3(config-isakmp)# hash sha512
R3(config-isakmp)# authentication pre-share
R3(config-isakmp)# group 24
Step3: IKE Phase 2 #
R3(config-isakmp)#crypto ipsec transform-set CCIE esp-aes 256 esp-sha512-hmac
R3(cfg-crypto-trans)# mode tunnel
Step 4: Pre-share Key #
R3(config)#crypto isakmp key ccie address 12.1.1.2
Step 5: Crypto Map #
R3(config)#crypto map CCIE 10 ipsec-isakmp
R3(config-crypto-map)# set peer 12.1.1.2
R3(config-crypto-map)# set transform-set CCIE
R3(config-crypto-map)# match address 100
R3(config)#int e0/0
R3(config-if)#crypto map CCIE
R3(config-if)#
测试 #
R2#show run | se ip route
ip route 192.168.0.0 255.255.0.0 Ethernet0/1 12.1.1.1
R3#show run | se ip route
ip route 172.168.0.0 255.255.0.0 Ethernet0/0 13.1.1.1
R2#ping 192.168.35.3 source 172.168.24.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.35.3, timeout is 2 seconds:
Packet sent with a source address of 172.168.24.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/7/18 ms
R2#
R2#show crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst src state conn-id status
13.1.1.3 12.1.1.2 QM_IDLE 1002 ACTIVE
IPv6 Crypto ISAKMP SA
R2#show crypto ipsec sa
interface: Ethernet0/1
Crypto map tag: CCIE, local addr 12.1.1.2
protected vrf: (none)
local ident (addr/mask/prot/port): (172.168.0.0/255.255.0.0/0/0)
remote ident (addr/mask/prot/port): (192.168.0.0/255.255.0.0/0/0)
current_peer 13.1.1.3 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 13, #pkts encrypt: 13, #pkts digest: 13
#pkts decaps: 13, #pkts decrypt: 13, #pkts verify: 13
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 12.1.1.2, remote crypto endpt.: 13.1.1.3
plaintext mtu 1422, path mtu 1500, ip mtu 1500, ip mtu idb Ethernet0/1
current outbound spi: 0x8B4A1080(2336886912)
PFS (Y/N): N, DH group: none
inbound esp sas:
spi: 0x6E2BE3E4(1848370148)
transform: esp-256-aes esp-sha512-hmac ,
in use settings ={Tunnel, }
conn id: 7, flow_id: SW:7, sibling_flags 80004040, crypto map: CCIE
sa timing: remaining key lifetime (k/sec): (4197493/573)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x8B4A1080(2336886912)
transform: esp-256-aes esp-sha512-hmac ,
in use settings ={Tunnel, }
conn id: 8, flow_id: SW:8, sibling_flags 80004040, crypto map: CCIE
sa timing: remaining key lifetime (k/sec): (4197493/573)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
R2#
参考文章
一张图认识 IPSec,区分 IKE SA(ISAKMP SA)和 IPSec SA
https://blog.csdn.net/pz641/article/details/114585187https://www.jannet.hk/internet-protocol-security-ipsec-zh-hant/