博主QQ:819594300
博客地址:http://zpf666.blog.51cto.com/
有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持!
一、VPN概述
VPN技术最早是为了解决明文数据在网络上传输带来的安全隐患而产生的。TCP/IP协议族中很多协议都是采用明文传输的,比如telnet、ftp、tftp等。
VPN技术可以对公网上传输的数据进行加密,也可以实现数据传输双方的身份验证。
1、VPN的定义
VPN(虚拟专用网),就是在两个网络实体之间建立的一个受保护的连接。这两个实体可以通过点到点的链路直接相连,但是一般情况下会相隔较远的距离。
VPN技术的作用:
- 通过使用加密技术防止数据被窃听。
- 通过数据完整性验证防止数据被破坏、篡改。
- 通过认证机制实现通信双方身份确认,来防止通信数据被截获和回放。
VPN技术定义:
- 何种流量需要被保护。
- 数据被保护的机制。
- 数据的封装过程。
总结:实际环境中VPN不一定使用上述所有的功能,是需要具体的环境需求和实现方式决定的。
2、VPN的连接模式
VPN有两种基本的连接模式:
隧道模式
传输模式
1)传输模式
在整个VPN传输过程中,IP包头并没有被封装进去,这意味着源端和目标端的IP暴露在互联网中,而传输的实际额数据被封装在了VPN报文中。VPN传输就是VPN报文封装过程也就是数据的加密过程。黑客截取了数据后,无法破解数据内容,但是可以知道通信双方的IP。
优点:传输效率高。
使用场合:多用于通信双方在同一个局域网内的情况。
2)隧道模式
VPN设备将整个三层数据报文封装在VPN数据内,再为封装后的数据报文添加新的IP包头。新的IP包头中封装的是VPN设备的IP地址信息,即使当攻击者截取数据,他不但不知道数据真实内容也不知道实际的通信双方的地址信息。
优点:安全性和灵活性具有很大的优势
使用场合:总公司和分公司跨广域网的通信、移动用户在公网访问公司内部资源等很多。
3、VPN类型
1)站点到站点的VPN
就是通过隧道模式在VPN网关之间保护两个或者更多的站点之间的流量,站点间的流量通常是指局域网之间(L2L)的通信流量。L2L的VPN多用于总公司与分公司、分公司与分公司之间在公网上传输重要业务数据。
2)远程访问VPN
通常用于单用户设备与VPN网关之间通信连接,单用户设置一般为一台PC或者小型办公网络等。
很多人误认为一端为PC,就认为远程访问VPN使用传输模式,其实它使用的是隧道模式,因为远程访问VPN对安全性要求更高。
要想实现隧道模式的通信,就需要给远程的客户端分配两个IP地址:
一个是它自己的NIC地址;
另一个就是内网地址。
也就是说远程客户端在VPN建立过程中同时充当VPN网关(使用NIC地址)和终端用户(使用内网地址)。
二、加密算法
这些算法可以实现数据加密、数据完整性验证、身份验证等VPN的基本功能。
一般来说,可以将这些加密算法分为两大类:
对称加密算法和非对称加密算法。
1、对称加密算法
使用同一密钥对信息提供安全的保护。
假设对称加密算法的秘钥为“K”,客户端传输的明文数据为“M”,VPN网关加密后的数据为“C”,而E和D为加密和解密函数,则数据加密过程如下:
特点:加密和解密使用同一把钥匙。
常见的对称加密算法:DES、3DES、AES
1)DES算法
密钥长度是64位,但有8位用于奇偶校验,实际长度是56位。该算法能被黑客攻破,已面临淘汰,不建议实际环境中使用。
2)3DES算法
NIST研发,是DES的增强版,它使用三个阶段额DES,即同时使用三个不同的56位密钥,相当于产生一个168位密钥长度。目前还没人能在有效时间内破解。
3)AES算法
NIST研发,与取代DES和3DES,是三个算法中最安全的,支持128、192、256位密钥长度,有效密钥长度可达上千位。
2、非对称加密算法
1)算法原理
使用公钥和私钥两个不同的密钥进行加密和解密。用一个恶密钥加密的数据仅能被另一个密钥解密,且不能从一个密钥推算出另一个密钥。
假设接收方的公钥和私钥分别为P和Q,客户端传输的明文数据为M,VPN网关加密后的数据为C,而D、E分别为加密和解密函数,数据加密过程如下:
2)算法的优、缺点
目前为止还没有一种方法可以在合理有效时间范围内攻破。
但是其计算过程复杂,所以计算效率要比对称几码算法低很多(大约慢1500倍)。
3)DH算法
常用的非对称加密算法有:
RSA
DSA
DH(迪菲-赫尔曼)
前两种用用于验证功能,而DH一般被用来实现ipsec中的Internet密钥交换协议(即IKE)。
通信双方交换公钥后,会用自己的密钥和对方的公钥通过DH算法计算出一个共享密钥,然后双方会使用这个共享密钥加密传输数据。
Cisco路由器只支持DH组1、2和5。
其中1组的密钥长度为768;
2组的密钥长度1024;
5组的密钥长度为1536。
密钥的有效长度越长,安全性也高,同时CPU的资源占用率就越高。选择DH组要从网络的安全需求和设备本身的性能两个方面考虑。
3、密钥交换
一种是带外共享,即通过U盘等物理方式共享密钥。
另一种是带内共享,即通过telnet、ssh等连接方式。
最优解决办法是通过非对称加密算法(如DH算法)加密对称加密算法的密钥,再用对称加密算法加密实际要传输额数据。
三、数据报文验证
包括两个方面:数据来源验证(即身份验证)
报文完整性验证。
1、HMAC功能实现验证功能
在VPN领域,对数据进行来源和完整性验证通常是借助散列算法实现的。HMAC(散列消息代码)功能专门开发用来处理数据包相关的验证问题,使用一个共享的对称密钥来产生固定的输出结果——数字签名。HMAC属于单项散列算法(hash算法)的一个子集。散列算法是不可逆的,即加密后的数据是无法还原的。
由于共享密钥只有真正的通信双方具有,所以HMAC功能也可以实现身份验证。
HMAC算法的原理:
1)双方共享执行hash算法的密钥key。
2)路由器A的用户数据与共享秘钥key通过hash算法得到数字签名。
3)路由器A将数字签名和用户数据一同传输给路由器B。
4)路由器B执行相同的算法过程得到数字签名。
5)路由器B比对数字签名是否一致。
2、MD5和SHA
是HMAC的两种常用算法。
MD5:是目前应用最广泛的一种算法,执行速度较快,但是安全性相比SHA稍差一点。
SHA:是NIST开发,一般被称作SHA-1,现在陆续有SHA-256、SHA-512(统称SHA-2)。
四、IPSEC VPN
IPSEC技术实现VPN是目前较为广泛的一种应用。
1、IPsec连接
在对等体之间建立IPsec VPN的连接需要三个步骤:
1)流量触发IPsec
在此步骤前,网络工程师要明确哪些流量需要被保护
2)建立管理连接
IPsec使用ISAKMP/IKE阶段1来构建一个安全的管理连接。这个管理连接只是单纯的准备工作,不是用来传输实际数据。在此步骤前,网络工程师要明确设备如何实现验证、使用何种加密及认证算法,使用哪种DH组。
3)建立数据连接
IPsec使用ISAKMP/IKE阶段2来基于安全的管理连接协商建立安全 数据连接。在此步骤前,网络工程师应该明确使用何种安全协议、针对安全协议使用加密或验证算法、以及数据的传输模式(隧道还是传输)。
三部曲之后VPN算开始了,但是VPN连接并不是一次性的,无论是步骤2还是步骤3都有一个生存周期与之关联,一旦到期连接便会终止。如果需要继续传输VPN数据,连接需要重新被构建。
2、ISKMP/IKE阶段1
IKE使用UDP端口的500。
阶段1的交换过程有两个模式:主模式和积极模式。积极模式比主模式块,主模式比积极模式安全。
无论VPN的类型是站点到站点还是远程访问,都需要完成三个任务。
- 协商采用何种方式建立管理连接(就是配置各自的传输集,然后交换,直到找到相同的传输集建立连接)
- 通过DH算法共享密钥信息(用DH算法即产生共享密钥也交换共享密钥)
- 对等体彼此进行身份验证
在主模式中,这三个任务是通过六个数据报文完成的:
1-2数据包用于协商对等体间的管理连接使用何种安全策略(即交换传输集);
3-4数据包通过DH算法产生并交换加密算法和HMAC功能所需的密钥(即建立并交换共享密钥)
5-6数据包使用预共享密钥等方式执行对等体间的身份验证(即通过HMAC来进行验证)
注意:前4个数据是明文传输,从第5个开始数据报文是密文传输,而前4个数据包通过各种算法最终产生的密钥用于第5、第6个数据包及后续数据的加密。
ISAKMP/IKE阶段1建立过程:
1)交换传输集
传输集就是一组用来保护管理连接的安全措施,包括以下几个方面:
加密算法:DES,3DES或AES。
HMAC功能(即验证功能):MD5或SHA-1。
设备验证类型:预共享密钥
DH组:cisco支持1、2、5、7,cisco路由器不支持DH7
管理连接的生存周期
设备可能不止一个传输集,发起连接时,会匹配传输集。
如果使用cisco产品实现VPN连接,在传输集中除了生存周期外,其他项必须匹配才能建立连接。对等体之间生存周期不通,会共同使用值较小的那个。
2)通过DN算法实现密钥交换
第一步只是协商管理连接的安全策略,二共享密钥额产生与交换就是通过DN来实现。
3)实现设备之间额身份验证
设备身份验证最常用的方法就是预共享密钥,即在对等体之间通过带外的方式共享密钥,并存储在设备的本地。设备验证的过程可以通过加密算法或HMAC功能两种方法实现,二加密算法很少用于身份验证,多数情况都会通过HMAC功能来实现。
阶段1相关配置命令
1)配置安全策略
包括策略的序列号、加密算法、验证方法、DH组、生存周期。
用于加密和验证阶段1的第5、6个数据包
使用show crypt isakmppolicy命令查看上述配置。
2)配置预共享秘钥
通过下述命令可以配置预共享密钥
共享密钥配置完成之后,可以通过show crypto isakmp key命令查看,在结果中可以知道是密文还是明文:
但是通过show run可以看见加密状态下的明文显示的密码,这样很不安全。为了增强安全性,在IOS12.3(2)T版本中,增加了一个选项来加密密钥,但是要求设备的IOS镜像必须支持AES加密,
具体命令如下:(说明:在new key后面输入的密钥至少为8个字母)
注意:用过“no key config-key password-encrypt”命令不能删除和破解被加密的预共享密钥,它会导致预共享密钥不能再被使用了,所以一旦勿使用了该命令后必须重新为设备指定密钥,即重新执行一遍
“key config-key password-encrypt”命令。
3、ISKMP/IKE阶段2
该阶段主要是在两个对等体(ipsec)之间建立数据连接,
主要完成以下的任务:
- 定义对等体间需要保护何种流量(即创建ACL)
- 定义用来保护数据的安全协议
- 定义传输模式
- 定义数据连接的生存周期及密钥刷新的方式
其中,ipsec对等体一般是通过ACL来匹配哪些需要加密传输的VPN流量。
ISAKMP/IKE阶段2建立过程:
1)安全关联(SA)
Ipsec需要在两个对等体之间建立一条逻辑连接,就需要使用一个安全协议SA。SA的连接是在源点和终点之间的单向连接,如果需要双向连接,就需要两个SA连接,每个方向一个。
SA连接的三要素如下:
- 安全参数索引(SPI):用于唯一标识每条SA连接
- 安全协议的类型:AH和ESP
- 目的IP地址。
2)阶段2的传输集
该阶段的传输集定义了数据连接是如何被保护的。和阶段1的传输集(管理连接的传输集)很类似,都是对等体设备可以保存一个或多个传输集。
- 安全协议:AH协议或ESP协议
- 连接模式:隧道模式或传输模式
- 加密方式:对于ESP而言,有DES、3DES、AES、AES-192、AES-256或不使用加密算法。
- 验证方式:MD5或SHA-1
3)阶段2的安全协议
AH协议和ESP协议。可以通过其中的一个协议来实现数据额加密和验证,如使用ESP协议。也可以使用两个协议一起来实现。
AH使用IP协议号51;ESP使用IP协议号50。
AH(认证头协议)在RFC 2402中有明确定义。
- 数据完整性服务。
- 数据验证。
- 保护数据回放攻击。
ESP在RFC2406中有明确定义,它与AH区别如下:
- ESP对用户数据实现加密功能。
- ESP只对IP数据的有效载荷进行验证,不包括外部的IP包头。
因此,如果有黑客对IP包头内容进行篡改,ESP是无法检测到的。这一点却使ESP可以和NAT一起共用。但是,无论是ESP还是AH都无法和PAT一起使用,这是由于PAT要修改第四层的数据包头。
ISAKMP/IKE阶段2的配置命令:
该过程有三个部分组成:
1)配置cryptoACL(加密ACL)
定义何种流量需要被保护,通过ACL匹配ipsec vpn流量。
Permit语句制定了需要被保护的流量
Deny语句定义了不需要被保护的流量。
通常情况下,两端对等体设备上的cryptoACL互为镜像,否则阶段2的连接建立就会失败。
配置命令如下:
2)阶段2的传输集
在ipsec对等体之间可以配置多个数据连接的传输集,必须保证两端至少有一对匹配的传输集,这样阶段2的数据SA连接才能协商成功。
Transform_set_name:为传输集名称,该名称具有唯一性,不能与任何其他传输集相同。
Transform1:传输集选项,参考下表:
AH |
ESP验证 |
ESP加密 |
|
ah-md5-hmac ah-sha-hmac |
esp-md5-hmac esp-sha-hmac |
esp-null esp-des esp-3des |
esp-aes 128 esp-aes 192 esp-aes 256 |
要想查看路由器上的传输集,可以使用
show crypto ipsec transform-set命令
说明:如果在数据连接建立之后修改传输集的配置,并不会影响现有的SA设置,只有连接的生存周期到期,SA才会重新建立连接或者SA被手动清除(通过clearcrypto sa或clear crypto ipsec sa命令)。
3)配置cryptomap(加密映射; 安全策略;)
该功能就是将所有的信息组织在一起构建ipsec会话。通常路由器的接口上只对应一个crypto map,如果一台路由器可以在多个接口上实现流量保护,这时可能就需要多个crypto map。
cryptomap有两种类型:静态和动态
在构建L2L(局域网之间,站点到站点)会话时通常会使用静态,
具体配置命令如下:
命令解释:
Map_name:cryptomap的名称
Seq_num:crypto map的序列号,其范围是1~65535,数值越小,优先级越高。
Ipsec-isakmp:IPSec协议 (这个为固定写法,即使用ipsec协议)
注意:上述命令会使模式进入一个子命令模式
Match address:用于调用cryptoacl的名字或编号
Set peer:用于指定ipsec的对等体设备(即对等体对方的IP)
Set transform-set:用于指定传输集的名称(最多可以列出6个)
Set pfs:(PFS:完整转发保密,即保证两个阶段中的密钥只能使用一次,进一步增强安全性),而set pfs命令是启用这项功能,并指定使用哪个DH组,这是一条可选命令。
Set security-association lifetime:用于指定SA的生存周期,默认cisco设备生存周期是3600秒或4608000KB(即相当于1小时内以10M/s速度传输的流量),生存周期由时间和流量共同决定,任何一项到达阈值,SA就要被重新协商建立。
说明:如果在ipsec对等体之间只设置lifetime,即使没有ipsec流量传输,SA也始终处于激活状态。Cisco为数据SA引入空闲超时计时器,如果没有流量通过SA传输,则SA就会被自动删除。
Set security-association idle-time:用于设定空闲超时计时器,范围为60~86400(秒),默认情况下,计时器是关闭状态。
几个查看命令:
Show crypto isakmp policy //查看IKE策略
Show crypto isakmp sa //查看管理连接SA的状态
Show crypto ipsec transform-set //查看ipsec传输集
Show crypto ipsec sa //查看数据连接SA的状态
Show crypto map //查看crypto map
五、ipsec vpn综合实验
实验目标:
某软件开发公司为了降低人员成本,在中小城市建立了分支公司,但是分支公司上传给总公司的数据一般为软件开发的关键业务数据,如果其被窃取,可能给公司带来难以预计的损失。作为该分支公司的网络管理员,对网络提出以下设计需求。
- 分支公司开发项目小组所在网络地址为172.16.10.0/24,该网络的主机可以通过vpn访问总公司开发数据服务器(10.10.33.0/24),但不能访问internet。
- 分支公司的其他客户端(同属于172.16.0.0/16网段)可以访问internet。
- 根据上述需求可以明显看出,网络管理员需要在分支公司的网关路由器上同时配置vpn和PAT。
在gns3上实验拓扑如下图:
打开secure CRT进行配置:
1、配置pc1:
①配置ip地址:
②配置网关并关闭路由功能
2、配置pc2:
①配置IP地址:
②配置网关并关闭路由功能
3、配置R1:
①配置ip地址
②配置默认路由
4、配置R2:
配置ip地址:
5、配置R3:
①配置ip地址:
②配置默认路由:
6、配置pc3:
①配置ip地址:
②配置网关并关闭路由功能
7、测试R1与R3的连通性,是可以ping通的,但是R1不能与pc3通信,pc2与pc3之间也不能通信。
①在R1上ping R3:
②在R1上不能ping通pc3
③在pc1上ping PC3,也是无法ping通的
8、在R1上配置vpn,使pc1可以ping通pc3:
①配置ISAKMP策略(即安全策略,也就是使用什么方式建立管理连接,也就是协商对等体之间的管理连接使用何种安全策略)
②配置ACL:
③配置ipsec交换集(即配置传输集,定义安全协议)
④配置加密映射(即crypto map)
⑤将映射应用在接口(即把crypto map应用在接口)
⑥配置PAT,允许10.0.0.0网段可以访问Internet
9、配置总公司的路由器R3(解释参考第8步的解释)
配置ipsec vpn
10、测试
①测试pc1可以ping通pc3
②测试pc1不能ping通internetisp(R2)
③测试pc2不能ping通pc3
④测试pc2可以访问R2