互联网安全协议(英语:Internet Protocol Security,缩写:IPsec)是一个协议包),透过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议网络传输协议)族(一些相互关联的协议的集合)

0x01 简介

1、概述

定义:IPesc协议时IETF制定的三层隧道加密协议,它为internet上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证。由一系列安全协议构成的,能够提供机密性、完整性、数据源认证和重放保护。IPsec还可以被用于VPN中,来对其他的vpn做保护作用,比如GRE over IPSec、l2tp over ipsec,ipsec的配置相对复杂,不支持组播,消耗的资源比较大

2、协议体系

(1)安全协议:AH、ESP

(2)工作模式:传输模式/隧道模式

(3)密钥管理:IKE

3、优点

(1)支持IKE(Internet Key Exchange,因特网密钥交换),可实现密钥的自动协商功能,减少了密钥协商的开销。可以通过IKE建立和维护SA的服务,简化了IPsec的使用和管理。

(2)所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec,而不必对这些应用系统和服务本身做任何修改。

(3)对数据的加密是以数据包为单位的,而不是以整个数据流为单位,这不仅灵活而且有助于进一步提高IP数据包的安全性,可以有效防范网络攻击。

4、IPsec的应用

  • 加密应用层数据
  • 在公共互联网上为路由器发送数据提供安全保障
  • 在不加密的情况下进行身份认证,比如验证来自一个已知发送者的数据报
  • 通过使用 IPsec 隧道设置电路来保护网络数据,在这些电路中,所有数据在两个端点之间发送时都被加密,就像使用虚拟专用网络(VPN)连接一样

0x02 IPsec的协议体系

1、组成部分

(1)安全协议:AH、ESP

​ AH:认证头部

​ ① 基于ip协议51的组成部分

​ ② 支持数据的完整性,不支持加密性

​ ③ 认证头部,是除了可变字段之外的报文头部一起进行哈希计算,不适合nat环境, 所以使用较少

​ ESP:封装安全协议

​ ① 基于ip协议50的组成部分

​ ② 支持数据的完整性,支持加密性

(2)工作模式:传输模式/隧道模式

​ 传输模式

                    ① 报文封装:IPSec头部添加到原始IP头部和数据之间;不会额外添加一个新的头部

​ ② 主要是用在端到端之间

​ 隧道模式

​ ① 报文封装:IPSec头部添加在原始IP头部之前;并且会额外添加一个新的头部

​ ② 主要是用在站点到站点之间

(3)密钥管理:IKE

​ IKE:互联网密钥交换,是IPsec的信令协议

                    ① IKE也是一个框架,由多个协议构成

​ Oakley:密钥交换协议,它允许认证过的双方通过不安全的网络交换秘钥的一部 分元素,这一过程是通过迪菲-赫尔曼密钥交换来实现的。该协议由 H.Orman在1998年提交,被广泛用在因特网密钥交换(IKE)中

​ SKEME:安全超文本传输协议,是一个HTTPS URI scheme的可选方案,也是为 互联网的HTTP加密通讯而设计。

​ ISAKMP:IKE的核心协议,它决定了IKE协商的封装格式、交换过程、模式的切 换等。

​ ② 基于UDP端口500

​ ③ 实现密钥的动态协商,用于提供密钥的安全

2、安全联盟

安全协议相关字段介绍

​ 1)SPI(安全参数索引)

​ ① 安全参数:具体指的就是协商之后的保护策略

​ ② 索引:类似目录,由不同的安全编号,不同的编号指向不同的安全策略

​ 标识和区分SADB(安全关联数据库)中不同的SA信息

​ ① 不同的spi标识了与不同对等体之间协商sa信息,这个信息存放在SDDB,每个sa都有通过的spi唯 一标识

​ 不同对等体之间采用唯一的序列号(spi值)

​ ① spi值在两个对等体协商过程中,自动产生的

​ 2)序列号

​ 3)ESP其余字段

SA(安全联盟)

​ 1)两个IPSec通信实体之间经协商建立起来的一种共同协定,它规定了通信双方使用哪种IPSec协议保护数据 安全、应用的算法标识、加密和验证的密钥取值以及密钥的生存周期等等安全属性值。通过使用安全关联(SA) , IPSec能够区分对不同的数据流提供的安全服务。

​ 2)种类:

​ a、IKE SA

​ ①保护的对象是IKE的协商数据

​ ② 两个对等体之间只有一个IKE SA

​ b、IPSec SA

​ ①保护的对象是用户的实际数据

​ ②两个对等体之间有多对的IPSec SA

​ c、IPSec SA是单向的,在两个对等体之间的双向通信最少需要两个安全联盟来分别对两个方向的数据 流进行安全保护。入站数据流和出站数据流分别由入站SA和出站SA进行处理。同时,如果希望同时 使用AH和ESP来保护对等体间的数据流,则分别需要两个SA,一个用于AH,另一个用于ESP。

0x03 IPsec协议实现过程

1、IPsec的两个阶段

(1)阶段一:

​ 协商和建立ikesa,为ike的协商以及阶段二的协商提供保护,分为主模式,和野蛮模 式,完成对等体的策略协商、dh密钥交换以及对等体的验证

image-20220323153647939

​ A、策略协商:协商身份验证的方式,加密算法、验证算法、dh算法、策略有效期

​ B、DH密钥交换:两个对等体会共同产生3个密钥d、a、e

​ C、验证对等体:用之前的协商的算法,以及产生的密钥,对对等体的身份做验证

(2)阶段二

image-20220323153719888

​ A、在ike sa的基础上,安全协商保护用户业务的具体安全策略

​ B、只有一个快速模式

​ C、协商保护的对象:感兴趣流量

​ D、协商的算法:ESP、AH 各类的加密性算法和完整性校验

​ E、模式:隧道模式和传输模式(默认是隧道模式)

2、IPsec VPN 配置

保证两边公网地址可达:

​ 1、配置isakmp sa通道,以及身份验证//也就是阶段一

​ 2、配置IPSec sa通道//阶段二,定义数据如何被保护

​ 3、定义感兴趣流量,得使用扩展acl

​ 4、定义map,关联上面三个步骤

​ 5、端口调用map

0x03 配置命令

拓扑图

image-20220323160546851

(1)基础配置:

1
r1#show run | sec crypto 

​ 定义阶段一:

1
2
3
4
5
crypto isakmp policy 10
encr aes 256
hash sha256
authentication pre-share
group 5

​ 定义预共享密钥信息:

1
crypto isakmp key cisco123 address 202.101.23.3 

​ 定义阶段二:

1
2
crypto ipsec transform-set myset esp-aes 256 esp-sha256-hmac 
mode tunnel

​ 关联策略:

1
2
3
4
crypto map mymap 10 ipsec-isakmp 
set peer 202.101.23.3
set transform-set myset
match address 100

​ 定义感兴趣流量

1
2
3
4
5
r1#show run | sec access-list
access-list 100 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
r1#show run int e0/0
interface Ethernet0/0
crypto map mymap

(2)查看与验证:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#show crypto isakmp policy 
//查看阶段一的策略信息

#show crypto isakmp key
//查看预共享密钥

#show crypto isakmp sa
//查看isakmp的SA信息(可判断阶段一的建立是否成功)

#show crypto ipsec transform-set
//查看阶段二转换集的策略信息

#show crypto ipsec sa
//查看ipsec会话的SA信息

#show crypto map
//查看map的关联信息

#show crypto engine connections active
//查看加解密的数据数量

#show crypto session
//查看会话信息

#clear crypto isakmp
//清除IKE SA

#clear crypto sa
//清除IPSec SA

(3)动态地址的vpn接入

​ 1、动态适用于中心地址固定,分支地址不固定的情况下,使用的动态的ipsec vpn

​ 2、vpn建立之后,只有当分支先行触发我们的vpn的建立,此时才能够实现两边的通信

​ 3、无需定义感兴趣流量

​ (1)主要类型

​ 1)主机发起到VPN服务器的连接,远程接入VPN,比如L2TP VPN、SSL VPN。

​ 2)边界网关动态地址接入VPN

​ ①dynamic map

​ ②DVTI

​ ③DMVPN

​ (2)dynamic map应用场景

​ ①中心是固定,分支是动态接入

​ ②网络中存在混合厂商的环境

​ (3)配置

1
2
3
4
5
6
7
8
9
10
11
12
13
r1#show run | sec crypto
crypto isakmp policy 10
authentication pre-share
crypto isakmp key cisco124 address 0.0.0.0
crypto ipsec transform-set myset esp-aes 256 esp-sha256-hmac
mode tunnel
crypto dynamic-map mydymap 10
set transform-set myset
crypto map mymap1 10 ipsec-isakmp dynamic mydymap
//将动态map关联到静态map
interface Ethernet0/0
crypto map mymap1
//接口下只能调用静态map,不能调用动态map

​ (4)问题

​ 1)中心站点无法主动发起到分支的连接

​ 2)无虚拟隧道接口,无法运行路由协议

0x04 IPsec 进阶

1、IPsec 的高级应用
1)IPSec的嵌套,用IPSec保护现有的隧道上的数据
2)IPSec嵌套由gre over ipsec 、l2tp over ipsec

​ ①GRE over IPSec :先封装GRE,后封装IPSec。公网出口上调用ipsec。

​ ②IPSec over GRE:先封装IPSec,后封装GRE。tunnel上调用ispec。

​ ③L2TP over IPSec

3)GRE OVER IPSec

​ ○ 先封装GRE,后封装IPSec

​ ①用GRE构建隧道tunnel

​ ②用IPSec对隧道上传输的数据进行保护

​ ○ IPSec建议采用传输模式,至少可以减少一个IP头部资源的消耗。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
crypto isakmp policy 10
encr 3des
hash sha256
authentication pre-share
group 5
crypto isakmp key cisco123 address 202.101.23.3
crypto ipsec transform-set myset esp-3des esp-sha256-hmac
mode transport
ip access-list extended GRE
permit gre host 202.101.12.1 host 202.101.23.3
crypto map mymap 10 ipsec-isakmp
set peer 202.101.23.3
set transform-set myset
match address GRE

另外一个关联工具,可以在隧道口关联ipsec vpn,可以兼容传统的crypto map

4)IPSec profile

​ ○ 无需使用crypto map就可以将阶段二的策略直接关联到隧道接口

​ ○ 简化IPSec配置

​ ○ 可以与crypto map兼容

​ ○ 配置:

1
2
3
4
5
6
7
8
9
10
11
12
R1(config)#crypto ipsec profile myprofile 
R1(ipsec-profile)#set transform-set myset
R1(config)#int tunnel 13
R1(config-if)#tunnel protection ipsec profile myprofile

crypto ipsec profile yucedu
set transform-set myset
interface Tunnel10
ip address 192.168.13.1 255.255.255.0
tunnel source Ethernet0/2
tunnel destination 202.101.23.3
tunnel protection ipsec profile yucedu

1、IPSec VPN的高可用性

1)如果只有一个网关建立ipsec vpn,存在单点故障
2)冗余vpn的问题

​ (1)对于内部设备来说,很难判断应该选择哪个外网网关作为回程报文的出口?

​ (2)对于分部设备来说,如何判断主网关的sa状态?

3)ike存活消息

​ (1)在对等体之间周期性的发送keep alive报文,来探测对端的状态

​ (2)默认情况下,如果本端发送连续3个keepalive报文,对端都没有进行回应,则认为对端发生故障,就会清除相关的SA信息,并重新触发新SA的协商。

​ (3)可能会消耗比较高的资源,扩展性较差

特点:

​ ①不能检查对端内网环境的可达性,只能检测建立IPSec的对等体的活跃性。

​ ②如果存在大量的对等体,可能需要消耗较多的资源来处理IKE存活消息。

4)配置
1
2
3
spoke(config)#crypto isakmp keepalive 10 ?
<2-60> Number of seconds between retries if keepalive fails
<cr>

2、nat对ipsec的影响

(1)边界网关同时部署了NAT技术和建立IPSec vpn

​ 需要执行NAT地址排除,把站点之间互相访问的内网流量从NAT感兴趣流中排除。

(2)NAT穿越

​ 1)穿越一个NAT设备与对端建立IPSec VPN

​ 2)NAT-T:会采用UDP 4500来封装ESP报文

​ 3)设备默认开启该功能,无需进行任何配置