VPN
VPN基础
VPN需求背景
VPN定义
VPN是指依靠ISP或其它NSP在公用网络基础设施智商构建的专用的安全数据通信网络,这个专线网络是逻辑上的而不是物理的,所以称为虚拟专用网。
虚拟:用户不再需要拥有实际的长途数据线路,而是使用公共网络资源建立自己的私有网络。
专用:用户可以定制最符合自身需求的网络。
核心技术:隧道技术。
VPN的必要性
通过搭建专线的方式面临着成本过高的缺点,但是具有稳定性、安全性以及性能的多方面保证。当分公司数量庞大、分布范围广阔甚至是跨国分布时,搭建专线的成本就变的异常高昂;此外,还有一些个人访问公司内网的情况,搭建专线更是不可行。因此,VPN的使用势在必行。
VPN面临的问题
访问内网时面临的问题:
如何进行公网和内网的切换?(公网-内网/内网-公网-内网等)
如何防止传输信息被截获?
如何防止传输信息被篡改?
如何防止传输信息来源不正规?
VPN面临问题的解决
针对访问内网时面临的问题,VPN给出的技术为:
针对公网和内网的切换,可以使用隧道技术解决;
为防止传输信息被截获,对信息进行加密;
为防止传输信息被篡改,对信息进行完整性校验,数据认证技术;
为防止传输信息来源不正规,采用证书机制,身份认证技术。
VPN隧道技术概述
专线的情况下:
虚拟隧道的情况下:
虚拟隧道对数据加密的情况:
显而易见,小车作为乘客需要有自己的私有的原地址和目的地址,大车作为承载工具有自己公有的原地址和目的地址。
这里的VPN指的是各种VPN协议。
当需要对内容进行加密时,加密的是乘客(通信数据)部分。
VPN分类
业务类型
Client-LAN VPN
适用于出差在外的员工连接企业内网。
LAN-LAN VPN
适用于公司内网连接分公司内网。
网络层次
应用层(指对应用层的数据进行虚拟隧道传输)
SSL VPN(常被应用于Client-LAN VPN)。
传输层
Sangfor VPN。
网络层
IPSec(常被应用于LAN-LAN VPN)、GRE等。
网络接口层
L2F/L2TP、PPTP等。
VPN常用技术
隧道技术
多种隧道协议技术的比较:
加解密技术
对称加密
加密算法分为国际标准加密算法和国家标准加密算法(需要国标加密卡,等保高),通常情况下,标准越小,加密越严格,等级保护越高。通常针对某级别等级保护,所采用的加密算法标准是有规定的。
对称加密功能可以集成到硬件上(例如国际加密卡),要比非对称加密快的多。
非对称加密
对称加密不能满足通常的加密需求,密钥的传递通常是问题(只能以明文的方式传送),因此衍生出非对称加密。
非对称加密密钥分为私钥和公钥,公钥加密的数据只能用私钥解密,私钥加密的数据只有公钥能解密。私钥是自己的,公钥可以分发出去。
非对称加密通常算法复杂,加密数据会使数据膨胀,因此通常不用与数据通信。可用于身份认证等数据传输前期的校验,而实际数据传输使用对称加密。目前主流的方案是使用非对称加密传递对称加密的密钥,后续使用对称加密密钥进行数据传输。
常见的对称加密算法:
DES算法用56位的密钥加密64位的数据(长度固定),3DES顾名思义把DES算法做了3遍,目前主流的对称加密算法为AES算法。AES算法也分为AES-128/192/256,每种算法加密的数据长度不同。
常见的非对称加密算法:
数据完整性技术
目前为止,虽然数据被加密可以防止被抓包窥探信息,但是倘若数据被篡改是无法感知的,针对此问题,为数据提供指纹。(采用散列算法hash,是一个单向算法,只能从A算成B,例如求余数算法,MD5算法等)
常见的散列算法有:MD5、SHA-1、SHA-2。它能够把任意长度的输入变换成固定长度的输出。它有如下特点:相同输入相同输出、不可逆推、等长输出以及雪崩效应(很小的改动引起散列值很大的变化)。
通过计算数据的散列值,得到数据指纹,传递数据和指纹,B可以重新计算指纹进行比对,即可感知到数据的完整性。
此时虽然不能被篡改,但是还可以进行重放攻击(对数据复制几百万份,耗尽硬件资源)。
此类问题通过序列号即可解决。
身份认证技术
还有一个问题没有解决,那就是A是不是A的问题,倘若有人随便向B发数据,也会对安全性造成影响。
此类问题采用数字签名解决,因为没有人拥有A的私钥,对计算出的数据的哈希值用A的私钥进行加密,即获得数字签名,在终点处用A的公钥进行解密,比对二者的不同。此处的数字签名就是上文的数据指纹,它既可以防止被篡改,也可以保证数据的来源。
此时,安全性已经相对较高了,但是还有一个漏洞,如果有人假冒A,发送虚假的公钥,让B以为是A的公钥,这将又产生新的安全问题。这就需要对公钥进行一个规范的管理,让B可以通过公钥辨别是否为正确的来源,由此引进了身份认证技术中的关键点–证书。
PKI体系
PKI(公开密钥体系,Public Key Infrastructure)是一种遵循标准,利用公钥理论和技术建立的提供安全服务的基础设置。用户可以利用PKI平台提供的服务进行安全的互联网相关的活动。
PKI采用证书管理公钥,通过第三方的可信任机构–CA认证中心,把用户的公钥和用户的其它标识信息捆绑在一起放在用户证书中,在互联网上验证用户的身份。主流方案是采用建立在PKI基础之上的数字证书,通过把要传输的数字信息进行加密和签名,从而保证信息的安全传输。
PKI体系的组成
PKI是创建、办法、管理、注销公钥证书所涉及到的所有软硬件的集合体,核心是数字证书,核心执行者是CA认证机构。
CA中心
CA中心的作用:签发证书、规定证书的有效期和废除证书,以及对证书和密钥进行管理。
CA中心为每个公开密钥的用户发放一个数字证书,数字证书的作用是证明公钥的合法性。
CA中心也有自己的公钥和私钥,对证书进行数字签名使得攻击者不能伪造和篡改证书。
数字证书概述
互联网通讯中标志通讯各方身份信息的一系列数据,它由CA 机构中心发行,用来识别对方的身份,数字证书一般包含:用户身份信息、用户公钥信息和身份验证机构数字签名的数据。
从证书的用途上看,数字证书可分为签名证书和加密证书。
签名证书:主要用于对用户信息进行签名,以保证信息的真实性和不可否认性。
加密证书:主要用于对用户传送的信息进行加密,以保证信息的机密性和完整性。
根证书:根证书是CA认证中心给自己颁发的证书,是信任链的起始点。根证书的签发者是它本身,下载根证书表示对该根证书以下所签发的证书都表示信任。
用户证书:由CA中心签发的个人证书,用于识别、鉴定终端用户,可存于UKEY等介质。
设备证书:也称服务器证书,该证书将安装在服务端,向尝试连接的客户端提供服务器身份、证书和公钥信息。
具体流程
GRE
IPSec VPN
传统的安全技术(如https)以及无线安全技术(如web/wpa),往往采用固定的加密和散列函数。当这些固定的加密算法或散列函数存在重大漏洞时,依赖于这些加密算法或散列函数的技术也会被淘汰。
IPSec提供了一个框架式架构,每次对接使用到的加密算法、散列函数、封装协议、密钥等等都是通过协商决定,当某个加密算法出现问题时,可以及时切换。
IPSec协议簇安全框架
几个概念:
IPSec对等体:建立起的隧道的两端。
安全联盟:可以简单理解为VPN隧道,建立起来sa就是建立起来隧道。
预共享密钥psk:类似于一种通信暗号。
IPSec通信安全协议
IPSec的安全特性是由安全协议提供的,使用这些安全特性时需要用到密钥,由IKE协议簇提供。IPSec VPN通信安全协议包括AH协议和ESP协议。
ESP安全协议
ESP(Encapsulation Security Payload封装安全负载)它的对象是用户数据。对用户数据进行封装,提供数据保密性、数据完整性、数据源认证等服务,使用IP协议号是50,可用于隧道模式和传输模式。
序列号的作用是防止重放,当有相同序列号重放到达时,舍弃该数据。
SPI的作用用于寻找密钥。
认证数据用于存放数据的hash散列值。分为ESP头和ESP尾,其中尾部又分为ESP tail 和 认证数据,tail主要是填充字段部分,因为某些加密算法有加密数据固定长度或最小长度的要求。
AH安全协议
AH(Authentication Header认证头)它的对象是业务数据。对业务数据进行封装,使用MD5/SHA-1,只提供数据完整性、数据源认证和防报文重放等服务,不对数据加密,使用IP协议号是51,可用于隧道模式和传输模式。
IPSec通过AH和ESP这两个安全协议来实现数据报文在网络上传输时的私有性、完整性、真实性和防重放。
传输模式
即封装模式,标识数据包进入隧道的模式。分为传输模式和隧道模式。
传输模式
在传输模式下,IPSec头被插入到IP头之后但在所有传输层协议之前,或所有其它IPSec协议之前。
传输模式示意图:
传输模式一般用在隧道是自己直接使用的,不能传入局域网IP,例如防火墙间通信等,本身就能ping通,用IPSec的原因只是想要引入IPSec一系列安全保护功能。
隧道模式
在隧道模式下,IPSec头插在原始IP头之前,另外生成一个新的报文头放到AH或ESP之前。
隧道模式示意图:
认证范围是指根据多长数据计算散列值存在协议尾部认证数据字段处。
这里的ESP Tail就是上文所说的填充字段,保证数据能够满足加密长度要求被正确加密。
由于AH协议的认证范围是全部,当穿过NAT时,会对New IP Header做地址转换,这使得到对端后,hash比对不同。因此AH加密协议的数据不同穿过NAT。ESP由于认证范围不包括New IP Header,因此不存在这种问题。
由此可以看出,AH协议既不能加密,又不能穿越NAT,目前使用较少。
隧道模式从端到端,传输模式从点到点。二者的区别在于会不会引入新的IP头,并且隧道模式由于创建新封装的原因,会稍微多消耗一些带宽。
IKE(密钥交换管理协议簇)
IKE(Internet Key Exchange)它的对象是密钥。为IPSec提供了自动协商密钥、建立安全联盟。通过数据交换来计算密钥。包括Skeme协议、Oakley协议和Isakmp协议。
SKEME协议
主要功能为计算密钥。内部封装了DH算法,可通过DH算法创建独一无二的密钥。
Oakley协议
内部封装了各种加密算法和散列算法技术,
ISAKMP协议
实现消息交换(密钥交换)。
安全联盟SA
用IPSec保护一个数据包之前,必须先建立一个安全联盟SA,可以手工创建或动态建立。
安全联盟是要建立IPSec隧道的通信双方对隧道参数的约定,包括隧道两端的IP地址,隧道采用的验证方式(AH还是ESP)、验证算法、验证密钥、加密算法、加密密钥、共享密钥以及生存周期等一些列的参数,从而决定了保护什么、如何保护以及谁来保护。IPSec对等体之间通过IPSec安全传输数据的前提是在对等体之间成功建立SA。
安全联盟是单向的,两个对等体之间的双向通信,至少需要两个SA。
SA由三元组来唯一标识,包括:安全参数索引号(SPI用来唯一标识SA,一个32bit数值)、目的IP地址、安全协议号(AH-51,ESP-50)。
建立SA的方式:
手工方式:SA所需的全部信息都必须手工配置,比较复杂,适合对等体较少或小型静态环境。
IKE动态协商方式:只需要对等体间配置好IKE协商参数,由IKE自动协商来创建和维护SA。
IKE建立在Internet安全联盟和密钥管理协议ISAKMP定义的框架上,是基于UDP的应用层协议。它为IPSec提供自动协商密钥、建立IPSec安全联盟的服务,能够简化IPSec的配置和维护工作,根本目的是建立起隧道,即IPSec sa。简单说,就是建立隧道之前,需要协商一下隧道的参数是怎么样的。
分为IKEv1、IKEv2,后者比前者效率高。相对简单,适合中、大型的动态网络环境中。
IKEv1第一阶段
分为主模式和野蛮模式,目的是建立起IKEsa,作用是预先交换参数信息,对建立IPSec sa有保护作用。
主模式/PSK认证:
IKE HEADER即IKE头部,包括发起者cookie和应答者cookie(相当于ID号的作用)。
包1和包2
这两个包为协商参数的过程。
ISAKMP SA PROPOSAL的作用为与对端协商,询问某加密算法、哈希算法、身份认证算法以及DH组(用来生成密钥,不同组密钥长度不同)是否可以。
包3和包4
DH算法:
对称加密通过DH算法生成密钥,用于在一个不安全的环境,生成安全的密钥。DH组数越高,位数越多,一般组数为2时,位数为1048位。
所以,3包和4号协商过程中的,DHKEY EXCHANGE表示的就是X和Y的交换过程。Ni和Nr可以看成一个时间戳随机数,起到对X和Y的加密的作用。
交换后,两边各自开始计算密钥。计算的密钥一般为四种:
种子密钥SKEYID:PRF(psk, Ni|Nr) PRF是一个伪随机功能的哈希函数。
SKEYID_d:PRF(SKEYID, g^ir|CKY-i|CKY-r) gir为前文提到的两端计算出来的Z。CKY-i/CKY-r是两端的cookie值。此密钥用于计算最终密钥的素材。
SKEYID_a:PRF(SKEYID, SKEYID_d|g^ir|CKY-i|CKY-r) 用于第二阶段哈希的密钥。
SKEYID_e:PRF(SKEYID, SKEYID_a|g^ir|CKY-i|CKY-r) 用于加密第一阶段第五、第六个包,以及第二阶段的三个包。
由此可以看出,3包4包阶段主要用于交换密钥素材,并且计算相应密钥。
包5和包6
此阶段进行双方的身份验证。IDii/IDir在主模式下为双端IP地址。
HASH_I/HASH_R为双方用于身份验证的哈希值。
可用psk进行身份验证,表现为HASH_R + PSK = HASH_I。当此公式成立时,表示双端种子密钥相同,进而表示双端PSK相同,身份验证完毕,IKESA建立完成。
IKEv1第二阶段
只有快速模式,在第一阶段提供的环境的基础之上,建立起IPSec sa,即IPSec通信隧道。
如果IPSec sa时交通载具时,IKESA为制作载具的车间,能使制作交通载具的过程被保护。IKESA是为IPSec sa服务的,为IPSec提供了自动协商密钥、建立IPSec sa的服务。
紧紧跟随第一阶段,第二阶段进入快速模式,第二阶段的工作流程:
HDR*表示后面的数据被加密。
HASH(1)表示对数据进行完整性校验,通过第一阶段计算出来的密钥进行哈希。
SA表示IPsec SA提议(内部包括:如何保护业务数据、数据封装模式、安全协议、加密算法、哈希算法等)。
KE可选:表示新增加一次DH交换。
IDi2|Idr2:表示感兴趣流,对哪些流量做加密,通过此方式匹配出来,匹配方式某些设备上需要互为镜像。
HASH(3)起到ACK应答的作用。
如此,IPSec sa建立完成,即表示IPSec隧道建立完成。
IPSec VPN实际配置
配置流程如图所示:
配置主机、网关和防火墙的接口IP,以及防火墙的安全区域。
配置公网的静态路由,是流量能通过。
ip route 1.1.1.1 32 2.2.2.254
配置IKE PROPOSAL,内容有加密算法、认证算法、认证方式(PSK)以及DH组。
ike proposal 1 dh group2 authentication-algorithm md5 authentication-method pre-share integrity-algorithm hmac-sha2-256 prf hmac-sha2-256
配置IKE peer,包括ipsec版本、对端ip地址、交换模式(主模式、野蛮模式)、IKE PROPOSAL和预共享密钥。
ike peer fw1 undo version 2 # 默认是2,撤销即为1 pre-shared-key balabalabalaba ike-proposal 1 remote-address 2.2.2.2 # 这里穿越NAT时有所不同
配置IPSEC PROPOSAL,包括封装模式、安全协议、ESP加密算法和ESP认证算法。
ipsec proposal 2 esp authentication-algorithm sha2-256 esp encryption-algorithm aes-256
配置感兴趣流ACL,指明哪些流量需要送入隧道。某些防火墙感兴趣流要互为镜像。原因是老版本IKE协商时不协商ACL,IDi2和IDr2是ACL的哈希值,不可逆,两边无法知道对端的感兴趣流,所以必须配置镜像。现在部分厂商讲IDi2和IDr2存入明文,解决此问题。
acl number 3000 rule 5 permit ip source 10.1.1.0 0.0.0.255 destination 192.168.1.0 0.0.0.255
配置IPSec 策略,调用感兴趣流、对等体和ipsec侧策略。
ipsec policy tech 5 isakmp security acl 3000 ike-peer fw2 proposal 2
配置接口调用IPSec策略。注意接口是建隧道的接口,是公网接口不是私网接口。
interface ethernet 1/0/0 ipsec policy tech
引流路由。让凡是走防火墙去对端私网的流量,从1/0/0接口处走,不是其它接口,以查找IPSec策略,进而进行IPSec协商。
接口模式配置下:
ip route-static 192.168.1.0 24 1.1.1.254
表示去往192.168.1.0的流量从1/0/0接口走,这里最好配置下一跳,原因有待查找。
display IKE SA
ipsec对等体通信基于端口号为500的udp协议进行,当然如果穿越NAT设备,IP和端口有可能发生变化。如果隧道穿越NAT设备,两端通信则是基于端口好为4500的udp协议进行,4500是一个标志,用来区分是否穿越NAT设备以进行IPSec适配。
RD表示隧道成功建立,ST表示本设备就是隧道的发起者,A表示单机建立的隧道的意思。
Conn-ID 1表示IKE SA,2表示IPSec SA。
实际上内部建立了两条隧道,不同方向分别有一条隧道。两条隧道的SPI和密钥是不同的,出对入。
同网段下,新添加设备,更改ACL的情况下,重新建隧道不使用主模式,复用旧隧道。基于此情况,虽然是不同的IPSec SA,但是加密密钥都是由相同的_d密钥推算出来,一条隧道的泄漏容易导致另一条泄漏。KE值可以解决这个问题,让数据通信时额外再做一次DH计算,生成DH公开值,pfs用来选择DH额外计算的算法,称作完美保密。
刚开始建立时,一层一层查找,通过接口找策略(VPN的报文出去的时候不用看策略,因此不需要配置本地数据出去的策略),通过策略找感兴趣流、sa等等,进行协商。之后直接查找本地VPN,有的情况下看是否命中感兴趣流。
可以针对某些情况,做完全针对化部署,更加安全。
IPSec VPN野蛮模式
野蛮模式把主模式的数据合到一起,分成三个报文发送出去,因此野蛮模式效率更高。但是主模式ID是加密的,野蛮模式ID是不加密的,主模式更加安全。主模式的ID只能是IP,野蛮模式ID类型支持IP、DN等,因此野蛮模式适用于动态IP场景。
第一个报文和第二个报文不加密,第三个报文加密。
为什么野蛮模式ID支持放域名等其它信息?
主模式通过IKE报文的网络层源IP来找参数,而野蛮模式是通过IKE报文的ID载荷来找参数的。
数据过来后,本端根据网络层的源IP来匹配IKE peer参数中的remote-address地址,进而命中里面所有的策略。如果对端地址发生变化,本段找不到IKE peer,则无法完成协商,因此主模式不支持动态IP。当然也可以实现,将remote-address配置成any也可以实现动态IP。
NAT-T
首先,AH协议数据不可能穿越NAT。
ESP协议数据也有可能在传输模式下穿越不了。由于穿越NAT后,IP头的源IP可能发生变化,到对端TCP的checksum值校验不过。传输层以下的数据可以正常穿到对端,例如ICMP。
ESP在隧道模式下,生成新的IP头,此时穿越NAT由于端口和IP都会发生变化,原始数据没有存放端口的头部,所以也不能穿越NAT。此时,在IKE协商阶段,会协商随单是否穿越NAT,根据结构选择开启NAT-T功能,原理是在IP头部后加一个UDP头部(端口号4500),用来表示改变后的端口。
此时,配置FW2的remote-address时,需要配置2.254,否则找不到IKE peer。1包2包开始协商是否穿越NAT,由于5包6包要匹配IP,所以FW2也需要特别指定FW1的IP。
remote-address 2.2.2.254 remote-addresss authentication-address 1.1.1.1
NAT-T功能是默认开启的。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8442.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~