第二篇:24.1-VPN基础
概述
VPN (virtual private network)
Ipsec工作在网络层,是一个公开标准框架,提供数据保密性、完整性和起源认证。 ? 机密性:既加密,对数据本身进行加密,防止数据被窃听截取。
? 数据完整性:保证数据在传输时没有被改变。
? 起源认证:接受者鉴别数据起源,保证起源的有效性。
? 反重放保护:确保每个数据包是唯一的,没有被复制。TCP序列号32位,20亿种组合,下一个序列号是无法预测的。
四种VPN
站点到站点VPN:在VPN网关之间用隧道模式保护两个多更多站点流量(既L2L、或sit-to-sit)
远程访问VPN:单用户设备和VPN网关之间建立安全连接,通常使用隧道模式。通常会有
一个内部地址,且内部地址(隧道)被封装在真实外部地址内,被保护起来。 防火墙VPN:带有增强安全功能的L2L或远程VPN,使用PIX或ASA做为VPN网关,不
能严格算作一个VPN分类,但cisco喜欢如此描述。
用户对用户VPN:在设备的真正源和目标IP之间传输数据(例如:路由器到TFTP之间)。缺乏扩展性,特别是加密点比较多的时候。
VPN关键组件
验证:设备间使用预共享密钥或数字证书验证,用户可以使用用户名和口令认证。
封装方法:ESP和AH (提供完整性检查,不加密,会对源目IP地址进行散列运算,不能
很好支持NAT)
数据加密:DES、3DES、AES、RSA等
数据包完整性:MD5或AH,使用数据包内容和共享密钥等信息通过散列函数运算产生,
成为数字签名。
密钥管理:之前的三个安全组件,都需要密钥。
建立VPN考虑
1. 定义感兴趣的流—既加密流量
2. 碎片—通常MTU1500字节,若VPN添加额外80字节开销,则导致必要MTU大小为1580字节,在这种情况下会将原理的数据包切割成两个数据包,VPN设备要处理两倍的数据包流量。可以使用PMTUD技术动态调整或手工调整MTU来防止碎片产生。
3. 流量保护强度—安全性越强,增加更多的处理开销和延迟。对于语音视频等敏感流量,要考虑折中的安全措施。DES 3DES 1,2,5,7
4. NAT。在AH封装中无法穿越NAT,因为AH的完整性检查会包括IP地址信息。在ESP封装中IP是不参加完整性计算的,但是对于PAT来说它需要将信息封装在TCP或UDP段头中,而AH和ESP都没有端口号,所以PAT无法处理它们的封装。(后面又NAT-T技术解决此问题,在CISCO设备中也可以将AH或ESP的包头封装在TCP或UDP的段里,这都是私有方法)
5. 冗余。冗余的线路可以提高线路的可用性,但是会增加复杂性,根据工程需要来配置。
VPN技术
密钥--分为对称密钥和非对称密钥
对称密钥运算简单快速,例如DES、3DES、AES等等。两台设备的密钥必须相同。
非对称密钥同时具有数据加密和身份验证功能,但是运行效率低1500倍 数据加密:非对称密钥分为公钥和私钥,其中私钥是安全私藏,永远不会和其它设备共享的。
非对称算法举例
1. 设备A产生一对公钥和私钥;
2. 设备A将公钥发给设备B;
3. 设备B使用这个公钥来对数据进行加密,并发送给A;
4. 设备A使用私钥对数据进行解密。
身份验证:使用非对称密钥进行身份认证(也称为数字签名),
举例:A向B验证自己的身份
1. 设备A和B互相交换了公钥
2. 设备A将自己的身份信息使用公钥进行加密
3. 设备A将自己的身份信息明文和私钥加密过的身份信息,同时发给B
4. 设备B收到A的加密身份信息,将其解密。然后与A的明文身份信息进行对比,
若身份信息相同,则验证B收到A的加密信息。
非对称密钥标准:
? RSA—主要产生数字签名并执行加密
? DSA(数字签名算法)--类似于RSA,用来验证功能签名,但是不会加密
? DH—在IPSec中的密钥交换(IKE)用来在设备间安全的交换密钥信息
? KEA—增强版本的DH实现。
因为非对称算法的复杂性,通常用来进行身份验证或密钥共享,而大量数据本身使用对称密钥进行加密。
数据包验证
目的:检测数据包来源和检测被损坏的数据包
使用散列消息验证码(HMAC),用于处理包相关验证问题。具体实现包括MD5或SHA-1。在IPsec验证头的AH或ESP封装,都会使用HMAC来验证数据包是否损坏。
HMAC工作过程如下图所示:
1. 前提,双方会在HMAC前有共享密钥。
2. 在源上对数据和共享密钥一起进行散列函数运算,得到第一个数字签名。
3. 将数据和密钥发送给目标后,目标也使用数据和密钥产生第二个数字签名。
4. 对比两次数字签名是否一致,如果一致表示校验成功。
问题:数据加密了,为什么还要数据包验证?
答:1.保证是正确源发送数据,而不是攻击者。
2.防止攻击者不断发送数据包来消耗设备CPU等资源。
下图对数据加密和HAMC的过程做了进一步解释:
密钥共享的解决方法
1.预共享密钥
可以把密钥写在脑袋上,等头发长出来,再发送给对方,当然这是开玩笑。也可以使用打电话的方式告诉对方,这也是开玩笑。这些都是“带外”的密钥共享方法。这种方式并没有使用已有的网络。
缺点是扩展性比较差,比如有100个加密链接,那么协商过程将会非常漫长,况且还需要周期性的更新密码,那就更复杂了。
2.非对称算法加密密钥
非对称算法虽然运算速度慢,但是如果不加密数据,只用来加密密钥本身还是很好的。 举例,A和B互相交换密钥,(只描述其中一个方向)
1) A产生一对非对称的公钥和私钥。
2) B将受到A发送过来加密用的公钥
3) B使用A的公钥,对“对称算法的密钥”进行加密,并发送给A
4) A使用自己的私钥解密,得到B发过来的对称密钥。可用于数据加密
3.DH(diffie-hellman)
这种算法的魔力是“一对值之间有关系,另外一对值之间也有关系。当交换这两对值中其中一个数值时,它们通过DH算法能得到一样的结果。即使输入不同的值到算法中,两端依然会产生相同的值。”
交换密钥过程举例:
1. 两个对等体根据自己的私钥,经过派生算法产生一个解密的私钥
2. 每一个对等体互相共享公钥
3. 每一个对等体用自己的私钥和对方的公钥,通过DH算法运行,产生新的加密用DH密钥,用这个密钥来加密真正的“对称密钥“,并发送给另一方
4. 另一方收到DH密钥加密过的“对称密钥”,使用DH算法算出一样的DH密钥进行解密,得到真正的“对称密钥”
5. 此时两个对等体可以使用“对称密钥”进行数据的加密和解密。
在DH算法中,DH值负责“密钥的安全交换”它并不出来验证机制。
验证方法
分为设备认证和用户认证
设备认证3种方法:
1. 预共享密钥
验证设备最常用的方法,密钥在两个对等体间用带外的方式共享。例如电话协商
2. 预共享非对称密钥
比预共享密钥更安全,产生一对加密的公钥和解密的私钥。在预共享密钥的本地散列值基础上,对HASH的散列值再进行私钥加密(既,数字前面),并发生给对方,进行解密和对比,以认证起源。
3. 数字证书
预共享密钥对于大型网络来说扩展性很差,因为它需要为每一个对等体分配一个不同的密钥以保证安全性。大型网络中,通常使用数字证书来做设备认证。
数字证书类似于护照的电子版本,它可以验证一个人的身份。数字证书最重要三部分就是一台设备的身份信息、它的公钥和用它私钥产生的签名。
用户认证
若VPN验证信息存储在终端设备上,而PC或笔记本电脑被盗了,那么用户认证可以提供多一层的保护。窃贼即使获得了终端设备的验证信息,然后他还需要用户认证才能正确授权访问VPN网络。
Overlay vpn:ipsec
Peer-to-peer vpn:mpls
二层VPN:FR、ATM
三层VPN:ipsec、MPLS
应用层VPN:SSL
IPsec: sit-to-sit(lan-to-lan)和easy(remote access),括号里是老式叫法。
Sit-to-Sit ,要有公网固定的IP地址。
Easy,非固定的IP地址。
安全性主要包括:认证数、据完整性、加密
其中认证和数据完整性靠HASH完成,注意HASH只是认证算法,不是加密算法。 HASH包括MD5或SHA-1算法。
加密包括:DES、3DES、AES
IPsec是协议集,包括:IKE(控制层面)、ESP或AH(数据层面)等。ESP用的多,既支持认证又支持加密,而AH只支持认证。
IKE使用udp端口500; ESP使用IP端口50; AH使用IP端口51。在做VPN时要确保这些流量可以通过。Show access-list
模式:
Transport mode:没有新IP头部,局域网应用。
Tunnel mode:有新IP头部,广域网两个公司间通信用。
认证:
Sit-to-Sit用:
预共享密钥:双方有一样的密钥即可
数字证书:需要CA服务器
Remote用:
用户名和密码
AAA
生物认证(指纹或眼球)
IKE:使用ISAKMP来协商SA(安全关联),是一个安全数据库,包含双方加密算法等信息。
阶段1:协商isakmp SA,包括main mode(会进入阶段2)或 aggressive mode(会进入1.5阶段,主要用在easyvpn)
阶段2:协商ipsec SA ,协商使用esp还是AH方式传输
IKE其他功能:
DPD:VPN冗余,和多个对端路由器建立VPN,当一个路由器DOWN,另一个VPN UP。
MPLS vpn
需要:
1 客户路由根核心路由分离 (VRF)
2 客户路由在运营商内部走最优的路径 (Peer-o-Peer)
3 客户路由之间的地址空间是可以重叠的 (RD)
4 客户路由之间的控制
No bgp default ipv4 unicast //关闭默认的bgp的 ipv4协议。
Address-family vpnv4 //启用bgp的vpnv4协议
Nei 4.4.4.4 activate //启用
Sh ip bgp vpnv4 all summary //看vpnv4协议的论据
Ip vrf 6 //创建名为6的vrf ,本地有意义。
Rd 14:1
Route-target 14:1
Sh ip rou vrf 6 //看名为6的vrf路由表
Int f0/0
Ip vrf forwarding 6 //使得f0/0只在vrf名字为6的vrf表中转发。
Ping vrf 6 192.168.16.6 //由于路由在vrt6中,不在glob路由表中,所以此时不能直接ping 。因为ping 默认查glob表。
Ip rout vrf 5 5.5.5..0 255.255.255.0 s1/1 //把5.5.5.0的路由加到vrf 5表里面。
Sh ip bgp vpnv4 all //看转发表。(即vrt和glob的公用表)
一般RT和重分布容易影响路由。
如果有路由不能传数据,通常是标签的问题。