IPSE基础&手动(3)
IPSE基础&手动
前言
在两年前我就已经写过关于IPSEC VPN的相关内容,两年过去了,再回去看当初写的内容就感觉很有意思了,因为会看到当初自己的浅薄和考虑不周,也能真真切切的感受到进步,这两年的时光没有白白浪费。
VPN的发展
pptp
2000年,windows 2000发布在即,做为行业巨头,微软的windows系统上迫切的需要一款自主开发的VPN,于是在1999年,微软成功开发了PPTP VPN用于实现主机到主机之间的VPN连接。
L2F
当微软开发出了pptp之后,思科紧跟着开发出l2f vpn,第二层转发协议(L2F),这是一种相互的身份认证隧道机制。然而L2F并不提供加密。L2F没有得到广泛部署。
l2tp
pptp和l2f在安全方面做的都不理想,思科根据pp2p和l2f,结合两者的优点,弥补其不足,后又推出l2tp,从名字上也可以看出来,l2tp是将pptp和l2f想融合而成的。
ipsec
上述这三种VPN都是二层VPN,我们接下来该看一下三层VPN了
从上图维基百科当中关于IPSEC的介绍当中我们可以看到IPSEC很早很早就已经诞生了,起源于1970年代,到1992年开始正式应用,其标准的制定和应用又是思科牵头。在网络的这个领域内,到处都是思科的影子,比如你会有苹果的平板的VPN功能当中惊讶看到其IPSEC VPN有着思科的大图标,如下所示:
IPSEC VPN本身不是一种协议,并没有一种协议叫IPSEC VPN,IPSEC更像是一种“框架”,一种标准。各种网络设备厂商根据这个标准去实现自己的IPSEC功能,在这里其实就已经产生了问题,尽管是有标准,但是不同的程序员对标准的理解不一样,这就造成了当今在做不同的厂商的IPSEC VPN对接时,问题不断。
IPSEC是将各种类型的加密算法集合到了一起做成的框架,并且能随着密码学的发展,不断向其填充先进的算法,使得IPSEC从1992年应用至今,仍然没有过时,就算是当前最流行的SD-WAN也充分借鉴并使用了ISPEC框架。
IPSEC VPN概念
合作赋能
IPSEC可谓在VPN的安全方向做到极致,但是做VPN缺点也很明显,那就是兼容性不强,对于组播的传输有点问题,这与我们人类很相似,在某方面做到了极致人往往兼容性不太强,就像我们大多数搞技术的,专业搞技术,却忽略了人际关系和职场的弯弯绕。
那IPSEC就需要一种兼容性特别好的事物与之搭配,好像夫妻之间的互补关系,恰好,GRE VPN就以超强的兼容性著称,但是本身加密很弱,天作之合,这就是大名鼎鼎的GRE OVER IPSEC。
IPSEC两层关系
IPSEC的架构思路相当之先进,它将VPN的安全通信过程分成了两部分,我们可以理解为一根管子里面嵌套了另一根管子,我们把外面的管子称之为内管,外面的管子称之为外管;内管用于传输数据,外管用于保护内管,无论是内论还是外管都可以做到加密,并且内管和外管的加密算法并不是同一套,这样充分保证了数据传输的安全性。ftp和nfsv4的通信过程里面都有类似的机制。
加密的双方由于需要协商两者交互的算法,后续的”来往“不断,那我们可以将两者看做是合作关系,专业术语是”联盟“关系,注意哦,由于IPSEC是将安全通信过程分成了两部分,即双方要建立两层联盟关系,我们可以更形象化一些,A家的大儿子娶了B家的大女儿,A这的小儿子取了B家的小女儿,对于A家和B家来说,这是两层的亲家关系。
两层关系意味着两个联盟,所以无论在哪种网络设备上,在配置IPSEC的时候,都会提示两个配置界面,一个界面用于配置外管的联盟,即通道的安全联盟,另一个界面用于配置内管的联盟,即传输数据安全联盟,如下所示,下图一就是通道的安全联盟,下图二就是数据的安全联盟。
IPSEC两个阶段
我们前面说了IPSEC的两层联盟关系,其实这两层联盟关系是串行,就是必须先建立安全通道连接,才能再去建立安全的数据连接,所以说IPSEC根据这两层关系就分成两个阶段,这个阶段是我们为了方便学习主观划分,划分的相当简单粗暴:
- 阶段一:专注于建立一个安全的通道联盟,主要为了保证阶段二
- 阶段二:专业于建立一个安全的数据传输联盟,主要为了保护数据
两个协商模式
注意,这里的协商模式指是在建立通道安全时的协商!!!在数据传输时没有协商模式的概念
手工or自动,我们先来回忆一下ssh在建立连接时的问题,我们可以通过让ssh的客户端与服务端通过DH算法自动协商一个密钥出来,也可以提前手动准备生成好公钥做好配置,IPSEC在建立联盟关系的时候与之类似,你可以选择让他们两者自动协商各种加密方式,也可以手动指定。如果总部就一个分支机构,那手工就手工吧,那如果总部有很多的分支机构,那最好就是自动嘛,这样的话,当我们配置好一个联盟模板之后,之后就是不断的应用就好了,不用每一次都敲一遍。
两种封装模式
注意,这里面的封装模式是指IPSEC地封装,也就是正式传输数据时的封装模式。
在开始真正传输数据时,我们可以传输模式,也可以选择隧道模式,这其实是IPSEC的两种应用场景,IPSEC可以应用在主机与主机之间,也可以应用在站点与站点之间;
这里面的隧道意思就是在原始报文时的基础上再加一个IP首部,隧道嘛!就是这样呀!部署在站点与站点之间,那传输模式并不会新加一个IP首部,所以适合部署于两台之间。
三个名词
正确理解联盟:联盟就是联盟,是指一种关系,就像A与B之间建立对等体关系,A与B之间是对等关系,那IPSEC当中,A与B建立联盟,那就相当于'联盟对等体'而已。
正确理解IKE:想要建立对等体、邻居关系、邻接关系都要经历一番过程,建立联盟关系也是一样呀,只不过在IPSEC当中建立“联盟体”就是商量各种加密算法,并不是像ospf、bgp一样,是协商hello时间、网络类型啥的,而建立‘联盟体’的过程就是各种密钥算法协商的过程,这个过程叫IKE(internet key exchange因特网密钥交换)
正确理解SPI:SPI最简单了,全称是security parameter index 安全参数索引,其实最关键的作用就是标识而已。当一个公司有多个分支机构,那总部就需要向每个分支机构建立IPSEC VPN,也就是说想要实现一对多的VPN关系,我只有一个公网IP地址,怎么实现一对多呢?除非将不同的IPSEC VPN做区别,而SPI就是标识的号码而已,用于区分多个联盟关系。
实验-手动
手动示例
- 配置网络可达
- 配置ACL识别感兴趣流
- 创建安全提议
- 创建安全策略
- 应用安全策略
安全策略主要有两个目的:
- 第一个目的是将acl和安全提议相关联
- 第二个目的是要知道到底要和谁去建立连接。
我们接下来来看一个小案例
ipsec proposal shanghai
encapsulation-mode tunnel
tranfrom esp
esp authentication-algorithm sha2-256
esp encryption-algorithm aes-128
display ipsec proposal
命令 | 备注 |
---|---|
ipsec proposal shanghai encapsulation-mode tunnel tranfrom esp esp authentication-algorithm sha2-256 ensp encryption-algorithm aes-128 display ipsec proposal |
创建安全提议 配置报文的封装模式 配置隧道采用的安全协议 配置ESP使用的单向散列算法 配置ESP使用的对称加密算法 验证IPSEC提议配置 |
我们先配置的其实是数据传输时的部分,关于通道的加密部分会在下文当中讨论,其实上面的配置非常简单,这个安全提议其实只有两个配置:
- 采用什么封装模式,取决于我们是站点间连接还是主机之间连接
- 选择一种加密工具AH或ESP,正常人全都选择ESP,因为ESP本身即向实现单向散列算法也能实现对称加密,你不指定具体的算法它有默认的,建议还是自己定一下,如上图所示,默认的安全性差一点。默认的内容通过display是看不到的哟~,再次提醒,上面创建安全提议指定的参数其实是用于加密数据的,而不是用来加密通道的。
安全提议配置完之后,我们接下来需要该配置安全策略了,如下所示:
ipsec policy P1 10 manual
security acl 3000
proposal shanghai
tunnel local 12.0.0.2
tunnel remote 13.0.0.3
sa spi inbound/outbound esp 12345
sa string-key inbound/outbound esp cipher wakin
display ipsec policy
ipsec policy P1 10 manual # 创建并配置IPSEC安全策略(手动)
security acl 3000 # 配置引用ACL
proposal shanghai # 配置引用的提议
tunnel local 12.0.0.2 # 配置安全隧道的本端地址
tunnel remote 13.0.0.3 # 配置安全隧道的对端地址
# #配置SA的SPI,入方向和出方向必须设置并且双方的必须相互对应
sa spi inbound/outbound esp 12345
# #配置SA的认证密钥入方向和出方向都必须设置,并且双方的必须相互对应
sa string-key inbound/outbound esp cipher wakin
# 验证IPSEC手动策略配置
display ipsec policy