VPN的隧道协议主要有三种,PPTP,L2TP和IPSec,其中PPTP和L2TP协议工作在OSI模型的第二层,又称为二层隧道协议;IPSec是第三层隧道协议,也是最常见的协议。
IPSec VPN基本概念
IPSec是一个框架,它不是具体指某个协议,而是作为一个完整的方案,由各种协议和其他功能组合而成。该框架涉及到的主要有加密算法、验证算法、封装协议、封装模式、密钥有效期等等。
IPSecVPN建立的前提:要想在两个站点之间安全的传输IP数据流,它们之间必须要先进行协商,协商它们之间所采用的加密算法、封装技术以及密钥。分为两个阶段,第一个阶段是建立管理连接,第二个阶段是建立数据连接。
阶段一
在两个对等体设备之间建立一个安全的管理连接,没有实际的数据通过这个连接。这个管理连接是用来保护第二阶段协商过程的。阶段一需要协商的内容:
1.双方使用什么加密算法进行加密(des、3des、aes)
2.摘要(完整性)认证的方式(MD5、SHA)
3.采用的密钥共享方式(预共享密钥,CA数字签名、公钥认证)
4.使用的密钥强度DH组(越大加密强度越高)
5.管理连接生存时间(默认一天,单位秒)
6.协商模式(主模式或积极模式)
阶段二
当对等体之间有了安全的管理连接之后,它们就可以接着协商用于构建安全数据连接的安全参数,这个协商过程是安全的,加密的。协商完成后,将在两个站点间形成安全的数据连接。阶段二需要协商的内容:
1.传输模式(隧道模式还是传输模式)
2.封装技术(ESP、AH)
3.传输过程中数据的加密方式(des、3des、aes)
4.传输过程中数据的认证方式(MD5、SHA)
3.定义其他感兴趣的内容(定义需要使用IPSec的流量)
加密和验证算法
加密算法
一方传递消息之前,先使用加密算法和加密密钥;另一方收到消息后,使用相同的加密算法和加密密钥。对称加密算法,主要包括DES、3DES和AES。
验证算法
一方传递消息之前,先使用验证算法和验证密钥对消息进行处理,得到签字画押的文书,即签名。然后将签名随消息一同发出去。另一方收到消息后,也使用相同的验证算法和验证密钥对消息进行处理,同样得到签名,然后比对两端的签名,如果相同则证明该消息没有被篡改。常用的验证算法有MD5和SHA系列。
封装协议
AH协议(AuthenticationHeader)
1、AH是一种基于IP的传输层协议,协议号为51。
2、只能支持认证 ,不支持加密 。
3、对整个头部进行认证。
其工作原理是在每一个数据包的标准IP报头后面添加一个AH报文头。AH对数据包和认证密钥进行Hash计算,接收方收到带有计算结果的数据包后,执行同样的Hash计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH协议的完整性验证范围为整个IP报文。
ESP协议(EncapsulatingSecurity Payload)
1、ESP也是基于IP的传输层协议,协议号是50。
2、ESP支持加密和认证。
3、ESP不对IP头的内容进行保护。
其工作原理是在每一个数据包的标准IP报头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾(ESP Tail和ESP Auth data)。与AH不同的是,ESP将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但ESP没有对IP头的内容进行保护。
封装模式
封装模式是指将AH或ESP相关的字段插入到原始IP报文中,以实现对报文的认证和加密,封装模式有传输模式和隧道模式两种。当安全协议同时采用AH和ESP时,AH和ESP协议必须采用相同的封装模式。
传输模式
在传输模式中,AH头或ESP头被插入到IP头与传输层协议头之间,保护TCP/UDP/ICMP负载。传输模式不改变报文头。AH协议的完整性验证范围为整个IP报文,ESP协议无法保证IP头的安全。
隧道模式
在原IP头部之前插入ESP/AH头部,同时生成新的IP头部 。隧道模式使用新的报文头来封装消息,可以保护一个网络的消息,适用于两个网关之间通信,是比较常用的封装模式。
可以发现传输模式和隧道模式的区别:
1、传输模式在AH、ESP处理前后IP头部保持不变,主要用于End-to-End的应用场景。
2、隧道模式则在AH、ESP处理之后再封装了一个外网IP头,主要用于Site-to-Site的应用场景。
IPSec检测机制
Keepalive机制
Keepalive机制通过IKE对等体周期性发送Hello消息来告诉对方自己处于活动状态。若在超时时间内没有收到Hello报文,则认为对端不可达。此时将删除该IKE SA及由它协商的IPSec SA。
Keepalive机制默认关闭。配置相应参数后,keepalive机制生效。
DPD机制
DPD(Dead Peer Detection)机制不用周期性发送Hello消息,而是通过使用IPSec流量来最小化对等体状态检测所需消息报文的数量。若可以收到对端发来的流量,则认为对方处于活动状态;只有当一定时间间隔内没有收到对端发来的流量时,才会发送DPD报文探测对端的状态。若发送几次DPD报文后一直没有收到对端的回应,则认为对端不可达,此时将删除该IKE SA及由它协商的IPSec SA。
实际应用中keepalive很少使用。主要原因是keepalive存在如下两个方面的缺陷:
1、Keepalive机制周期性发送Hello报文将消耗大量的CPU资源,会限制可建立的IPSec会话的数量。
2、Keepalive没有统一标准,各厂商的设备可能无法对接。
IPSec VPN应用场景及不足
IPSec VPN的应用场景
1.Site-to-Site(站点到站点或者网关到网关):多个机构分布在互联网的不同的地方,各使用一个商务领航网关相互建立VPN隧道,企业内网(若干PC)之间的数据通过这些网关建立的IPSec隧道实现安全互联。
2.End-to-End(端到端或者PC到PC):两个PC之间的通信由两个PC之间的IPSec会话保护,而不是网关。
3.End-to-Site(端到站点或者PC到网关):两个PC之间的通信由网关和异地PC之间的IPSec进行保护。
IPSec VPN的不足
1. 组网不灵活。如果需要新增或调整用户的IPSec策略,需要调整原有IPSec配置,配置繁琐;
2. 需要安装客户端软件,导致兼容、部署、维护方面都比较麻烦;
3. IPSecVPN对用户的访问控制不够严格,只能进行网络层控制,无法细粒度的应用层资源的访问控制。