IPSEC VPN介绍
IPSec VPN是基于IPSec 协议处理的VPN技术,属于三层VPN,不支持组播,不支持路由协议。用于保障设备间连接的协议。 IPsec有助于保持通过公共网络发送的数据安全。 它通常用于建立 VPN,其工作原理是对 IP 数据包进行加密,同时验证数据包的来源。
IPSec提供的安全服务
-
访问控制
在IPSEC中可以抓取感兴趣流,即可以 设定哪些流量需要进入到ipsec通道 中,进行保密传输,哪些不需要进入通道
-
机密性(Confidentiality):数据加密。
-
不可否认性(Non-repudiation):数字签名。
-
完整性(Integrity ):防篡改。
-
重传攻击保护(Anti-replay):抗重播报文。
IPSEC通过启用 序列号 的方法来进行防重放攻击。相当于启用一个一次性的数字,不会再次生效。
IPsec VPN体系结构
IPSEC协议簇
安全协议
AH ---鉴别头协议
封装位置在 网络层和传输层之间 ,其协议号为 51 ;
特点:
- 数据真实性
不支持机密性
完整性
抗重放
不支持NAT穿越;
AH头部
ESP ---封装安全载荷协议
封装位置在 网络层和传输层之间 ,其协议号为 50;
- 数据真实性
支持机密性
完整性
抗重放
支持NAT穿越;
ESP头部:
AH跟ESP对比
封装模式
传输模式
主要应用场景:经常用于主机和主机之间端到端通信的数据保护。
封装方式:不对数据添加新的IP报头,在原数据包头后面插入IPSec包头,将原来的数据封装成被保护的数据,对内网环境加密保护数据,例如GRE over IPSec。
隧道模式
主要应用场景:经常用于私网与私网之间通过公网进行通信,建立安全VPN通道。
封装方式:默认模式就是隧道模式,增加新的IP(外网IP)头,其后是ipsec包头,之后再将原来的整个数据包封装。
安全联盟
SA:用于记录与对等体之间协商好的安全参数信息(加解密算法、完整性校验算法.......)
安全联盟数据库SADB
分类:IKE SA、IPSec SA
IKE SA:
第一阶段的协商成果
用于保护第二阶段的协商过程
IPSec SA
第二阶段的协商成果
用于保护对等体双方的业务流量
SPI安全参数索引
类似于目录
用于在SADB中找到正确的SA信息
SPI值是唯一的、独立的、单向的
IKE协议(internet密钥交换)
基于UDP端口500
为IPSec提供协商密钥(DH)、建立安全联盟(SA)的相关内容
由Oakley、SKEME、ISAKMP三个部分组成,ISAKMP是IKE的核心
IKE经过两个阶段为IPSec进行密钥协商并建立安全联盟:
第一阶段交换:通信各方彼此间建立了一个已通过身份验证和安全保护的通道,此阶段的交换建立了一个ISAKMP安全联盟,即ISAKMP SA(也可称为IKE SA)。第一阶段交换有两种协商模式:
•主模式协商
•野蛮模式协商
第二阶段交换:用已经建立的安全联盟(IKE SA)为IPSec协商安全服务,即为IPSec协商具体的安全联盟,建立IPSec SA,产生真正可以用来加密数据流的密钥,IPSec SA用于最终的IP数据安全传送。
阶段一:
目的:在对等体之间协商IKE SA,为阶段二进行保护。
主模式(Main Mode,MM):默认使用IP地址作为身份标识,默认是传递自己的出口地址做身份标识,校验对端的公网IP做对端身份标识。(自动生成双方身份ID,不能改变IP因为它是和PSK 绑定关系)
需要通过6个数据包进行交互,安全性更高。
完成三件事情:
1.策略协商:指定身份认证方式、加密算法、DH组版本、HASH算法、生存时间默认是86400s,一天。
2.密钥交换
3.对等体验证(加密)
第一二个数据包--IKE SA交换
Ci(cookie) :这个参数每个数据包中都会携带,在IKEV2中,变成了 SPI,在这里作用类似。
SA:里面携带的是需要协商的安全参数“五元组”。
加密算法,哈希算法,身份认证, DH 组, SA 存活期
AES MD5 PSK DH2 84600S(默认值)
注意 :手工建立的SA,一经建立,则将永久有效;但是IKE建立的SA,需要配置生存周期,周期时间到了之后,将重新建立SA。SA两端的数值不要求完全相 同,如果时间不同,则按照小的来执行。
第二个回包: 主要确认安全参数,如果安全参数都可以对的上,则将继续完成后面的协商。如果参数没有对上,则将回复一个 负载拒绝报文 ,结束 IKE SA 的建立。
第三四个数据包---DH密钥交换---对称密钥
NI,Nr:代表的是随机数
X,Y :DH算法中需要公开的参数
这里,为了加强安全性, DH 算法会生成 四种密钥 。
PRF---hash算法的一种
种子密钥---剩余三种密钥都需要加入种子密钥运算得出,并且,种子密钥中计算时,会携带预共享密钥。
SKEYID_e ---加密密钥---g^ir (代表的就是DH算法中计算出来的Z),CKY-I/CKY-
R(前面双方携带的cookie值)---- 用于第一个阶段5,6数据包和第二阶段数据包加
密使用 。
SKEYID_a- ---验证密钥--- 用于第二阶段hash时使用的密钥 ---HMAC算法(结合密
钥的HASH算法),安全性比不加入密钥的HASH算法更高。
SKEYID_d ---推导密钥--- 用于计算最终密钥(最终加密数据的密钥)的素材
第五六个数据包---进行身份认证---加密传输
ID ---身份信息---在主模式下,默认使用IP地址作为身份信息
hash ---针对之前SA信息再进行HASH运算,比对结果。这里的HASH运算会加入验证密钥一起进行,更加安全。
注意:前四个数据包是明文,五六数据包是密文 。
野蛮模式(Aggressive Mode,AM) :可以使用用户名或IP等作为双方身份标识,即可以自定义身份标识,速度快,只需要3个数据包就可以完成协商,安全性低。
应用场景:在使用预共享密钥做身份验证的场景中,如果对等体地址是动态获取的,选择使用野蛮模式。
PS:
1.X、Y就是交互的公钥。Ni和Nr是随机数-(Nonce,随机数用以保持活性)
注意:
在野蛮模式中,可以自定义身份标识,主要是因为身份信息不需要加密,并且,前两个数据包都无法加密,所以,野蛮模式安全性较低。仅第三个数据包会进行加密( 前两个数据包是明文,第三个数据密文) 。但是, 野蛮模式适用于NAT环境以及IP地址不固定的环境。
主模式跟野蛮模式对比
阶段二:
ISAKMP/IKE阶段2只有一种信息交换模式——快速模式(Quick Mode),它定义了受保护数据连接是如何在两个IPSEC对等体之间构成的。
快速模式有两个主要的功能:
1.协商安全参数来保护数据连接。
2.周期性的对数据连接更新密钥信息。
第二阶段的效果为协商出IPSec 单向SA,为保护IPsec数据流而创建。第二阶段整个协商过程受第一阶段ISAKMP/IKE SA保护。
协商内容:转换集(安全协议、封装模式)、感兴趣流量(保护的业务流量)。
数据传输阶段
数据传输阶段是通过AH或者ESP通信协议进行数据的传输。
数据传输建立在网络层。
数据传输阶段
VPN黑洞 ---隧道建立之后,如果其中一段的设备异常重启,另一端还在有效期内,则他发送的数据将有去无回,就形成了VPN黑洞
解决方法--- DPD死亡对等体检测 。
类似于心跳检测机制---采用空闲计时器原理---两边同时开启一个固定时间的计时器,期间数据值直接发过去,如果计时器超时,则数据发送前,先发送一个DPD检测报文,如果收到对方的DPD应答报文,则将重置计时器。如果没有收到,并且,连续5次都没有收到,则将拆掉安全通道。
IPSec VPN和NAT共用可能存在的问题
问题:
当一个接口同时调用了NAT和ipsec VPN,数据包经过时,会先查看NAT进行处理,再查看VPN进行相关处理。
解决方法:
在NAT转换的匹配感兴趣流中,将“VPN内网流量”进行拒绝,不做NAT转换,其他访问外网的流量正常进行匹配转换;VPN的匹配感兴趣流中放行去往对端内网的流量。
IPsec VPN 配置
华为:
阶段一:配置IKE安全提议(策略协商)、配置IKE对等体 (对等体的信息关联);
阶段二:配置IPSEC的安全提议(转换集)、感兴趣流;
1,配置IKE安全提议(策略协商)
[r1]ike proposal 1 ---后面需要添加一个提议的编号
[r1-ike-proposal-1]encryption-algorithm aes-cbc-128 ---定义加密算法---缺省是DES算法
[r1-ike-proposal-1]authentication-algorithm md5 ---定义校验算法---缺省是SHA1
[r1-ike-proposal-1]authentication-method pre-share ---定义认证方式---缺省是预共享密钥
[r1-ike-proposal-1]dh group2 ---定义DH组---缺省DH组1
[r1-ike-proposal-1]sa duration ? ---定义SA的老化时间----建议:老化时间修改的时候,要大 于600S。
INTEGER<60-604800> Value of time(in seconds), default is 86400
[r1-ike-proposal-1]sa duration 86400
2,配置IKE对等体 (对等体的信息关联)
[r1]ike peer aa v1---需要声明对等体的名称(自定义),第一次进入时,需要写版本号
[r1-ike-peer-aa]ike-proposal 1 ---关联IKE安全提议
[r1-ike-peer-aa]exchange-mode ? ---选择一阶段的模式
aggressive Aggressive mode ---野蛮模式
main Main mode ---主模式
[r1-ike-peer-aa]exchange-mode main ---这里缺省选择的是主模式
[r1-ike-peer-aa]pre-shared-key cipher 123456 --- 定义预共享密钥的具体值,注意,两边必须一样
[r1-ike-peer-aa]remote-address 23.0.0.2 ---三位一体
1:邻居对等体的建邻地址;2:参与查找预共享密钥;3:作为身份标识验证对端身份
3,配置IPSEC的安全提议(转换集)
[r1]ipsec proposal aa ---需要定义一个提议的名称
[r1-ipsec-proposal-aa]transform esp ---定义安全协议---缺省esp
[r1-ipsec-proposal-aa]esp encryption-algorithm aes-128 ---定义数据加密算法---缺省des
[r1-ipsec-proposal-aa]esp authentication-algorithm md5 ---定义数据验证算法---缺省 md5
[r1-ipsec-proposal-aa]encapsulation-mode tunnel ---选择封装模式---缺省为隧道模式
4,抓取感兴趣流
[r1]acl 3000 ---这里只能选择使用高级ACL列表,因为后面调用的时候,仅能调用高级的。
[r1-acl-adv-3000]rulepermit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255
5,配置IPSEC安全策略
[r1]ipsec policy aa 1 isakmp ---需要定义策略的名称和编号,并且需要选择手工模式还是IKE 的方式。
[r1-ipsec-policy-isakmp-aa-1]security acl ? ---关联ACL列表
INTEGER<3000-3999> Apply advanced ACL
[r1-ipsec-policy-isakmp-aa-1]security acl 3000
[r1-ipsec-policy-isakmp-aa-1]ike-peer aa ---关联IKE对等体
[r1-ipsec-policy-isakmp-aa-1]proposal aa ---关联ipsec提议
6,接口调用
[r1-GigabitEthernet0/0/1]ipsec policy aa
注意:对端R3的IPSEC 也是相同的配置,在R3的g0/0/0接口调用
查看SA命令
display ike sa 查看IKE SA
display ipsec sa 查看IPSEC SA
华三:
策略协商
ike proposal 100
authentication-method pre-share
encryption-algorithm 3des-cbc
authentication-algorithm sha
dh group1
预共享密钥
ike keychain R1
pre-shared-key address 202.101.12.1 key simple cisco123
profile关联上述信息
ike profile R1
keychain R1
match remote identity address 202.101.12.1 255.255.255.255
proposal 100
转换集
ipsec transform-set myset
esp encryption-algorithm 3des-cbc
esp authentication-algorithm md5
encapsulation-mode tunnel
补充:如果阶段二的安全协议选择AH,需要特别更改协议
ipsec transform-set R1
protocol ah
ah authentication-algorithm md5
感兴趣流量
acl advanced 3000
rule 0 permit ip source 192.168.70.0 0.0.0.255 destination 192.168.10.0 0.0.0.255
关联上述信息
ipsec policy mypolicy 10 isakmp
transform-set myset
security acl 3000
remote-address 202.101.12.1
ike-profile R1
在公网接口进行调用
int g1/0
ipsec apply policy mypolicy
查看
display ike sa 查看IKE SA
display ipsec sa 查看IPSEC SA
思科:
策略协商
crypto isakmp policy 10
encr 3des
hash md5
authentication pre-share
group 5
lifetime 86400
crypto isakmp key cisco123 address 202.101.23.3 //与202.101.23.3对等体利用key值进行身份验证
转换集
配置转换集,定义安全协议和相关算法,指定封装模式
crypto ipsec transform-set myset esp-3des esp-md5-hmac
mode tunnel
感兴趣流量
access-list 100 permit ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 保护的业务流量范围
crypto map关联上述信息
crypto map cisco 10 ipsec-isakmp 定义map的名字和序号
set peer 202.101.23.3 //关联对等体
set transform-set myset //关联转换集
match address 100 //关联ACL
在公网接口进行调用
int e0/0
crypto map cisco
查看命令
show crypto isakmp sa
show crypto ipsec sa