vpn

稚 发布于 2024-08-26 29 次阅读


VPN技术的基本原理是利用隧道(Tunnel)技术,对传输报文进行封装,利用VPN骨干网建立专用数据传输通道,实现报文的安全传输。


身份认证、数据加密和认证技术可以有效保证VPN网络与数据的安全性:
身份认证:可用于部署了远程接入VPN的场景,VPN网关对用户的身份进行认证,保证接入网络的都是合法用户而非恶意用户。也可以用于VPN网关之间对对方身份的认证。
数据加密:将明文通过加密变成密文,使得数据即使被黑客截获,黑客也无法获取其中的信息。
数据验证:通过数据验证技术对报文的完整性和真伪进行检查,丢弃被伪造和被篡改的报文。

VPN 用户身份认证 数据加密和验证 备注
GRE 不支持 支持简单的关键字验证、检验和验证 可以结合IPSec使用,利用IPSec的数据加密和验证特性。
L2TP 支持基于PPP的CHAP、PAP、EAP认证 不支持
IPSec 支持 支持 支持预共享秘钥验证或证书认证;支持IKEv2的EAP认证。
SSL 支持 支持 支持用户名/密码或证书认证。
MPLS 不支持 不支持 一般运行在专用的VPN骨干网络。

GRE

为了使某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的报文能够在IPv4网络中传输,可以将某些网络层协议的报文进行封装,以此解决了异种网络的传输问题。
GRE构成要素分为3个部分:乘客协议、封装协议和运输协议。
乘客协议是指用户在传输数据时所使用的原始网络协议。
封装协议的作用就是用来“包装”乘客协议对应的报文,使原始报文能够在新的网络中传输。
运输协议是指被封装以后的报文在新网络中传输时所使用的网络协议

IPSEC

它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合,包括认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两个安全协议、密钥交换和用于验证及加密的一些算法等。
作用:

  • 数据来源验证:接收方验证发送方身份是否合法。
  • 数据加密:发送方对数据进行加密,以密文的形式在Internet上传送,接收方对接收的加密数据进行解密后处理或直接转发。
  • 数据完整性:接收方对接收的数据进行验证,以判定报文是否被篡改。
  • 抗重放:接收方拒绝旧的或重复的数据包,防止恶意用户通过重复发送捕获到的数据包所进行的攻击。

IPSec通过在IPSec对等体间建立双向安全联盟形成一个安全互通的IPSec隧道,并通过定义IPSec保护的数据流将要保护的数据引入该IPSec隧道,然后对流经IPSec隧道的数据通过安全协议进行加密和验证,进而实现在Internet上安全传输指定的数据。

IPSec安全联盟可以手工建立,也可以通过IKEv1或IKEv2协议自动协商建立。

安全联盟

安全联盟SA(Security Association)是通信对等体间对某些要素的协定,它描述了对等体间如何利用安全服务(例如加密)进行安全的通信。这些要素包括对等体间使用何种安全协议、需要保护的数据流特征、对等体间传输的数据的封装模式、协议采用的加密和验证算法,以及用于数据安全转换、传输的密钥和SA的生存周期等。

安全协议

IPSec使用认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两种IP传输层协议来提供认证或加密等安全服务。

  • AH协议
    AH仅支持认证功能,不支持加密功能。AH在每一个数据包的标准IP报头后面添加一个AH报文头
  • ESP协议
    ESP支持认证和加密功能。
安全特性 AH ESP
协议号 51 50
数据完整性校验 支持(验证整个IP报文) 支持(传输模式:不验证IP头,隧道模式:验证整个IP报文)
数据源验证 支持 支持
数据加密 不支持 支持
防报文重放攻击 支持 支持
IPSec NAT-T(NAT穿越) 不支持 支持

封装模式

封装模式是指将AH或ESP相关的字段插入到原始IP报文中,以实现对报文的认证和加密,封装模式有传输模式和隧道模式两种。
传输模式
在传输模式中,AH头或ESP头被插入到IP头与传输层协议头之间

隧道模式
在隧道模式下,AH头或ESP头被插到原始IP头之前,另外生成一个新的报文头放到AH头或ESP头之前,保护IP头和负载

传输模式和隧道模式的区别在于:

  • 从安全性来讲,隧道模式优于传输模式。它可以完全地对原始IP数据包进行验证和加密。隧道模式下可以隐藏内部IP地址,协议类型和端口。

  • 从性能来讲,隧道模式因为有一个额外的IP头,所以它将比传输模式占用更多带宽。

  • 从场景来讲,传输模式主要应用于两台主机或一台主机和一台VPN网关之间通信;隧道模式主要应用于两台VPN网关之间或一台主机与一台VPN网关之间的通信。
    当安全协议同时采用AH和ESP时,AH和ESP协议必须采用相同的封装模式。

加密和验证

IPSec提供了两种安全机制:加密和验证。加密机制保证数据的机密性,防止数据在传输过程中被窃听;验证机制能保证数据真实可靠,防止数据在传输过程中被仿冒和篡改。

配置

  1. 定义IPSec保护的数据流
    IPSec能够对一个或多个数据流进行安全保护,ACL方式建立IPSec隧道采用ACL来指定需要IPSec保护的数据流。实际应用中,首先需要通过配置ACL的规则定义数据流范围,然后在IPSec安全策略中引用该ACL,从而起到保护该数据流的作用。一个IPSec安全策略中只能引用一个ACL,因此:
  • 若不同的数据流有不同的安全要求,则需要创建不同的ACL和相应的IPSec安全策略。

  • 若不同的数据流的安全要求相同,则可以在一条ACL中配置多条rule来保护不同的数据流。

  1. 配置IPSec安全提议
1. 执行命令**system-view**,进入系统视图。
2. 执行命令**ipsec proposal** _proposal-name_,创建IPSec安全提议并进入IPSec安全提议视图。
3. 执行命令**transform** { **ah** | **esp** | **ah-esp** },配置安全协议。

    缺省情况下,IPSec安全提议采用ESP协议。

4. 配置安全协议的认证/加密算法。

    - 安全协议采用AH协议时,AH协议只能对报文进行认证,只能配置AH协议的认证算法。

        执行命令**ah authentication-algorithm** { **md5** | **sha1** | **sha2-256** | **sha2-384** | **sha2-512** | **sm3** },配置AH协议使用的认证算法。

        缺省情况下,AH协议使用的认证算法为SHA2-256。

    - 安全协议采用ESP协议时,ESP协议允许对报文同时进行加密和认证,或只加密,或只认证,根据需要配置ESP协议的认证算法、加密算法。

        - 执行命令**esp authentication-algorithm** { **md5** | **sha1** | **sha2-256** | **sha2-384** | **sha2-512** | **sm3** },配置ESP协议使用的认证算法。

            缺省情况下,ESP协议使用的认证算法为SHA2-256。

        - 执行命令**esp encryption-algorithm** { **3des** | **des** | **aes-128** | **aes-192** | **aes-256** | **sm1** | **sm4** },配置ESP协议使用的加密算法。

            缺省情况下,ESP协议使用的加密算法AES-256。

    - 安全协议同时采用AH和ESP协议时,允许AH协议认证、ESP协议对报文进行加密和认证,AH协议的认证算法、ESP协议的认证算法和加密算法均可选择配置。此时设备先对报文进行ESP封装,再进行AH封装。
5. 执行命令**encapsulation-mode** { **transport** | **tunnel** },选择安全协议对数据的封装模式。

缺省情况下,安全协议对数据的封装模式采用隧道模式。

IKE对等体采用IKEv2版本协议时,IKE协商发起方配置的所有IPSec安全提议的报文封装模式必须一致,否则会导致IKE协商失败。

6. 执行命令**quit**,退出IPSec安全提议视图。
  1. 配置安全策略
1. 执行命令**system-view**,进入系统视图。
2. 执行命令**ipsec policy** _policy-name_ _seq-number_ **manual**,创建手工方式IPSec安全策略,并进入手工方式IPSec安全策略视图。

    缺省情况下,系统不存在IPSec安全策略。

3. 执行命令**security acl** _acl-number_,在IPSec安全策略中引用ACL。

    缺省情况下,IPSec安全策略没有引用ACL。

    _acl-number_是一个已创建的高级ACL。

    一个IPSec安全策略只能引用一个ACL,引用新的ACL时必须先删除原有引用。

4. 执行命令**proposal** _proposal-name_,在IPSec安全策略中引用IPSec安全提议。

    缺省情况下,没有指定IPSec安全策略所引用的IPSec安全提议。

    _proposal-name_是一个已创建的IPSec安全提议。

    一个IPSec安全策略只能引用一个IPSec安全提议,引用新的IPSec安全提议必须先删除原有引用。

5. 配置IPSec隧道的起点和终点。

    1. 执行命令**tunnel local** _ip-address_,配置IPSec隧道的本端地址。

    2. 执行命令**tunnel remote** _ip-address_,配置IPSec隧道的对端地址。

    缺省情况下,系统没有配置IPSec隧道的本地地址和对端地址。

    本端配置IPSec隧道的对端地址与对端配置IPSec隧道的本端地址应保持一致。

6. 配置出/入方向SA的SPI值。

    1. 执行命令**sa spi** **outbound** { **ah** | **esp** } _spi-number_,配置出方向SA的SPI。

    2. 执行命令**sa spi** **inbound** { **ah** | **esp** } _spi-number_,配置入方向SA的SPI。

    **sa spi**命令选择的安全协议必须与配置IPSec安全提议中**transform**命令配置的安全协议一致。如果在**transform**命令中配置的安全协议为**ah-esp**,则必须同时配置**ah**和**esp**两种安全协议的出/入方向SA的SPI。

    为保证SA的唯一性,出/入方向SA的SPI值不能设置成相同值,即不同的SA必须对应于不同的SPI。
7. 配置出/入方向SA的认证密钥和加密密钥

安全协议采用AH协议时,配置认证密钥。

执行命令sa string-key { inbound | outbound } ah { simple | cipher } string-key,配置AH协议的认证密钥(以字符串方式输入)。

执行命令sa authentication-hex { inbound | outbound } ah { simple | cipher } hex-string,配置AH协议的认证密钥(以16进制方式输入)。

安全协议采用ESP协议时,配置ESP协议的认证密钥。

执行命令sa string-key { inbound | outbound } esp { simple | cipher } string-key,配置ESP协议的认证密钥(以字符串方式输入)。

安全协议采用ESP协议时,配置ESP协议的认证密钥和加密密钥。

执行命令sa authentication-hex { inbound | outbound } esp { simple | cipher } hex-string,配置ESP协议的认证密钥(以16进制方式输入)。

执行命令sa encryption-hex { inbound | outbound } esp { simple | cipher } hex-string,配置ESP协议的加密密钥(以16进制方式输入)。

L2TP

L2TP是虚拟私有拨号网VPDN(Virtual Private Dial-up Network)隧道协议的一种,它扩展了点到点协议PPP的应用,是一种在远程办公场景中为出差员工或企业分支远程访问企业内网资源提供接入服务的VPN

L2TP协议包含两种类型的消息,控制消息和数据消息,消息的传输在LAC和LNS之间进行。

▫控制消息用于L2TP隧道和会话连接的建立、维护和拆除。

▫数据消息用于封装PPP数据帧并在隧道上传输。

IPSec VPN:是一系列为IP网络提供安全性的协议和服务的集合,为IP网络提供安全的传输。
GRE VPN:提供了将一种协议的报文封装在另一种协议报文中的机制,解决异种网络的传输问题。
L2TP VPN:是一种能够提供移动用户远程接入服务的二层VPN技术。
MPLS VPN:一种通过标签交换技术,实现站点与站点之间互联的VPN技术。