IPSEC VPN

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。

IKE与IPSec的关系图
IKEv1协商阶段1

IKEv1协商阶段1的目的是建立IKE SA。IKE SA建立后对等体间的所有ISAKMP消息都将通过加密和验证,这条安全通道可以保证IKEv1第二阶段的协商能够安全进行。

IKEv1协商阶段1支持两种协商模式:主模式(Main Mode)和野蛮模式(Aggressive Mode)。

主模式包含三次双向交换,用到了六条ISAKMP信息。

  1. 消息①和②用于提议交换发起方发送一个或多个IKE安全提议,响应方查找最先匹配的IKE安全提议,并将这个IKE安全提议回应给发起方。匹配的原则为协商双方具有相同的加密算法、认证算法、认证方法和Diffie-Hellman组标识。
  2. 消息③和④用于密钥信息交换双方交换Diffie-Hellman公共值和nonce值,用于IKE SA的认证和加密密钥在这个阶段产生。
  3. 消息⑤和⑥用于身份和认证信息交换(双方使用生成的密钥发送信息),双方进行身份认证和对整个主模式交换内容的认证。
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/114585187

https://www.jannet.hk/internet-protocol-security-ipsec-zh-hant/

           

No comments

Comments feed for this article

Reply

Your email address will not be published. Required fields are marked *