IPsec VPN
MPLS VPN
- 优点
- 作为客户部署简单
- 带宽和延迟得到保障
- 跨地域连接也能保障稳定性
- 灵活扩展
- 缺点
- 策略需要与运营商协商
- 费用较为昂贵
- 优点
IPsec VPN
- 优点
- 比较经济
- 灵活扩展
- 数据的加密安全
- 缺点
- 稳定性依赖于宽带服务商
- 作为客户需要专业技术人员部署
- 优点
VPN常见类别
- 站点到站点VPN
- 用于不同的站点之间的稳定连接
- 常见的有:IPsec VPN、MPLS VPN
- 远程访问VPN
- 常见于企业出差人员,或者连锁门店建立的临时连接
- 常见的有:SSL VPN
GRE
GRE是一项由Cisco公司开发的轻量级隧道协议,将各种网络协议(IP协议与非IP协议)封装到IP隧道类,并通过IP互联网络在路由器间创建一个虚拟的点对点隧道连接。
配置运营商网络
1 | R2 |
配置客户网络
1 | R1 |
检查R1和R6的邻居状态,以及连通性
1 | R1#sh ip ospf nei |
抓包,发现隧道是做到了,但是没有IPsec(加密),可以看到在两个IPv4报头中间有一层GRE,但是GRE内部的数据全部都能看到,比如telnet输入密码,第一个字母是c
IPsec理论
基本原理介绍
IPSec是一项标准的安全技术,它是通过在数据包中插入一个预定义头部的方式,来保障网络层数据的安全。
IPSec提供三大防护
- 私密性(Confidentiality)
- 对数据进行加密
- 即使第三方截获数据,也不能恢复为明文
- 完整性(Integrity)
- 确保数据传输过程中不会被篡改(增删改)
- 源认证(Authenticity)
- 确保是合法的源发送了此数据
IPSec框架
传统的一些安全技术,比如https、wep、wpa等,往往会采用某种固定的加密和散列函数。如果某天这个加密算法爆出严重漏洞,那么使用这个算法的安全技术也就要遭到淘汰。
IPSec没有定义具体的加密和散列函数,只是提供了一个框架性结构,IPSec会话所使用到的具体的算法都是协商得到的,一旦某个算法有漏洞,可以重新协商。
一般使用IPSec都是尽量使用最新最安全的算法,那么IPSec安全性几乎是做到与时俱进。
IPSec框架举例:
- 散列函数
- MD5
- SHA-1
- 加密算法
- DES
- 3DES
- AES
- 封装协议
- AH
- ESP
- 封装模式
- 传输模式
- 隧道模式
- 密钥有效期
- 3600秒
- 1800秒
- 等等
- 等等
散列函数
散列函数也叫做Hash函数,主流的算法有md5和sha1,一般可以用散列函数计算一串数据的散列值,散列值和这串数据对应,就像你的指纹对应你的人,所以散列值一般称为数据指纹。
散列函数有以下4个特点:
- 固定大小
- 无论数据有多大,最终计算的散列值大小是固定的
- 雪崩效应
- 即使是一个很大的数据,你修改了微不足道的一小部分,都会导致散列值完全不一样
- 单向
- 只可能从原始数据计算得到散列值,不可能从散列值恢复哪怕一个bit的原始数据
- 冲突避免
- 几乎不能够找到另外一个数据和当前数据的散列值完全相同
- 散列值可以确保数据的唯一性
HMAC
在计算散列值的过程中,把key混入计算过程中。
在传输数据的过程中并不携带密码,也无法推算出密码,所以无法得知密码。
如果对数据进行修改,那么接收方可以通过计算发现数据不对。
HMAC有如下两个保障:
- 完整性
- 源认证
- 管理员将密码配置在接口上
- 路由更新条目和密码放在一起,计算一个散列值
- 将更新条目和散列值都发送给对方
- 将收到的路由条目和密码放在一起计算出散列值2
- 将散列值2和更新中的散列值1进行比较
- 如果相等就接收更新,如果不一样,就丢弃
加密算法
把明文数据转换为密文数据,并且在拥有解密能力的情况下,可以将数据解密回来。
如果第三方截获数据,也无法获知内容。
加密算法可以分为如下两类:
- 对称加密算法
- 非对称加密算法
对称加密算法
加密和解密使用同样的密钥
优点:
- 速度快
- 加密和解密都可以秒完成
- 安全
- 在不知道密钥的情况下无法得知密文内容
- 密钥在足够长的情况下,破解的代价很大
- 没有绝对的安全,一般衡量加密安全性需要考虑到数据的价值,以下两种情况认为是安全的
- 如果破解这个加密所需要花费的代价远远超过数据本身
- 如果破解这个加密所需要花费的时间超过数据的时效性
- 紧凑
- 数据加密前后大小没有太大的差距
缺点:
- 密钥容易在共享的时候被窃取
- 随着参与者的增加,密钥数量急剧膨胀,密钥的管理和存储是个问题
- 不支持数字签名和不可否认
主流对称加密算法
- DES
- 3DES
- AES
- RC4
非对称加密算法
非对称加密算法往往会一次生成一对密钥,密钥分为公钥和私钥。
公钥一般会公开,上传到公共服务器上,任何人都可以访问
私钥一般不会出现在任何互联网上,只能私人保存
公钥加密的数据只能私钥解开,私钥加密的数据只能公钥解开
数字签名
- 将一些个人的信息使用私钥进行加密,然后附加在邮件或者网站等内容之上
- 如果想验证这个邮件或者网站是不是合法的来源,直接使用对应的公钥进行解密,如果解得开,说明这个信息是合法的
- 数字签名可以验证数据的合法来源,并且防止否认。
常见非对称加密算法
- RSA
- 常见于数字签名
- 网站证书
- DH
- 常见于IPSec中交换密钥
- ECC
- 椭圆曲线算法
优点:
- 安全
- 私钥不担心泄漏,因为无需共享给任何人
- 密钥数量和参与者数量相同
- 在交换公钥之前不用预先建立信任关系,公钥直接上传PKI/CA,对称加密需要事先共享密钥。
- 支持数字签名和不可否认
缺点:
- 加密速度很慢
- 密文会变长
对称加密算法比非对称加密算法快大约1500倍(参考自: http://vearne.cc/archives/164 )
所以在IPSec中,非对称加密算法一般是用来加密对称加密算法的密钥
封装协议
IPSec对数据需要重新的打包封装,也就是在IPsec理论讲到的IPsec头部以及后续内容封装方式。
ESP协议
ESP(Encapsulation Security Payload)的IP协议号为50,ESP能够为数据提供:
- 私密性
- 完整性
- 源认证
是现在主流的IPsec封装协议
报文结构:
上面这个报文是不携带加密的干扰因素的报文结构,也就是不加密,如果ESP要加密,需要提供随机生成的初始化向量。
AH协议
AH协议由于没有提供数据加密功能,所以没有被广泛采用。
封装模式
封装模式的不同不影响加密,只是影响数据的连通性。
传输模式(Transport mode)
不伪装原始的IP报头,比如上面做的GRE隧道实验,就是将原始的IP头部隐藏了,传输模式不隐藏。
隧道模式(Tunnel mode)
伪装原始的IP报头,但是在现实的应用中,我们一般会使用其他的隧道技术来实现IP报头的包装,所以隧道模式不常用。
IKE(互联网密钥交换协议)
IKE是IPsec在建立安全连接的时候主要使用的协议,IKE主要完成如下任务:
- 对建立IPsec的双方进行认证
- 通过密钥交换,产生用于加密和HMAC的随机密钥
- 协商协议参数
- 加密协议
- 散列函数
- 封装协议
- 封装模式
- 密钥有效期
通过IKE之后,双方就建立了安全关联(SA),SA有两种类型:
- IKE SA
- 维护IKE协议运行安全
- IPsec SA
- 维护用户流量的安全
IKE协议是由下面三个协议组成:
由于ISAKMP是真正影响数据流量加密的协议,所以有时候会把IKE与ISAKMP这两个术语互换使用。
IKE的两个阶段与三个模式
第一阶段协商的主要目的就是对建立IPsec的双方进行认证,以确保只有合法的对等体(peer)才能够建立IPsec VPN。第一阶段得到的结果就是IKE SA。
第二阶段协商的主要目的就是根据需要加密的实际流量,来协商保护这些流量的策略,协商结果就是IPsec SA。
主模式 1-2包交换
1-2包交换的主要目的就是确认收到的ISAKMP数据包时候源自合法的对等体。
IKE策略包含如下5个内容:
- 加密策略
- 散列函数
- DH组
- 认证方式
- 密钥有效期
这5个策略不是为了最终加密用户数据用的,而是为了保障接下来协商过程的安全而提供的。
双方可以设置多个不同的策略,只要有一个策略可以完美对应上,就可以进行。
1 | crypto isakmp policy 10 |
主模式 3-4包交换
由于上面两个包已经协商应该使用什么协议,在上面的策略中其他都确定,但是这个预共享的密码并没有提供。
为了安全,这个密码一般是由DH算法产生的,并且通过DH与对方碰撞,让对方猜出密码是什么,让中途窃听的猜不出来。
Diffie-Hellman:一种确保共享KEY安全穿越不安全网络的方法
在g和p都很大的情况下,已知a求A会很快得到结果,但是已知A求a几乎无法完成。这个就是单向函数的特点:一个方向的运算很快很容易,另一个方向几乎不能完成。
通过上图的计算,最终Alice和Bob都得到了K作为对称加密的密码,而如果第三方中途窃取g,p,B是无法算出K的。
主模式 5-6包交换
本次交换用于验证密码的正确,并且确认双方的流量源目的地址。
第一阶段总结
第一阶段主要任务就是相互认证,第一阶段完成,不仅表示收发双方认证通过,而且还会建议一个双向的ISAKMP/IKE安全关联,这个安全关联维护了处理IKE流量的相关策略。
快速模式 1-3包交换
快速模式1-3包交换是为了协商数据流量的安全策略,安全策略包含如下内容:
- 感兴趣流量(需要加密的流量)
- 加密策略
- 散列函数
- 封装协议
- 封装模式
- 密钥有效期
1 | crypto isakmp key cisco address 0.0.0.0 |
在GRE隧道上调用IPsec进行保护,就完成了IPsec Over GRE
1 | R1#ping 6.6.6.6 |
查看第一阶段的建立状态
1 | R1#show crypto isakmp sa |
查看第二阶段的建立状态
1 | R1#sh crypto ipsec sa |
查看IPsec VPN的摘要
1 | R1#show crypto engine connections active |
IPsec VPN魔改
各个厂商都自己对IPsec VPN进行修改的操作:
Cisco有DMVPN
- 可以利用自家的GRE隧道建立点到多点的VPN拓扑
- 并且只用IPsec进行加密
深信服是easyconnect
- 本文标题:IPsec VPN
- 本文作者:Aaron
- 本文链接:https://iproute.cn/2020/05/02/IPsec-VPN/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!