IPsec 基础知识点总结

IPsec Framework

IPsec 是一种 L3VPN 技术,它提供以下 4 种 security services:

      • Authentication
      • Data confidentiality
      • Data Integrity
      • Anti-reply

IPsec 本身并不是一种协议,它是一种 framework,由多种协议及标准组成。在实施部署时可以根据具体的要求在一个统一的 framework 下选择不同的协议,下图很好的展示了 framework 和 implementation 之间的区别和关联:

Framework 好似一栋楼房的框架,Implementation 好似每间屋子的装修。

IPsec 部署又被分为两个部分:

      • Phase 1
        • 又被称为 IKE Phase 1,ISAKMP Phase 1 或者简称为 IKE
      • Phase 2
        • 又被称为 IKE Phase 2,ISAKMP Phase 2 或者简称为 IPsec

Phase 1

ISAKMP and IKE

Phase 1 的主要目的是对 IPsec peer 进行 authentication,然后建立一个 secure channel,这个 secure channel 的目的是保护 IKE Exchange。在很多文档中 ISAKMP 和 IKE 都被等同起来混着使用,其实两者是有区别的。ISAKMP 是一种 framework,它规定了进行 key exchange 的机制。IKE 是具体的 implementation,ISAKMP 是 IKE 的一部分:

Phase 1 的最终结果是得到 IKE Security Associations (IKE SA),SA 的定义是 shared security attributes,它包括加密使用的算法,密匙,模式等等信息。本文所有内容均基于 IKEv1。

ISAKMP/IKE 端口号 UDP 500。

Phase 1 Mode

Phase 1 又有两种模式:

      • Main Mode (MM)
        • 交换 6 次信息,更安全
      • Aggressive Mode (AM)
        • 交换 3 次信息,更快速

如果在 phase 1 我们选择了用 PSK 做 authentication 那么在选择 MM 还是 AM 的时候有一个很重要的考量因素是 IP 地址是动态还是静态。MM 不支持 dynamic IP with PSK。在 MM 中为了对通信双方的 Identity (IKE ID)进行加密(第5次和第6次信息交换) 会利用双方的 PSK 产生一个 shared key (DH 算法)。当 responder 收到 initiator 的 proposal 和 key generation information 后需要从其数据库中找到该 initiator 对应的 PSK,识别 initiator 是通过 IKE ID 进行的,但是 IKE ID 是在产生了 shared key 以后才在加密的隧道中交换的。这就变成了鸡和蛋的问题。解决该问题的方法就是 initiator 必须使用静态 IP,responder 会将 initiator 的 PSK 和其 IP 地址进行绑定。当我们选用 certificate 进行 authentication 的时候就不会存在该问题,因为 certificate 中的 DN 可以提供足够的信息对 peer 进行识别。当然我们也可以选择使用 AM 因为 IKE ID 被放在了第一次信息交换中。

Phase 1 Key Exchange

Checkpoint 的一张图很详细的展示了 IPsec 中的 key exchange 过程

Phase 2

Phase 2 只有一种模式,叫做 Quick Mode (QM),Phase 2 的最终结果是得到 IPsec Security Associations (IPsec SA)。和 Phase 1 有所不同的是在 Phase 2 中我们将得到两个 SA,Outbond SA 和 Inbound SA。最终的 IPsec Tunnel 其实是由两个 tunnel 组成,一个负责 Tx,一个负责 Rx。

无论是 IKE SA 还是 IPsec SA 它们都有一个使用时限 (IKE SA 24 小时,IPsec SA 1 小时或 4,608,000 KB 数据)。在 SA 的使用期限快要结束的时候系统会自动重新协商新的 SA,这个过程叫做 rekeying。

Security Protocol

在 IPsec Framework 中有一个模块叫做 IPsec Protocol 或者 Security Protocol,有两个协议可以选择,分别是 Authentication Header (AH) 和 Encapsulating Security Payload (ESP)。

从上图中可以看出 AH 只能提供 authentication,ESP 可以同时提供 authentication 和 encryption。

当 AH 提供 authentication 服务时它会对整个数据包进行验证,包括最外面的 IP header。ESP 可以单独提供 authentication 或者 encryption 或两者同时进行,ESP 的 authentication 不包括 IP header。

AH 的端口号为 IP 50 ,ESP 端口号为 IP 51 (注意它们既不是 TCP 也不是 UDP 而是 IP 协议)。

Encapsulation Mode

在 phase 1 中我们需要选择 MM 或者 AM,在 phase 2 中我们也有两种模式分别是 Transport Mode 和 Tunnel Mode。无论是 AH 还是 ESP 都支持这两种模式。

Transport Mode

Transport Mode 并未对数据包的结构进行改变,它适用于两个 Hosts 之间的 IPsec 通信。

Tunnel Mode

使用 Tunnel Mode 会给数据包加上新的 IP header,原来的 IP header 会被 AH 或者 ESP 封装,它适用于 site-to-site 的 IPsec 通信。

Proxy Identity (Proxy-ID)

Proxy-ID 代表的就是需要进行 IPsec 加密通信的网段,当两端进行 IPsec 协商的时候 Proxy-ID 必须相同(即定义的网段相同),也就是所谓的 mirror image。

Router A 需要定义 proxy-id 为:

source – 192.168.10.0/24,destination – 192.168.0.0/24

Router B 需要定义 proxy-id 为:

source – 192.168.0.0/24,destination – 192.168.10.0/24

Perfect Forward Secrecy (PFS)

Phase 1 Key Exchange 最后产生出了一个 symmetrical key,这个 key 会被 phase 2 用来产生最终的 IPsec Key,这样就存在安全风险,如果 phase 1 的 key 被破解那么意味着 phase 2 最终的 key 也可能被破解。PFS 增强了安全性,它确保了 phase 1 和 phase 2 会独立的产生自己的 key。

Phase 2 Key Exchange

总结

配置 IPsec 时双方至少应该配置且匹配以下参数:

Phase 1:

    • Encryption
    • HASH
    • Authentication
    • DH Group

Phase 2:

    • Encryption
    • HASH
    • Security Protocol
    • Proxy-ID
    • Encapsulation Mode
    • PFS (optional)

配置示例

IPsec 的配置方式有很多种,这里用最基本的 crypto map 的方式为例。

R1 和 R2 配置默认路由指向对方

R1(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.2

R2(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.1

R1 配置 phase 1 isakmp policy 和 PSK

R1(config)#crypto isakmp policy 1
R1(config-isakmp)#encryption aes 256
R1(config-isakmp)#hash sha 
R1(config-isakmp)#authentication pre-share 
R1(config-isakmp)#group 5

R1(config)#crypto isakmp key CISCO address 1.1.1.2

R2 配置 phase 1 isakmp policy 和 PSK

R2(config)#crypto isakmp policy 100
R2(config-isakmp)#encryption aes 256
R2(config-isakmp)#hash sha
R2(config-isakmp)#authentication pre-share
R2(config-isakmp)#group 5

R2(config)#crypto isakmp key CISCO address 1.1.1.1

R1 配置 phase 2 Proxy-ID

R1(config)#ip access-list extended VPN_Traffic
R1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 172.16.1.0 0.0.0.255

R2 配置 phase 2 Proxy-ID

R2(config)#ip access-list extended VPN_Traffic
R2(config-ext-nacl)#permit ip 172.16.1.0 0.0.0.255 192.168.1.0 0.0.0.255

R1 配置 phase 2 isakmp policy (Cisco 称为 transform set)

R1(config)#crypto ipsec transform-set VPN_TS esp-aes 256 esp-sha-hmac 

R2 配置 phase 2 isakmp policy

R2(config)#crypto ipsec transform-set VPN_TS esp-aes 256 esp-sha-hmac 

R1 配置 crypto map

R1(config)#crypto map R1_Crypto_Map 10 ipsec-isakmp 
R1(config-crypto-map)#set peer 1.1.1.2
R1(config-crypto-map)#set transform-set VPN_TS
R1(config-crypto-map)#match address VPN_Traffic

R1(config)#int gi0/0/0
R1(config-if)#crypto map R1_Crypto_Map

R2 配置 crypto map

R2(config)#crypto map R2_Crypto_Map 10 ipsec-isakmp 
R2(config-crypto-map)#set peer 1.1.1.1
R2(config-crypto-map)#set transform-set VPN_TS
R2(config-crypto-map)#match address VPN_Traffic

R2(config)#int gi0/0/0
R2(config-if)#crypto map R2_Crypto_Map

发表评论

电子邮件地址不会被公开。