IP Security 概述
IPsec > IP Security 是一种网络层的安全保障机制或者说是体系 通过各种机制和协议实现安全保障 IPsec可以实现: <code>1. 访问控制</code> <code>2. 机密性</code> <code>3. 完整性</code> <code>4. 数据源验证</code> <code>5. 拒绝重播报文</code> 等安全功能 他可以引入多种验证算法、加密算法和秘钥管理机制 IPSec VPN是利用IPsec 隧道实现的L3 VPN IPSec也具有配置复杂,消耗运算资源较多、增加延时、不支持组播等缺点
IPsec的工作模式
IPsec的工作模式分为两种 【传输模式】: 传输模式只实现端到端的保护功能 不建立VPN隧道
【隧道模式】: 隧道模式中,不仅要负责端到端的保护 还要建立VPN隧道
PS:IPSec的功能不仅限于VPN,VPN只是他众多功能中的其中一个
IPSec的安全协议
该作用主要用于保护数据 【AH】
Authentication Header > 报文头部验证协议 IP协议号51 提供对数据的完整性校验和源验证 可以提供有限的抗重播能力 不能提供数据的加密功能 无法穿透NAT,NAT会更改数据包的IP地址,AH会对整个会话重新计算校验值,从而导致对方收到的数据计算的校验值不同。
【ESP】
Encapsulating Security Payload 又叫封装安全载荷 IP协议号50 可以提供数据的机密性保证、 数据完整性校验和源验证、 可提供一定的抗重播能力 还可以支持穿透NAT,ESP部队新的IP头部做校验,所以NAT修改数据头部后不会影响校验结果,在实际场合中,基本用的ESP
IPSec SA
又叫IPSec安全联盟 定义了一套对某些数据流进行保护的方案 里面包含了保护协议、算法、密钥 【来源】: 手动配置 以及IKE协商 【密钥管理】: 手动配置密钥 IKE协商密钥
IKE
有叫网络密钥交换协议 用于保护密钥传输和密钥的自动协商 使用<code>Diffie-Hellman</code>在不安全网络中安全分发密钥和验证身份 定时性的更新SA和密钥,实现完善的前向安全性 有效降低了手工部署的复杂度 工作在UDP端口500上
IKE与IPSec 的关系
IKE为IPSec提供自动协商服务,交换密钥,建立SA的服务 IPSec安全协议负责提供实际的安全服务
IPSec 隧道建立的流程
【第一阶段】 IKE SA协商 协商出保护第二阶段的保护方案 【第二阶段】 IPsec SA协商 在IKE SA的保护下,协商出保护数据传输方案
IPsec 的工作流程
> 出站包处理流程
SPD安全策略数据库 记录了对那些目的地址的数据包要调用哪一个 IPsec SA来进行保护
- 首先,数据包到达出接口,查找IPSec策略
- 根据IPSec策略查找对应的IPsec SA,查到则执行相对应的安全服务,未查到则查找IKE SA
- 查找IKE SA, 找到则在IKE SA的保护下创建IPSec SA,并执行安全服务, 未找到则创建IKE SA
- 创建IKE SA后,在IKE SA的保护下,创建IPSec SA并执行安全服务
> 入站包处理流程
- 数据包到达入接口后,查看该数据是否被IPSec保护
- 如果保护则查找对应IPSec SA
- 没有查到则直接交由上层处理
- 查找IPSec SA
- 未找到则丢弃数据包
- 找到则使用IPSec SA 解封装,获取原始数据
一阶段IKE的模式
> 主模式 Main Mode
采用六次握手机制,更加安全可靠 由于身份信息在第5次、第6此握手中加密 导致主模式只能通过公网IP地址识别对方身份,双方必须都具有固定公网IP地址,双方通过公网IP标识对端身份
> 野蛮模式 Aggressive Mode
采用三次握手,速度更快 身份信息在1、2次握手中传递,野蛮模式只加密 第3次握手的某一端,可以不具有固定公网IP地址,双方通过FQDN来标识对端身份 必须由IP地址不固定的一端主动发起协商
二阶段IPSec的模式
> 快速模式
一共会协商出两个IPSec SA <code>出站 IPSec SA</code> <code>入站 IPSec SA</code>
NAT 穿透
解决NAT与IPSec之间冲突的问题 因为ESP/AH只是三层封装,没有四层头部,所以无法被NAT转换端口 NAT穿透是在ESP头部前再封装一个UDP4500的四层头部端口
IPsec VPN端口
UDP 500 来标识未使用NAT穿透 UDP 4500 来标识使用了NAT穿透
IPSec VPN的部署模式
一共分为两种部署模式
> 双臂部署
又叫网关部署,把VPN部署在公网出口设备上
> 单臂部署
又指把VPN部署在内网中,需要在公网出口设备上配置端口映射至VPN设备 减轻公网出口设备的资源消耗和性能负担
IPSec VPN的配置
> 主动模式的配置流程
- ===一阶段配置===
- 首先是创建感兴趣流,配置ACL的源目地址,匹配两端私有地址
- 创建IKE Proposal(提议),配置IKE的加密方式,验证算法,和验证方法
- 创建配置秘钥,使用公网地址标识对方身份
- 创建IKE Profile(档案)调用前方创建的Proposal和Keychain,并指定对端公网IP地址
- ===二阶段配置===
- 创建IPSec转转换集,配置IPSec的工作模式、封装协议,验证、加密算法
- 创建IPSec Policy(策略)调用前面创建的感兴趣流、IKE Profile、IPsec转换集
- 最后在公网口下发IPsec策略
【一阶段配置】
代码语言:javascript复制/*主动模式配置流程*/
/*一阶段配置*/
acl advance [id]
/*创建高级ACL*/
rule 1 permit source [ip-address] [wild-mask] destination [ip-address] [wild-mask]
/*匹配源地址为address、目的地址为address的数据包*/
/*这里不需要配置permit any 华三在用于包过滤的情况下策略默认是permit*/
/*这一个步骤就是在创建我们的感兴趣流*/
[Router] ike proposal [number]
/*创建我们的IKE Proposal 安全提议*/
[Router-ike-proposal-[id]] encryption-algorithm [3des-cbc / aes-cbc-128 / aes-cbc-192 / aes-cbc-256 / des-cbc]
/*设置IKE安全提议中所使用的加密算法*/
[Router-ike-proposal-[id]]authentication-method [dsa-signature / pre-share / rsa-signature]
/*设置IKE安全提议中所使用的验证方法*/
[Router-ike-proposal-[id]] authentication-algrithm [md5 / sha]
/*配置IKE安全提议中所使用的验证算法*/
[Router-ike-proposal-[id]] dh [group-id]
/*创建IKE阶段1密钥协商时搜使用的DH交换组【可略】*/
[Router-ike-proposal-[id]] sa duration [seconds]
/*配置IKE安全提议的SA生存周期【可略】*/
[Router] ike keychain [name]
/*创建IKE keychain*/
[Router-ike-keychain-[name]]pre-shared-key [address [ip-address] / hostname [hostname] key [cipher / simple [password]]]
/*配置KIE keychain的预共享密钥,是公网地址(ip-address)模式还是主机名(hostname)模式*/
[Router-ike-keychain-[name]]match local address [interface range / ip-address] vpn-instance [vpn-name]
/*配置IKE keychain的使用范围【可略】*/
[Router] ike identiy [address [ip-address] dh / fqdn [fqdn-name] user-fqdn [user-fqdn-name]]
/*配置本端的身份信息*/
[Router] ike profile [name]
/*创建一个IKE Profile 档案*/
[Router-profile-[name]]exchange-mode [aggressive / main]
/*配置IKE第一阶段的协商模式*/
[Router-profile-[name]]keychain [keychain-name]
/*配置IKE调用前面配置的keychain预共享密钥*/
[Router-profile-[name]]proposal [proposal-number]
/*配置IKE调用前面配置的proposal提议,里面包含了我们的加密方式、验证方法、验证算法*/
[Router-profile-[name]] local-identity [address [ip-address] / dn [dn-name] / fqdn [fqdn-name] / user-fqdn [user-fqdn] ]
/*配置IKE的本地身份信息,是使用公网地址[address]或者使用主机名[dn/fqdn/user-fqdn]来标识对端主机*/
[Rouer-ike-profile-[name]]match remote
certificate [policy-name]
identity [address [ip-address] mask [mask]
range [start-address - end-address]
vpn-instance [vpn-name]
fqdn [fqdn-name]
user-fqdn [user-fqdn]
/*配置IKE匹配对端身份的规则,是匹配identiy 还是匹配certificate*是用fqdn来匹配还是用user-fqdn来匹配/
[Router-ike-profile-[name]]priority [name]
/*配置IKE Profile的优先级*/
【二阶段配置】
代码语言:javascript复制/*主动模式配置流程*/
/*二阶段配置*/
[Router]ipsec transform-ser [name]
/*创建一个安全提议*/
[Router-ipsec-transform-set-[naem]] protocol [ah / ah-esp / esp]
/*配置ipsec的安全协议*/
[Router-ipsec-transform-set-[name]] encapsulation-mode [transport / trunnel]
/*设置ipsec的工作模式,是转发(transport)模式还是隧道(tunnel)模式*/
[Router-ipsec-transform-set-[name]] esp encryption-algorithm [3des-cbc / aes-cbc-128 / aes-cbc-192 / aes-cbc-256 / des-cbc / null]
/*配置转换集,采用esp安全协议,设置esp协议采用的加密算法是什么*/
[Router-ipsec-transform-set-[name]] esp authentication-algorithm [md5 / sha1]
/*配置ESP协议采用的验证算法是md5还是sha1*/
[Router-ipsec-transform-set-[name]] ah authentication-algorithm [md5 / sha1]
/*采用ah安全协议,配置ah安全协议采用的验证算法是md5还是 sha1*/
[Router] ipsec policy [seq-name] [number] manual
/*创建一个安全策略,调用我们前面的感兴趣流、验证方法、算法等*/
[Router-ipsec-policy-manual-[name]] security acl [acl-number]
/*调用前面设置的ACL策略*/
[Router-ipsec-policy-manual-[name]] transform-set [name]
/*设置安全策略所引用的安全提议*/
[Router-ipsec-policy-manual-[name] ]ike-profile [name]
/*调用先前配置的ike档案*/
[Router-ipsec-policy-manual-[name]] remote-address [ip-address / ipv6-address]
/*配置IPsec隧道对端的地址*/
[Router-interface] ipsec apply policy [name]
/*最后在接口上下发ipsec策略*/