互联网安全协议(英语: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密钥交换以及对等体的验证
A、策略协商:协商身份验证的方式,加密算法、验证算法、dh算法、策略有效期
B、DH密钥交换:两个对等体会共同产生3个密钥d、a、e
C、验证对等体:用之前的协商的算法,以及产生的密钥,对对等体的身份做验证
(2)阶段二
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 配置命令
拓扑图
(1)基础配置:
1 | r1#show run | sec crypto |
定义阶段一:
1 | crypto isakmp policy 10 |
定义预共享密钥信息:
1 | crypto isakmp key cisco123 address 202.101.23.3 |
定义阶段二:
1 | crypto ipsec transform-set myset esp-aes 256 esp-sha256-hmac |
关联策略:
1 | crypto map mymap 10 ipsec-isakmp |
定义感兴趣流量
1 | r1#show run | sec access-list |
(2)查看与验证:
1 | #show crypto isakmp policy |
(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 | r1#show run | sec crypto |
(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 | crypto isakmp policy 10 |
另外一个关联工具,可以在隧道口关联ipsec vpn,可以兼容传统的crypto map
4)IPSec profile
○ 无需使用crypto map就可以将阶段二的策略直接关联到隧道接口
○ 简化IPSec配置
○ 可以与crypto map兼容
○ 配置:
1 | R1(config)#crypto ipsec profile myprofile |
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 | spoke(config)#crypto isakmp keepalive 10 ? |
2、nat对ipsec的影响
(1)边界网关同时部署了NAT技术和建立IPSec vpn
需要执行NAT地址排除,把站点之间互相访问的内网流量从NAT感兴趣流中排除。
(2)NAT穿越
1)穿越一个NAT设备与对端建立IPSec VPN
2)NAT-T:会采用UDP 4500来封装ESP报文
3)设备默认开启该功能,无需进行任何配置
utterances
GitHub Issues