关键词:VPN;网络;IPSec;隧道;IKE;安全联盟
1 IPSec VPN 的基本原理
VPN(Virtual Private Network,虚拟专用网)的核心思想是通过数据加密、认证等技术为公共网络上的通信流量提供类似专用网络一样的安全性保障,以避免数据在传递的过程中遭受恶意攻击者的窃听甚至篡改[1]。
在网络中存在多种可以用来建立安全隧道的VPN技术,其中,IPSec(Internet Protocol Security) 以其简单、可靠的特性得到了非常广泛的应用。作为一种工作在网络层的VPN技术,IPSec定义了一个安全框架,并在该框架中引入开放的加密、认证算法等来为上层应用数据提供保护,实现网络端点之间的安全通信[2],这些网络端点被称为IPSec的对等体(Peer) 。
1.1 IPSec 封装协议
IPSec有两种不同的安全封装协议,分别是认证头(Authentication Header,AH) 协议和封装安全载荷(Encapsulating Security Payload,ESP) 协议[3]。
1) AH协议。AH协议的主要应用场景为非机密数据的传输,它通过引入HMAC-SHA1、HMAC-MD5 等认证算法来对数据的完整性进行校验,以保护数据在网络通信的过程中不被恶意攻击者所篡改,但它不能对数据进行加密。AH协议的IP协议号为51。
2) ESP协议。ESP协议的主要应用场景为机密数据的传输,它在引入HMAC-SHA1、HMAC-MD5等认证算法来对数据的完整性进行校验的同时,还引入DES、3DES和AES等加密算法对数据进行加密,来确保数据在传递过程中的机密性[4]。ESP协议的IP协议号为50。
和AH协议相比,ESP协议优点是可以提供数据的加密,但ESP协议的数据验证功能相对较弱。因此在实际网络通信中可以选择单独使用其中一种协议,也可以选择同时使用这两种协议。如果在IPSec中同时使用了AH协议和ESP协议,则会首先基于ESP协议对数据进行加密,然后再对加密后的数据基于AH 协议进行完整性校验。具体的报文结构从外向内的封装顺序为“新IP报头—AH报头—ESP报头—原始的IP报文”,具体如图1所示。
1.2 IPSec 安全联盟
安全联盟(Security Association,SA) 是通信双方就如何保证通信的安全达成的一个协定,它描述了对等体将如何使用IPSec安全服务来保护网络流量[5]。包括使用ESP还是AH协议进行数据封装、封装模式是隧道模式还是传输模式、使用哪一种加密算法、使用哪一种散列算法等。在进行安全通信之前,首先必须要在对等体之间建立SA。
SA是单向的,SA在两个关联的peer之间建立一个单向的逻辑上的session,因此在两个peer之间如果要建立双向的逻辑通信,就需要两个SA来分别对两个方向上的数据流进行安全保护。另外,SA还是协议相关的,AH协议和ESP协议都需要建立自己单独的SA。如果两个对等体之间同时使用AH协议和ESP 协议进行安全通信,则需要建立四个SA来分别对两个协议的两个方向上的数据流进行安全保护。
SA由一个三元组(SPI、目的IP地址,安全协议标识符)来唯一标识。其中,SPI是一个32位的数值,用于唯一标识一个SA;目的IP地址即为对端对等体的IP地址;安全协议标识符则指定了封装协议,如AH或ESP。
在IPSec 设备中,存在安全策略数据库(SecurityPolicy Database,SPD) 和安全联盟数据库(Security As⁃sociation Database,SAD) 。SPD中存储着设备上已经配置的安全策略,这些策略的内容包括确定哪些数据需要安全服务,以及所使用的封装协议、封装模式、加密算法、散列算法等。而在SAD中,则存储着设备上当前处于活跃状态的所有。在IPSec设备上,对于出站数据报文首先将其与SPD中的安全策略相比较,如果匹配了其中的一项安全策略,则系统就会使用该项安全策略在SAD中对应的SA对数据报文进行加密认证等处理,如果在SAD中不存在相对应的SA,则需要首先建立一个SA。SA一般建议使用IKE协议通过自动协商的方式进行建立。
1.3 IKE 协议
IKE(Internet Key Exchange,因特网密钥交换)协议是一个混合型协议,它采用了互联网安全联盟和密钥管理协议(Internet Security Association and Key Man⁃agement Protocol,ISAKMP) 所定义的密钥交换框架体系,在应用层工作,在传输层基于UDP协议来实现,端口号为500。IKE与IPSec之间的关系如图2所示。
IKE是IPSec的信令协议,为IPSec提供对等体身份认证、自动协商交换密钥以及建立IPSec的SA的服务,并把建立的参数以及生成的密钥交给IPSec;IPSec 则使用IKE 建立的SA 为IP 报文进行加密或认证处理[6]。
IKE通过一套两个阶段的自保护机制来实现在不安全的公共网络上进行安全的IPSec SA的协商。
1) 建立ISAKMP SA。
第一个阶段主要是协商建立一个ISAKMP SA,该SA的目的是用来保护第二阶段的协商过程。第一个阶段协商有两种不同的模式,分别为主模式(MainMode) 和野蛮模式(Aggressive Mode) [7]。
在主模式下,ISAKMP SA建立过程的协商需要使用六条消息。这六条消息分成三对具体协商内容如下:第一对消息称为SA交换消息,用来协商确认第一阶段的安全策略。协商的内容包括散列算法、加密算法、身份认证方式、D-H组和SA的生存周期等5个元素。
第二对消息称为密钥交换消息,用来交换D-H的公开参数和辅助数据,并由对等体分别独立计算出共同的秘密K。后续所有的加密和散列使用的密钥都由K衍生而来。
第三对消息是ID信息和认证数据交换信息,对等体互相进行身份认证并对整个第一阶段交换的内容进行认证。
野蛮模式只交换三条信息来进行第一阶段的协商,因此野蛮模式可以提高协商的速度,但是野蛮模式不能提供对对等体身份的保护,一般用于对身份保护要求不高的场合[8]。
2) 建立IPSec SA。
第二个阶段的协商在第一个阶段建立的ISAKMP SA保护下进行,主要是协商建立一个IPSecSA来保护网络中传输的业务数据。第二阶段的协商需要使用三条消息,主要协商内容包括:使用的IPSec 封装协议;相应封装协议使用的加密和认证算法;需要保护的网络流量;IPSec封装模式;密钥生存周期等信息[9]。
2 IPSec VPN 实验环境设计
2.1 IPSec VPN 实验拓扑结构设计
在进行实验拓扑结构设计时,需要考虑以下几点:
1) 在实际企业网络中,IPSec对等体之间只要路由可达即可,往往会有较长的逻辑距离。而在实验拓扑结构设计中则建议采用对等体之间直连的方式来实现,以简化网络结构,使其更容易被学生理解。
2) 由于在实验环境中需要对IPSec VPN的SA建立过程以及后续通信过程进行分析,因此在对等体之间要插入一台交换机并进行端口镜像的配置,将IP⁃Sec VPN的流量镜像到交换机的观察端口上,并由连接其上的PC进行IPSec VPN封装数据报文的捕获和分析。
3) 实验环境中的IP 地址均来自10.0.0.0/8 和192.168.0.0/16私有地址网段,以避免产生地址的重叠和误用。
按照要求,设计实验拓扑结构如图3所示。
2.2 IPSec VPN 实验配置
按照图3所示,分别为两台路由器和三台PC配置IP地址,并在交换机SWA上配置端口镜像,将连接两台路由器的端口G0/0/1和G0/0/2上的出入站流量均镜像到观察端口G0/0/24 上,使连接在G0/0/24 上的PC3能够捕获IPSec VPN的数据报文。由于实验环境设计相对简单,因此在IP地址配置完成后,PC1和PC2 所在的网段之间就具备了连通性,此时即可进行IP⁃Sec VPN的配置。
在此实验中要求通过在路由器RTA和RTB上配置IPSec VPN 来保护192.168.1.1/24 和192.168.2.0/24 两个网段之间的通信流量,其中对等体的身份认证采用预共享密钥的方式,预共享密钥为huawei。第一阶段协商采用的加密算法为aes-128,散列算法为sha2-256,D-H算法为group14;第二阶段协商采用的加密算法为aes-192,散列算法为sha2-256。
路由器RTB的配置与RTA类似,需要注意的是其ACL的配置应与RTA上的ACL相对称。
2.3 IPSec VPN 实验结果测试
配置完成后,在PC1上使用PING命令测试与PC2 之间的连通性,同时分别在三台PC上使用Wireshark 软件捕获数据报文。在PC1和PC2上捕获的数据报文均为ICMP的明文,而在PC3上捕获的数据报文中,则可以看到通过IKE 协议进行ISAKMP SA 和IPSecSA协商的数据报文,以及使用第二阶段默认的安全协议ESP进行封装的PC1和PC2之间的通信数据。具体如图4所示。
由图4可以看到,在ESP封装的数据报文中,源IP 地址和目的IP地址分别是两端对等体(路由器)的IP 地址,而不是终端主机PC1和PC2的IP地址。
在路由器RTA 上通过display ipsec sa 命令查看IPSec VPN的安全联盟,部分结果显示如下:
SA remaining key duration (kilobytes/sec): 1843200/2918
从显示结果可以看到基于ESP协议建立的SA的SPI 以及协商的IKE Proposal,其中SA 包括Outbound 和Inbound两个方向,也验证了SA的单向属性。
3 结束语
作为在企业网络中常用的一种VPN技术,IPSecVPN技术在站到站、端到端以及端到站的网络场景中均有非常广泛的应用。它通过加密、认证等技术保障了数据在公共网络上进行传输时的机密性、完整性,并提供了收发双方身份认证的功能,实现了网络数据的安全传输。作为教师,有必要通过搭建简单、合理、可验证的实验环境帮助学生学习IPSec VPN的实现原理和配置方法,使其对IPSec VPN相关的知识和应用有更加深入的理解。