目录

IPSEC VPN

前言

我们公司使用的是GRE OVER IPSEC VPN,上个星期正儿八经的复习了GRE VPN,这个假期就来复习 一个IPSEC VPN。

GRE VPN没有加密功能,但兼容性好,IPSEC VPN应用到了密码学,在数据加密安全这块很好,但是兼容性较差,所以在使用的时候通常结合来使用。


有关于密码学的内容我之前写过一篇博客,这里不再啰嗦了……


我的理解

我对IPSEC VPN的看法

不知道大家看过呆伯特漫画没有?非常火,非常有意思,风靡了多个国家,作者出版过一本书,书的名字我忘记了,但里面有一个建议我觉得非常好,如果一个把一项技能练到全世界排名百分之五是非常困难的,可能要穷尽一生,但是如果你有擅长于两个技能,每个技能都不是特别强,达不到世界排名百分之十,但是都能差不多达到前百分之二十,两两结合之下,效果比单一技能达到百分之五还要强,该作者的绘画技能不足以让他达到画家的地步,讲笑话的技能也比不上当红笑星,但是两两结合之下却产生了风靡全球的呆伯特漫画;

IPSEC VPN除去密码学之后就是一种非常普通的VPN,但是这种VPN却将密码学结合起来了,这效果就非常好了,成为当前企业分支互联VPN的首选。

IPSEC VPN到底是个啥?

IPSEC VPN是一个框架,这个框架有一个最大的特别就是他能调用两种与密码学相关的工具,一个工具被称为AH(authentication header验证头),另一个工具被之为ESP(encapsulating security payload封装安全载荷),这两个工具是密码学的一种集合,AH最简单,仅仅应用到了单向散列算法 ,也就是仅仅能验证数据的完整性,而ESP就厉害了,除了用到了单向散列算法之外,还用到了对称加密算法,也就是说ESP能加密(机密性),但是AH不能加密。

其实ESP仅仅融合了单向散列算法和对称加密,没有融合非对称加密,而SSL 融合了以上三种方式,保证了数据的机密性、完整性、可靠性,更厉害了,即使SSL这么厉害,就有人想到通过调用SSL 实现VPN,这就是SSL VPN的来历了,不仅VPN想到了调用SSL,telnet、http、ftp这些协议都想到了,于是他们摇身一变变成了ssh、https、ftps……

关于安全联盟

在一些应用层协议当中,会调用传输层协议TCP,也就是说在双方应用在传输数据时要先建立TCP隧道,然后在隧道里面传输数据,而要想建立隧道也是需要协商的,比如协商双方的窗口大小等等,要注意这是传输层的协商。而IPSEC是一种网络层协议,它也借鉴了这种机制,即在使用IPSEC VPN正式传输数据时,要先协商建立隧道,这里面的协商是协商什么东西呢?这里面的协商比TCP的协商要简单许多,这里面的协商仅仅是协商一些加密算法,即双方商量各自使用什么加密算法。TCP的协商过程被称之为“三次握手”,而IPSEC的协商过程被称之为通过安全提议建立安全联盟。

匹配流

无论啥VPN,都必须有一步是匹配感兴趣的流,GRE 通过路由匹配感兴趣的流,把需要转发的网段都转发到GRE当中的虚拟接口进行封装。IPSEC VPN没有虚拟接口,通常IPSEC VPN是通过ACL来匹配感兴趣的流,然后再通过路由将数据扔给物理接口,总结一下:

  • GRE通过路由匹配感兴趣的流,将感兴趣的流直接扔给虚拟接口,匹配和指向结合;
  • IPSEC VPN通过ACL匹配感兴趣的流,然后通过路由扔给物理接口,匹配和指向分开了;

在匹配流这一块,得提一下GRE OVER IPSEC,在GRE OVER IPSEC当中,匹配流的工作由GRE 包揽了,IPSEC VPN不参与匹配流这一块了,后面我们会再详细的说一说;

传输模式

在传输模式这块,IPSEC比GER也多了一种,GRE VPN只能用于站点到站点之间的传送,无法实现主机与主机之间的传送,而IPSEC可以实现以上两种,不过我们常用的还是站点到站点之间的,站点到站点之间的这种模式又被称之为隧道模式;

隧道模式之外还有一种模式是传输模式,主机到主机之间的,这种很少使用了,不多说了;

说一说,他们之间的区别吧?隧道模式ESP或AH头放在旧IP与新IP之间,而是传输模式是没有新IP,AH或ESP放到了旧IP与TCP头之间,传输模式不改变报文的头部,源和目的IP就是最终通信的源和目的IP,通信双方只能保证自己发出的消息,不能保护一个网络的消息。

路由器IPSEC配置示例

IPSEC VPN_传输层

R1的配置

# R1的配置
# 匹配感兴趣的流
[R1]acl 3000
[R1-acl-adv-3000]rule permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.00.0.0.255

# 调用AH或ESP,这里面我们选择ESP,使用默认配置即可
[R1]ipsec proposal aa
[R1]dis ipsec proposal

Number of proposals: 1

IPSec proposal name: aa
Encapsulation mode: Tunnel
Transform : esp-new
ESP protocol : Authentication MD5-HMAC-96
Encryption DES

# 创建IPSEC安全策略
[R1]ipsec policy bb 10 manual
# 调用ACL
[R1-ipsec-policy-manual-bb-10]security acl 3000
# 调用安全提议
[R1-ipsec-policy-manual-bb-10]proposal aa
[R1-ipsec-policy-manual-bb-10]tunnel local 1.1.1.1
[R1-ipsec-policy-manual-bb-10]tunnel remote 2.2.2.1
[R1-ipsec-policy-manual-bb-10]sa spi inbound esp 123456 #入方向加密密钥
[R1-ipsec-policy-manual-bb-10]sa spi outbound esp 123456 #出方向加密密钥
[R1-ipsec-policy-manual-bb-10]sa string-key inbound esp simple 234567 #入方向验证密码

[R1-ipsec-policy-manual-bb-10]sa string-key outbound esp simple 234567
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]ipsec policy bb
[R1-GigabitEthernet0/0/1]qu
[R1]ip route-static 192.168.2.0 255.255.255.0 1.1.1.2

R2的配置

[R3]acl 3000
[R3-acl-adv-3000]rule permit ip source 192.168.2.0 0.0.0.255 desti 192.168.1.0 0
.0.0.255
[R3-acl-adv-3000]qu
[R3]ipsec proposal aa
[R3-ipsec-proposal-aa]dis ipsec proposal

Number of proposals: 1

IPSec proposal name: aa
Encapsulation mode: Tunnel
Transform : esp-new
ESP protocol : Authentication MD5-HMAC-96
Encryption DES
[R3-ipsec-proposal-aa]qu
[R3]ipsec policy bb 10 manual
[R3-ipsec-policy-manual-bb-10]security acl 3000
[R3-ipsec-policy-manual-bb-10]proposal aa
[R3-ipsec-policy-manual-bb-10]tunnel local 2.2.2.1
[R3-ipsec-policy-manual-bb-10]tunnel remote 1.1.1.1
[R3-ipsec-policy-manual-bb-10]sa spi inbound esp 123456
[R3-ipsec-policy-manual-bb-10]sa spi outbound esp 123456
[R3-ipsec-policy-manual-bb-10]sa string-key inbound esp simple 234567
[R3-ipsec-policy-manual-bb-10]sa string-key outbound esp simple 234567
[R3-ipsec-policy-manual-bb-10]dis th
[V200R003C00]
#
ipsec policy bb 10 manual
security acl 3000
proposal aa
tunnel local 2.2.2.1
tunnel remote 1.1.1.1
sa spi inbound esp 123456
sa string-key inbound esp simple 234567
sa spi outbound esp 123456
sa string-key outbound esp simple 234567
#
return
[R3-ipsec-policy-manual-bb-10]qu
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ipsec policy bb
[R3-GigabitEthernet0/0/0]qu
[R3]ip route-static 192.168.1.0 255.255.255.0 2.2.2.2

报文示例

IPSEC VPN_加密算法_02

IPSEC的报文已经抓出一份放到了百度云盘了,已经配置完成的拓扑也已经保存到百度网盘;

IPSEC的报文也很有意思,使用传输模式的IPSEC数据包里面只有NEW 头部,剩下只有一个ESP头,而OLD 头部是隐藏在ESP里面的,我们在报文里面看不到里面的内容。

但如果是用AH这个工具的话,NEW和OLD头部就都能看到了,所以AH不安全嘛!