IPsec VPN安全框架基础

232 阅读9分钟

前言

企业对网络安全性的需求日益提升,而传统的TCP/IP协议缺乏有效的安全认证和保密机制.IPsec作为一种开放标准的安全框架结构,可以用来保证IP数据报文在网络传输的机密性 完整性和防重放

IPsec

  • 源于IPV6
  • IETF制定的一套安全保密性能框架
  • 建立在网络层的安全保障机制
  • 引入多种加密算法,验证算法,和**密钥管理(密钥交换)**机制
  • 也具有配置复杂,消耗运算资源较多,增加延迟,不支持组播等缺点
  • ipsec vpn 是利用ipsec隧道建立起来的vpn技术

图片.png

  • 认证方式
    • PSK 预共享密钥 两段输入的PSK一致 则通过
    • RSA签名 由CA机构签发 本地导入证书即可

ipsec加解密过程

  • 加密算法 [报文进行加密]
    • 手工配置 [成本高]
    • DH算法生成并共享 [简单高效 前提是对端设备支持什么版本]
  • 验证算法 [产生ICV]
    • 加密报文进行Hash验证报文完整性 [此处也有密钥加密]
    • 手工配置 [成本高]
    • DH算法生成并共享 [简单高效 前提是对端设备支持什么版本]
  • 加密报文+ICV(验证算法的值) 作用是验证真实性
  • 验证完整性与真实性 [验证算法计算]
  • 上述通过则根据加密算法解密报文 否则丢弃
  • 得到原始报文

ipsec.png

ipsec技术框架

图片.png

AH DES 3DES MD5 SHA1 SHA2 不推荐使用 DES 3DES加密算法存在安全隐患,建议优先使用AES,SM1或SM4算法 MD5和SHA-1验证算法存在安全隐患,建议使用SHA-2或者SM3算法

IKE协商

  • IKE协商的什么? 验证算法以及加密算法

图片.png

ipsec安全协议

图片.png

图片.png

  • AH无法保证机密性
  • NAT穿越功能 解决的问题是 内网设备进行ipsec 不改变源地址以及原始端口

ipsec封装模式

图片.png

图片.png

  • 加入新的包头 占用更多带宽
  • 一个企业的内网到一个企业的内网 肯定是隧道模式 或者GRE+IPSEC传输模式
  • 传输模式:传输点=加密点 隧道模式:传输点≠加密点

传输模式封装结构

图片.png

  • ESP AUTH DATA 为验证的值 ICA
  • AH验证全部 ESP验证被加密的报文+ESP标识

隧道模式封装结构

图片.png

安全联盟 SA

  • 顾名思义,通信双方结成盟友,相互信任亲密无间,即可达成约定
  • 由一个(SPI,IP目的地址,安全协议号)三元唯一标识
  • 决定了对报文进行何种处理:模式,协议,算法,密钥,生存周期等
  • 每个ipsec SA都是单向的
  • 可以手工建立或者通过IKE协商生成
  • SPD security policy database 安全策略数据库
  • SAD security association database 安全协商数据库

图片.png

  • SA协商出一条隧道 图片.png

  • 生存周期 指的是多久应该修改密码

IKE 因特网密钥交换

  • 建立在ISAKMP定义的框架上
  • 基于UDP(端口号500)的应用层协议,可为数据加密提供所需的密钥
  • 使用DH算法,在不安全的网络上安全的分发密钥,验证身份
  • 定时更新SA和密钥,实现完善的前向安全性
    • PFS 密钥丢失 不影响未来的数据安全 类似于(DH)
  • 允许ipsec提供抗重播服务
    • 生成随机数 发现重复的会丢弃
  • 简化ipsec的使用和管理,大大简化了ipsec的配置和维护工作

图片.png

用IKE-SA协商出隧道 然后用ipsec-SA加密数据报文

图片.png

主模式6个包 野蛮模式3个包

图片.png

IKE-SA主模式 [推荐使用]

图片.png

IKE-SA野蛮模式 [早期设备不支持加密的]

图片.png

IPSEC-SA快速模式

图片.png

IKE-SA 与 IPSEC-SA区别

图片.png

ipsec vpn 基本配置步骤

  1. 配置网络可达
  2. 配置acl匹配兴趣流
  3. 创建安全提议
  4. 创建安全策略
  5. 应用安全策略

基本配置

  • 策略名称 自定义
  • 本端接口 应用的接口
  • 本端地址 local address
  • 对端地址 remote address
  • 认证方式 key
  • 本端ID spi inbound
  • 对端ID spi outbound

配置验证

// 查看加密几个包
[CEA]display ipsec statistics
  IPsec packet statistics:
    Received/sent packets: 5/5
    Received/sent bytes: 480/480
    Dropped packets (received/sent): 0/0

    Dropped packets statistics
      No available SA: 0
      Wrong SA: 0
      Invalid length: 0
      Authentication failure: 0
      Encapsulation failure: 0
      Decapsulation failure: 0
      Replayed packets: 0
      ACL check failure: 0
      MTU check failure: 0
      Loopback limit exceeded: 0
      Crypto speed limit exceeded: 0
[CEA]

ipsec手工配置 [应用于私网对接私网]

图片.png

配置网络基本可达

CEA

sys
sys CEA
acl ad 3000
rule 15 permit ip so 192.168.1.0 0.0.0.255
rule 20 deny ip
int g0/2
ip add 12.1.1.2 24
nat out 3000
int g0/1
ip add 192.168.1.1 24
int Tunnel0 mode gre
ip add 192.168.0.1 30
so GigabitEthernet0/2
des 34.1.1.2
ip route-s 0.0.0.0 0 12.1.1.1
ip route-s 192.168.2.0 24 tun0

CEB

sys
sys CEB
acl ad 3000
rule 15 permit ip so 192.168.2.0 0.0.0.255
rule 20 deny ip
int g0/2
ip add 34.1.1.2 24
nat out 3000
int g0/1
ip add 192.168.2.1 24
int Tunnel0 mode gre
ip add 192.168.0.2 30
so GigabitEthernet0/2
des 12.1.1.2
ip route-s 0.0.0.0 0 34.1.1.1
ip route-s 192.168.1.0 24 tun0

PEA

sys
sys PEA
ospf 1
a 0
int l0
ip add 1.1.1.1 32
ospf 1 a 0
int g0/2
ip add 12.1.1.1 24
int g0/0
ip add 23.1.1.1 24
ospf 1 a 0

PEB

sys
sys PEB
ospf 1
a 0
int l0
ip add 2.2.2.2 32
ospf 1 a 0
int g0/2
ip add 34.1.1.1 24
int g0/0
ip add 23.1.1.2 24
ospf 1 a 0

配置匹配数据流

CEA

// 配置匹配数据流
[CEA]acl ad 3001
[CEA-acl-ipv4-adv-3001]rule 15 permit gre so 12.1.1.2 0 de 34.1.1.2 0
[CEA-acl-ipv4-adv-3001]qu

// 创建ipsec安全提议 名称cea
[CEA]ipsec transform-set cea
// 配置安全协议对IP报文的封装形式为传输模式
[CEA-ipsec-transform-set-cea]encapsulation-mode transport
// 配置ESP协议采用的加密算法为AES-CBC-192,认证算法为HMAC-SHA1
[CEA-ipsec-transform-set-cea]esp encryption-algorithm aes-cbc-192
[CEA-ipsec-transform-set-cea]esp authentication-algorithm sha1
[CEA-ipsec-transform-set-cea]quit

// 手工创建ipsec安全策略 名称P1
[CEA]ipsec policy P1 10 manual
// 指定引用acl 3001
[CEA-ipsec-policy-manual-P1-10]security acl 3001
// 指定饮用安全提议
[CEA-ipsec-policy-manual-P1-10]transform-set cea
// 指定对端ip地址
[CEA-ipsec-policy-manual-P1-10]remote-address 34.1.1.2
// 配置ESP协议的出方向SPI为12345,入方向SPI为54321
[CEA-ipsec-policy-manual-P1-10]sa spi outbound esp 12345
[CEA-ipsec-policy-manual-P1-10]sa spi inbound esp 54321
// 配置ESP协议的出方向SA的密钥为明文字符串abcdefg,入方向SA的密钥为明文字符串gfedcba
[CEA-ipsec-policy-manual-P1-10]sa string-key outbound esp simple abcdefg
[CEA-ipsec-policy-manual-P1-10]sa string-key inbound esp simple gfedcba
[CEA-ipsec-policy-manual-P1-10]quit

// 应用安全策略
[CEA]interface GigabitEthernet 0/2
[CEA-GigabitEthernet0/2]ipsec apply policy P1

CEB

[CEB]acl ad 3001
[CEB-acl-ipv4-adv-3001]rule 15 permit ip so 34.1.1.2 0 de 12.1.1.2 0
[CEB-acl-ipv4-adv-3001]qu
[CEB]ipsec transform-set ceb
[CEB-ipsec-transform-set-ceb]encapsulation-mode transport
[CEB-ipsec-transform-set-ceb]esp encryption-algorithm aes-cbc-192 
[CEB-ipsec-transform-set-ceb]esp authentication-algorithm sha1
[CEB-ipsec-transform-set-ceb]quit
[CEB]ipsec policy P1 10 manual
[CEB-ipsec-policy-manual-P1-10]security acl 3001
[CEB-ipsec-policy-manual-P1-10]transform-set ceb
[CEB-ipsec-policy-manual-P1-10]remote-address 12.1.1.2
[CEB-ipsec-policy-manual-P1-10]sa spi outbound esp 54321
[CEB-ipsec-policy-manual-P1-10]sa spi inbound esp 12345
[CEB-ipsec-policy-manual-P1-10]sa string-key outbound esp simple gfedcba
[CEB-ipsec-policy-manual-P1-10]sa string-key inbound esp simple abcdefg
[CEB-ipsec-policy-manual-P1-10]qu
[CEB]interface GigabitEthernet 0/2
[CEB-GigabitEthernet0/2]ipsec apply policy P1

验证

[CEA]dis ipsec policy 
-------------------------------------------
IPsec Policy: P1
Interface: Tunnel0
-------------------------------------------

  -----------------------------
  Sequence number: 10
  Mode: Manual
  -----------------------------
  Security data flow: 3001
  Remote address: 192.168.0.2
  Transform set: cea

  Inbound AH setting:
    AH SPI: 
    AH string-key: 
    AH authentication hex key: 

  Inbound ESP setting:
    ESP SPI: 54321 (0x0000d431)
    ESP string-key: ******
    ESP encryption hex key: 
    ESP authentication hex key: 
               
  Outbound AH setting:
    AH SPI: 
    AH string-key: 
    AH authentication hex key: 

  Outbound ESP setting:
    ESP SPI: 12345 (0x00003039)
    ESP string-key: ******
    ESP encryption hex key: 
    ESP authentication hex key: 
[CEA]

图片.png

ipsec [应用于私网出口ipsec 对接公网服务器数据加密]

图片.png

[CEA]ipsec transform-set cea
[CEA-ipsec-transform-set-cea]protocol ah
[CEA-ipsec-transform-set-cea]ah authentication-algorithm sha1
[CEA]acl ad 3001
[CEA-acl-ipv4-adv-3001]rule 15 permit ip source 12.1.1.2 0.0.0.0 destination 34.1.1.2 0.0.0.0
[CEA]ipsec policy P1 10 manual
[CEA-ipsec-policy-manual-P1-10]transform-set cea
[CEA-ipsec-policy-manual-P1-10]security acl 3001
[CEA-ipsec-policy-manual-P1-10]sa spi outbound ah 123456
[CEA-ipsec-policy-manual-P1-10]sa spi inbound ah 123456
[CEA-ipsec-policy-manual-P1-10]sa string-key inbound ah simple 123456
[CEA-ipsec-policy-manual-P1-10]sa string-key outbound ah simple 123456
[CEA-ipsec-policy-manual-P1-10]qu
[CEA]interface GigabitEthernet 0/2
[CEA-GigabitEthernet0/2]ipsec apply policy P1
-----------------------------------------------------------------------------------------
[CEB]acl advanced 3001
[CEB-acl-ipv4-adv-3001]rule 15 permit ip source 34.1.1.2 0.0.0.0 destination 12.
1.1.2 0.0.0.0 
[CEB-acl-ipv4-adv-3001]qu
[CEB]ipsec transform-set ceb
[CEB-ipsec-transform-set-ceb]protocol ah
[CEB-ipsec-transform-set-ceb]ah authentication-algorithm sha1
[CEB]ipsec policy P1 10 manual
[CEB-ipsec-policy-manual-P1-10]transform-set ceb
[CEB-ipsec-policy-manual-P1-10]security acl 3001
[CEB-ipsec-policy-manual-P1-10]remote-address 12.1.1.2
[CEB-ipsec-policy-manual-P1-10]sa spi outbound ah 123456
[CEB-ipsec-policy-manual-P1-10]sa spi inbound ah 123456
[CEB-ipsec-policy-manual-P1-10]sa string-key inbound ah simple 123456
[CEB-ipsec-policy-manual-P1-10]sa string-key outbound ah simple 123456
[CEB-ipsec-policy-manual-P1-10]qu
[CEB]int g0/2
[CEB-GigabitEthernet0/2]ipsec apply policy P1

图片.png

常见问题

  1. 园区出口nat与ipsec冲突解决办法
    • 解决问题思路是进入ipsec隧道的数据流量不能被地址转换 地址转换后 acl匹配不到
    1. 思路一:nat地址不转换 nat acl 将去往对端园区的地址段deny掉 rule 5 deny ip so 192.168.1.0 0.0.0.255 de 192.168.2.0 0.0.0.255
    2. 思路二:感兴趣流将所有数据都匹配 匹配感兴趣流acl 将源地址改为自己的园区出口公网地址 rule 5 permit ip so 12.1.1.2 0 de 192.168.2.0 0.0.0.255 <此办法会导致原有前往互联网的数据中断>
    3. 思路三:感兴趣流只匹配gre数据进入隧道 通过gre+ipsec方式 acl匹配gre流量 rule 5 permit gre so 12.1.1.2 0 de 192.168.2.0 0.0.0.255