六、IPSec VPN IKE&L2L

1 概念

  • IPSec : Internet Protocol Security基于IP协议的安全,IPsec是个协议组内含多种协议

IPSec详细介绍

  • 在网络层为ip数据包提供安全服务的协议组,包括私密性,完整性,防重放攻击,以及身份认证;
  • 优点∶
    ■ 对下层没有要求(与物理层和数据链路层无关)
    ■ 对上层没有要求( 与传输层和应用无关)
    ■ 易于扩展(与网络规模无关)
  • VPN : Virtual Private Network 虚拟专用网络
  • IPSec VPN : IPSec协议组实现IP数据包传输安全的一种VPN技术

2 IPSec VPN的类型

site-to-Site VPN

  • 用于两个站点的内部网络可以安全的相互通信
  • 特点:站点通常都具备固定的公网ip地址
  • 包括:L2L, DMVPN,GETVPN,GRE over IPSec, SVTL, EZVPN

Remote Access VPN

  • 用于移动用户或者远程办公的个体用户连接到中心网络.
  • 特点:中心网络具备固定的公网IP地址,远端用户P地址不固定心
  • 包括:SSLVPN,EZVPN,DVTI(其中 SSLVPN不属于IPSec VPN)

3 IPSec协议组的组成

IPSec由三部分组成

  • IKE(Intermet Key Exchange)互联网秘钥交换
  • AH(Authentication Header)认证头部
  • ESP(Encapsulation Security Protocol)封装安全协议

3.1 IKE(控制层面)

作用

  • IPSec使用IKE来完成对等体之间的认证(PSK)和秘钥的生成与交换(DH算法)
  • 协商和维护安全关联SA (Security Association)
  • 参数SA是一个集合,包含了加密算法,认证方式等等,可以手动配置里面内容
  • 通过认证,排除伪装者
  • 自动产生秘钥,并自动更新秘钥
  • 动态,安全的交换秘钥

组成部分

  • Oakley
  • SKEME
  • ISAKMP

工作原理

  • Oakley负责支持现有或新的算法
  • SKEME负责定义秘钥交换方式
  • ISAKMP (Internet Security Association and KeyManagement Protocol)负责Message交互.
  • Oakley, SKEME相当于是后台程序,ISAKMP相当于前台执行者.(类似OSPF通过LSDB计算出RIB表项),ISAKMP定义了整体的协商框架
  • 可以简单的认为ISAKMP = IKE(从SA 和 KM可以看出ISAKMP的主要工作就是 协商SA以及计算KM

3.2 AH /ESP(数据层面)

概念

  • 用做封装实际数据包的头部的两种形式

4 控制层面——IKE

ISAKMP(IKE)在Peer之间建立一个安全通道来协商Key需要两个阶段来协商完成

注: 概念解释

  • PFS
    (1)Perfect-Forward-Secrecy,完美向前保密;
    (2)由于在Quick Mode计算对称秘钥使用的材料是来自Main Mode,具有一定的关联性,如果在Main Mode秘钥被破译,则可能会对数据传输的安全性造成影响(因为使用的是第二阶段计算出的对称秘钥进行加密)
    (3)所以,使用PFS,在第二阶段重新进行AH的协商,减少一二阶段的关联性,从而增加真实数据传输的安全性(即使再次AH协商也会有被破译的风险,但是加密解密增加了时间的成本,一定程度上也增加了数据传输的安全性)

4.1 阶段1

  • 工作原理
    ■ 通过Main Mode(6个包)或Aggressive Mode(3个包),协商产生一个双向的ISAKMP SA该SA内算法用于保护IKE协商过程
    【Main Mode协商来回需要6个报文,而Aggresive Mode协商来回只需要3个报文,后者多用在性能较差的设备上,现在几乎不再使用该模式】
    ■ 在这个安全通道中使用非对称密钥算法“DH”“PSK”计算得到秘钥“Ka, Kd,Ke, a=Authentication,d=Data, e=Encryption”
    ■ 使用Ke来保护阶段1的第五个和第六个,以及阶段2的所有Message交互
    ■ 使用Ka来完成Peer之间的身份认证
    ■ 使用Kd来产生将来实际加密数据的Key

  • 流程图
    在这里插入图片描述
    在这里插入图片描述

M1/M2

  • 协商算法
  • 包含通信双方各自的Cookie (8bytes),作为协商序列号,Cookie=Hash (P,Port,Protocol,Date,Time, Random),阶段1,2均使用相同Cookie
  • M1包含发送方的所有SA,M2包含接收方选择的匹配的一个SA(因为可能存在一个总部对多个分公司的情况,所以可以是一对多的情况,只需要匹配SA)
  • SA包含对协商消息保护所采用的加密算法,Hash算法,DH秘钥长度,身份认证方式,以及协商的有效期

M3/M4

  • 协商秘钥(及材料)
  • 通信双方开始交换DH计算出的公开值,即DH的公钥
  • 交换公钥的过程中携带一个随机数Nonce
  • (现时标识)交换完以上两个参数以后,开始各自计算Ka, Kd, Ke
  • 该交互过程通常不存在故障性

M5/M6

  • 通信双方利用计算出的Ke完成对Message的加密,同时再用Ka来完成双方的身份认证

  • 排错——第一阶段失败的原因?
    收不到
    ■ 外层IP(通信点IP)路由不可达
    收的到
    ■ 双方没有匹配的SA,SA协商失败(停在SA协商阶段,即一二个包)
    ■ 双方PSK没有设置,则无法计算出秘钥和材料(停在计算Ka、Kd、Ke时即三四个包,因为计算需要PSK+DH参数)
    ■ 双方PSK设置不一致,则身份认证失败(停在身份认证阶段,即五六个包)

4.2 阶段2

  • 工作原理
    ■ 通过Quick Mode(3个包)构建IPSec SA,该SA用于保障后续真实数据的传输,包含对数据封装使用什么协议,加密算法,HMAC算法,工作模式以及感兴趣流量
    ■ 在ISAKMP的保护下,产生两个单向的IPSec SA,一个用于发送数据,一个用于接收数据
    ■ 基于阶段1的Kd结合IPSec SA内定义的算法来产生加密实际数据的Key,不过加密需要基于ESP的封装方式,如果是AH则不具备加密的功能,但是他们都有检验完整性的功能

  • 流程图
    在这里插入图片描述

  • IPSec SA内容
    以下探讨的是真实数据的封装和加密方式
    ■ 使用什么协议封装(ESP,AH)【后面会细说】
    ■ 使用什么加密算法以及秘钥长度( DES,3DES,AES)
    ■ 使用什么认证算法以及输出长度(MD5,SHA)
    ■ 工作模式(Tunnel,Transport)
    ■ 感兴趣流量,即哪些数据需要进行加密
    ■ 保护阶段2协商的有效期,也就是秘钥的有效期(两种方式,以时间为限制,以流量为限制
    ■ 是否启用DH算法.(即是否启用PFS)

  • 工作模式
    ■ Transport Mode传输模式∶加密点等于通信点
    ■ Tunnel Mode隧道模式:加密点不等于通信点.
    在这里插入图片描述
    ■ 如果加密点与通信点地址不相同,那么必须使用Tunnel模式
    ■ 如果加密点与通信点地址相同,那么可以使用Transport模式,也可以是Tunnel模式
    ■ 针对第二种情况,如果使用Tunnel模式,那么会多出一层包头,导致载荷减少
    ■ 工作模式的不同会影响真实数据中报文的封装格式

  • 感兴趣流
    ■ 需要使用类似ACL的工具来吸取感兴趣流

4.3 阶段1、2以及真实数据间联系

阶段一

  • DH+PSK+Nonce计算出Ka、Kd、Ke;
  • 这三者为IKE后续阶段提供加密秘钥Ke和身份认证秘钥Ka,以及为后续加密真实数据的对称加密算法的生成材料(Kd)

阶段二

  • 通过阶段一计算出的Kd值,结合这个过程协商的SA计算出后续加密真实数据的对称加密算法的秘钥
  • 通过协商的SA内的头部封装形式来决定数据的整体加密以及验证完整性的形式
  • 还有后续数据报文的tunnel模式所体现的数据包格式等等,这里不再细说

5 数据层面——AH/ESP头部以及数据库

注:概念解释

  • NAT-T
    (1)现网中,几乎不使用传统NAT(改变IP),而是使用NAPT(改变IP+端口号)
    (2)对于支持NAT的IPSec ESP头部封装而言,并不能满足NAPT的转换条件,因为不存在端口号
    (3)因此,衍生出NAT-T技术,在封装的IP头后添加UDP 4500(源目)来帮助NAPT的功能实现
    在这里插入图片描述

5.1 头部封装内容

  • 报文内容
    从图中也可以看出ESP不包含完整性认证信息,也侧面说明ESP可以在“加密”和“完整性认证”两个功能之中进行二选一
    在这里插入图片描述
  • 头部主要部分
    ■ SPI:用于接收方匹配相应的SA来进行数据处理
    ■ Sequence:序列号,本端进行防溢出,对端进行防重放;由Quick Mode阶段的Message ID生成;
    本端防溢出:一旦序列号到达一定值则重新进行SA协商
    对端防重放:收到的序列号必须为上个Sequence的基础上+1,否则丢包,两端的第一阶段的Message ID一致,Sequence由此生成;在Main mode中,使用cookie来进行防重放检测,一旦对端收到cookie值和上一个不同则直接丢包;
    在这里插入图片描述
    ■ 完整性认证信息:用于完整性认证

5.2 AH (Authentication Header)

  • 特点
  • 提供源认证
  • 完整性校验
  • 现在基本不使用
    (1)不提供加密
    (2)不支持NAT和NAPT

  • AH头部不支持NAT的原因分析
    (1)对于包含AH头部的报文,发送设备的处理过程是先完整性认证,再NAT;
    (2)对于包含AH头部的报文,接收设备的处理过程是先完整性认证,再NAT;
    (3)由于接收方使用NAT前的原始信息去校验发送方NAT后的数据,所以NAT肯定失败;
内部到外部(发送方)外部到内部(接收方)
完整性认证完整性认证
路由解密
NATNTA
加密路由
  • 过程
  • 所有数据都是明文传输
  • 发送方将[IP头部+载荷+PSK]一起做Hash,结果都放到AH头部,再将头部放在IP包头与载荷之间
  • 接收方将[IP头部+载荷+PSK]一起做Hash,将结果与收到的AH头部记录的Hash值进行比对来完成身份认证以及完整性校验.
    在这里插入图片描述
    在这里插入图片描述
  • 报文细节

在这里插入图片描述

5.3 ESP (Encapsulation Security Payload)

  • 特点
  • 提供私密性,完整性,源认证功能,数据载荷加密传输
  • ESP头部包含:SPI(Cookies)和序列号
  • ESP尾部用于表明填充长度以及后面是否存在认证字段
  • 支持NAT和NAPT
  • ESP可以在“加密”和“完整性验证”两个功能中二选一
  • 过程
  • 发送方:先加密再哈希
  • 接收方:先哈希再解密

  • 为什么发送方不可以先哈希再加密?
    (1)发送方的操作步骤会影响接收方的操作步骤,改后接收方就是先解密再反哈希,但是哈希不能反向,无法获取真实数据,所以这种办法不可取
    (2)浪费CPU资源,如果完整性被破坏,就没有解密的必要了
    (3)有安全隐患,黑客可以利用改后操作一直发包强迫设备解密占用CPU资源

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 报文细节

在这里插入图片描述

5.4 两者模式下的封装区别

请添加图片描述请添加图片描述

  • 图中使用AH+ESP头部的原因
    ■ 结合AH完整性验证范围大的优点以及ESP对数据进行加密的优点
    ■ 但是需要在不存在NAT的环境下使用

5.5 数据库和具体流程

以下两个数据库需要联合使用,先查SPDB再查SADB

  • SPDB(security policy database)
    匹配对应感兴趣流的数据库
  • SADB(security association database)
    SA即真实数据使用的算法和秘钥;根据(SPI,Peer IP、protocol)三元组,匹配对应SA,由于SA是单向的,因此本地的出方向的SA和对端的入方向SA的SPI相同;使用三元组是加快查询速度,不然就SPI其实就可以做到精准查询了;

请添加图片描述

6 IPSec L2L过程

在这里插入图片描述
(1)产生内网互访流量 172.16.0.1 -> 192.168.0.1
(2)CE1接收之后,根据默认路由将数据路由到S2/0接口
(3)S2/0由于有配置IPSec,且流量符合IPSec内的ACL表项,所以开始进行IKE过程(九个包)
(4)IKE完成后开进行正常流量的传输(可能存在加密和认证等IPSec操作)


综上,IPSec要想成功运行,需要三要素:
(1)存在路由引导流量到配置了IPSec的接口(这个接口可以是物理接口也可以是tunnel接口)
(2)IPSec正确配置且挂载在正确的接口上
(3)流量符合IPSec内的ACL表项

7 IKE命令

在这里插入图片描述
下面为CE1的IPSec VPN的配置部分;基础配置如接口和默认路由不再展示,CE2配置类似于CE1也不再展示

  • 修改ISAKMP 中的SA属性
CE1#conf t
CE1(config)#crypto isakmp policy ? 
  <1-10000>  Priority of protection suite

CE1(config)#crypto isakmp policy 10

CE1(config-isakmp)#?
ISAKMP commands:
  authentication  Set authentication method for protection suite //设置认证方式
  default         Set a command to its defaults
  encryption      Set encryption algorithm for protection suite //设置对称加密算法的秘钥
  exit            Exit from ISAKMP protection suite configuration mode
  group           Set the Diffie-Hellman group //设置DH要生成的最终秘钥的长度
  hash            Set hash algorithm for protection suite //设置hash的具体方式 
  lifetime        Set lifetime for ISAKMP security association //设置协商时间
  no              Negate a command or set its defaults

CE1(config-isakmp)#authentication ?
  pre-share  Pre-Shared Key
  rsa-encr   Rivest-Shamir-Adleman Encryption
  rsa-sig    Rivest-Shamir-Adleman Signature
CE1(config-isakmp)#authentication pre-share
        
CE1(config-isakmp)#encryption ?
  3des  Three key triple DES
  aes   AES - Advanced Encryption Standard.
  des   DES - Data Encryption Standard (56 bit keys)
CE1(config-isakmp)#encryption 3des
 
CE1(config-isakmp)#group ?//设置K的长度
  1  Diffie-Hellman group 1
  2  Diffie-Hellman group 2
  5  Diffie-Hellman group 5
CE1(config-isakmp)#group 1


CE1(config-isakmp)#hash ?
  md5  Message Digest 5
  sha  Secure Hash Standard
CE1(config-isakmp)#hash md5


设置PSK值

CE1(config)#crypto isakmp key 0 cisco address 200.64.0.3//前面的cisco是设置PSK,后面设置的IP地址是对端通信IP

设置IPSec SA

//可以设置认证的类型和加密的形式,以及报头的封装类型
CE1(config)#crypto ipsec transform-set ?
  WORD  Transform set tag

CE1(config)#crypto ipsec transform-set 10 ?
  ah-md5-hmac   AH-HMAC-MD5 transform
  ah-sha-hmac   AH-HMAC-SHA transform
  comp-lzs      IP Compression using the LZS compression algorithm
  esp-3des      ESP transform using 3DES(EDE) cipher (168 bits)
  esp-aes       ESP transform using AES cipher
  esp-des       ESP transform using DES cipher (56 bits)
  esp-md5-hmac  ESP transform using HMAC-MD5 auth
  esp-null      ESP transform w/o cipher
  esp-seal      ESP transform using SEAL cipher (160 bits)
  esp-sha-hmac  ESP transform using HMAC-SHA auth

CE1(config)#crypto ipsec transform-set 10 esp-md5-hmac ?
  ah-md5-hmac  AH-HMAC-MD5 transform
  ah-sha-hmac  AH-HMAC-SHA transform
  comp-lzs     IP Compression using the LZS compression algorithm
  esp-3des     ESP transform using 3DES(EDE) cipher (168 bits)
  esp-aes      ESP transform using AES cipher
  esp-des      ESP transform using DES cipher (56 bits)
  esp-null     ESP transform w/o cipher
  esp-seal     ESP transform using SEAL cipher (160 bits)
  <cr>

CE1(config)#crypto ipsec transform-set 10 esp-3des esp-md5-hmac 

设置工作模式

CE1(config)#crypto ipsec transform-set 10 esp-3des esp-md5-hmac 
CE1(cfg-crypto-trans)#mode ?
  transport  transport (payload encapsulation) mode
  tunnel     tunnel (datagram encapsulation) mode
  CE1(cfg-crypto-trans)#mode tunnel

设置感兴趣流

CE1(config)#access-list 100 permit ip host 172.16.0.1 host 192.168.0.1 

整合ISAKMP SA和IPSec SA
//isakmp不需要匹配,因为所有的都发

CE1(config)#crypto map CCIE ?
  <1-65535>       Sequence to insert into crypto map entry

CE1(config)#crypto map CCIE 10 ? 
  ipsec-isakmp  IPSEC w/ISAKMP
  
CE1(config)#crypto map CCIE 10 ipsec-isakmp
CE1(config-crypto-map)#set peer 200.64.0.3//设置邻居IP,根据该IP可以确定一个ISAKMP SA
CE1(config-crypto-map)#set transform-set 10//确定使用的IPSec SA
CE1(config-crypto-map)#match address 100//匹配感兴趣流
//设置新的对等体需要CE1(config)#crypto map CCIE 20 ipsec-isakmp,和原本的是Back up关系,一个ISAKMP SA可以匹配多条IPSec SA和感兴趣流,一条IPSec SA匹配一条感兴趣流

接口开启IPSec VPN

CE1(config)#int s2/0
CE1(config-if)#crypto map CCIE

查看命令

  • 查看ISAKMP 中SA属性

默认的SA属性

CE1#show crypto isakmp policy 

Global IKE policy
Default protection suite
        encryption algorithm:   DES - Data Encryption Standard (56 bit keys).
        hash algorithm:         Secure Hash Standard
        authentication method:  Rivest-Shamir-Adleman Signature
        Diffie-Hellman group:   #1 (768 bit)
        lifetime:               86400 seconds, no volume limit

正确的SA属性

CE1#show crypto isakmp policy 

Global IKE policy
Protection suite of priority 10
        encryption algorithm:   Three key triple DES
        hash algorithm:         Secure Hash Standard
        authentication method:  Pre-Shared Key
        Diffie-Hellman group:   #1 (768 bit)
        lifetime:               86400 seconds, no volume limit
Default protection suite
        encryption algorithm:   DES - Data Encryption Standard (56 bit keys).
        hash algorithm:         Secure Hash Standard
        authentication method:  Rivest-Shamir-Adleman Signature
        Diffie-Hellman group:   #1 (768 bit)
        lifetime:               86400 seconds, no volume limit
  • 查看加密和解密的数据
CE1#show crypto engine connections active
  • 查看隧道情况
CE1#show crypto isakmp sa

8 思考

8.1 为什么一定要封装头部(AH/ESP)?

  • (1)完整性和身份认证后的数据需要存放在里面
  • (2)通过头部标识可以帮助接收方匹配对应的SA来进行对应操作

8.2 ESP和AH哪一个支持NAT和NAPT,为什么?

  • (1)ESP支持NAT和NAT-T,前者因为ESP头部校验数据的时候忽略外部的IP头,后者是可以插入UDP 4500来支持NAPT的转换(也就是实现了NAT-T的功能)
  • (2)ESP不支持NAT和NAPT,因为发送方先是校验完整性然后再进行NAT修改外部IP头,所以接收方使用AH头部内的原始校验信息校验NAT后的数据自然就是校验失败,所以也就不支持NAT了,当然更加不支持NAT-T

8.3 IKE第一阶段和第二阶段以及真实数据之间的关联

  • (1)第一阶段为第二阶段提供对称秘钥的生成材料(可以阻断这种功能,使用PFS),并且第一阶段产生的秘钥可以加密IKE后续数据
  • (2)第二阶段为真实数据传输协商头部封装方式,以及加密和验证方法…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辽胜于无

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值