IPSec简介

IPSec(Internet Protocol Security)是IETF(Internet Engineering Task Force)制定的一组开放的网络安全协议。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合

华为防火墙IPSec网络安全协议_华为防火墙

IPSec通过验证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两个安全协议实现IP报文的安全保护

  • AH是报文头验证协议,主要提供数据源验证、数据完整性验证和防报文重放功能,不提供加密功能。
  • ESP是封装安全载荷协议,主要提供加密、数据源验证、数据完整性验证和防报文重放功能。

AH和ESP协议提供的安全功能依赖于协议采用的验证、加密算法


IPSec通过加密与验证等方式,从以下几个方面保障了用户业务数据在Internet中的安全传输:

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


安全联盟

SA由一个三元组来唯一标识,这个三元组包括安全参数索引SPI(Security Parameter Index)、目的IP地址和使用的安全协议号(AH或ESP)。其中,SPI是为唯一标识SA而生成的一个32位比特的数值,它在AH和ESP头中传输。在手工配置SA时,需要手工指定SPI的取值。使用IKE协商产生SA时,SPI将随机生成。

SA是单向的逻辑连接,因此两个IPSec对等体之间的双向通信,最少需要建立两个SA来分别对两个方向的数据流进行安全保护。如图1所示,为了在对等体A和对等体B之间建立IPSec隧道,需要建立两个安全联盟,其中,SA1规定了从对等体A发送到对等体B的数据采取的保护方式,SA2规定了从对等体B发送到对等体A的数据采取的保护方式。

华为防火墙IPSec网络安全协议_华为防火墙_02

另外,SA的个数还与安全协议相关。如果只使用AH或ESP来保护两个对等体之间的流量,则对等体之间就有两个SA,每个方向上一个。如果对等体同时使用了AH和ESP,那么对等体之间就需要四个SA,每个方向上两个,分别对应AH和ESP。

有两种方式建立IPSec安全联盟:手工方式和IKE自动协商方式。二者的主要区别为:

  • 密钥生成方式不同
    手工方式下,建立SA所需的全部参数,包括加密、验证密钥,都需要用户手工配置,也只能手工刷新,在中大型网络中,这种方式的密钥管理成本很高;IKE方式下,建立SA需要的加密、验证密钥是通过DH算法生成的,可以动态刷新,因而密钥管理成本低,且安全性较高。
  • 生存周期不同
    手工方式建立的SA,一经建立永久存在;IKE方式建立的SA,其生存周期由双方配置的生存周期参数控制。


安全协议

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


  • AH协议AH仅支持认证功能,不支持加密功能。AH在每一个数据包的标准IP报头后面添加一个AH报文头,如封装模式所示。AH对数据包和认证密钥进行Hash计算,接收方收到带有计算结果的数据包后,执行同样的Hash计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH协议的完整性验证范围为整个IP报文。


  • ESP协议ESP支持认证和加密功能。ESP在每一个数据包的标准IP报头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾(ESP Trailer和ESP Auth data),如封装模式所示。与AH不同的是,ESP将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但ESP没有对IP头的内容进行保护,除非IP头被封装在ESP内部(采用隧道模式)。

华为防火墙IPSec网络安全协议_华为防火墙_03

AH报文头结构

华为防火墙IPSec网络安全协议_IPSec_04

ESP报文头结构

华为防火墙IPSec网络安全协议_IPSec_05

封装模式

华为防火墙IPSec网络安全协议_IPSec_06

华为防火墙IPSec网络安全协议_华为防火墙_07

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

  • 从安全性来讲,隧道模式优于传输模式。它可以完全地对原始IP数据报进行验证和加密。隧道模式下可以隐藏内部IP地址,协议类型和端口。
  • 从性能来讲,隧道模式因为有一个额外的IP头,所以它将比传输模式占用更多带宽。
  • 从场景来讲,传输模式主要应用于两台主机或一台主机和一台VPN网关之间通信;隧道模式主要应用于两台VPN网关之间或一台主机与一台VPN网关之间的通信。

当安全协议同时采用AH和ESP时,AH和ESP协议必须采用相同的封装模式。


数据加密

IPSec采用对称加密算法对数据进行加密和解密。对称加密算法是指数据发送方和接收方使用相同的密钥进行加密、解密。

采用对称加密算法进行数据加密和解密的过程如图1所示。

华为防火墙IPSec网络安全协议_IPSec_08

用于加密和解密的对称密钥可以手工配置,也可以通过IKE协议自动协商生成。

常用的对称加密算法包括:

  • 数据加密标准DES(Data Encryption Standard)
  • 3DES(Triple Data Encryption Standard)
  • 先进加密标准AES(Advanced Encryption Standard)
  • 国密算法(SM4)在安全级别要求较高的情况下,使用SM4国密算法可以充分满足加密需求。


验证过程

虽然加密后的数据只能通过原始的加密密钥进行解密,但是无法验证解密后的信息是否是原始发送的信息。另外加密和解密的过程非常的消耗CPU,恶意用户可能会通过发送欺骗数据包,占用CPU性能。HMAC(Keyed-Hash Message Authentication Code)功能通过比较数字签名进行数据包完整性和真实性验证,这个过程消耗的CPU资源非常少,效率非常高。因此,IPSec采用HMAC功能进行验证。

HMAC验证过程

华为防火墙IPSec网络安全协议_IPSec_09

同加密一样,用于验证的对称密钥也可以手工配置,或者通过IKE协议自动协商生成。

常用的验证算法包括:

  • MD5 - MD5比SHA更快,但是安全性稍差。
  • SHA1 - SHA1比MD5要慢,但是更安全。因为它的签名比较长,具有更强大的防攻破功能,并可以更有效的发现共享的密钥。
  • SHA2 - SHA2是SHA1的加强版本,安全性能要远远高于SHA1。SHA2算法包括SHA2-256、SHA2-384和SHA2-512,密钥长度分别为256位、384位和512位,但计算速度越慢。
  • SM3 - 国密算法SM3(Senior Middle 3)是国家密码管理局编制的商用算法,用于密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。


IKE协议

IKE与IPSec的关系如图1所示,对等体之间建立一个IKE SA完成身份验证和密钥信息交换后,在IKE SA的保护下,根据配置的AH/ESP安全协议等参数协商出一对IPSec SA。此后,对等体间的数据将在IPSec隧道中加密传输。

华为防火墙IPSec网络安全协议_IPSec_10

IKE的安全机制

IKE具有一套自保护机制,可以在不安全的网络上安全地认证身份、分发密钥、建立IPsec SA:

  • 身份认证
    身份认证确认通信双方的身份(对等体的IP地址或名称),包括预共享密钥PSK(pre-shared key)认证、数字证书RSA(rsa-signature)认证和数字信封认证。
  • 对于预共享密钥认证方法,当有1个对等体对应多个对等体时,需要为每个对等体配置预共享的密钥。该方法在小型网络中容易建立,但安全性较低。使用数字证书安全性高,但需要CA来颁发数字证书,适合在大型网络中使用。而数字信封认证用于设备需要符合国家密码管理局要求时使用,此认证方法只能在IKEv1的主模式协商过程中支持。
  • 身份保护
    身份数据在密钥产生之后加密传送,实现了对身份数据的保护。
    支持的算法有:DES、3DES、AES-128、AES-192、AES-256和SM4。
  • DH
    DH是一种公共密钥交换方法,它用于产生密钥材料,并通过ISAKMP消息在发送和接收设备之间进行密钥材料交换。然后,两端设备各自计算出完全相同的对称密钥。该对称密钥用于计算加密和验证的密钥。在任何时候,通信双方都不交换真正的密钥。DH密钥交换是IKE的精髓所在。
    MD5、SHA1、DES、3DES、AES等算法都可以采用DH算法来共享对称密钥。
    DH使用密钥组定义自己产生的密钥长度。密钥组长度越长,产生的密钥就越强壮。
  • PFS
    完善的前向安全性PFS(Perfect Forward Secrecy)是一种安全特性,指一个密钥被解密,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。IPSec SA的密钥是从IKE SA的密钥导出的,由于一个IKE SA协商生成一对或多对IPSec SA,当IKE的密钥被窃取后,坏仁将可能收集到足够的信息来导出IPSec SA的密钥,PFS通过执行一次额外的DH交换,保证IPSec SA密钥的安全。

IKEv1协议和IKEv2协议比较

IKE协议分IKEv1和IKEv2两个版本。IKEv2与IKEv1相比有以下优点:

  • 简化了安全联盟的协商过程,提高了协商效率。
  • 修复了多处公认的密码学方面的安全漏洞,提高了安全性能。
  • 加入对EAP(Extensible Authentication Protocol)身份认证方式的支持,提高了认证方式的灵活性和可扩展性。


IPSec增强原理

DHCP over IPSec

华为防火墙IPSec网络安全协议_IPSec_11

DHCP over IPSec的工作原理如下:

  1. .eNodeB跟FW之间通过IKE主模式或野蛮模式协商IKE SA。
  2. .eNodeB跟FW通过快速模式协商第二阶段的IPSec SA。该IPSec SA只能用来保护eNodeB跟FW之间发生的DHCP流量。
  3. eNodeB向DHCP服务器发起DHCP地址分配请求。DHCP请求报文由作为DHCP中继的FW转发。eNodeB到FW之间经过IPSec隧道,DHCP报文由其进行加密传输。
  4. DHCP服务器响应eNodeB的DHCP请求。DHCP响应报文同样由FW转发。DHCP服务器位于安全的骨干网络中,DHCP服务器与FW之间的DHCP报文不进行加密。
  5. DHCP交互完成后,eNodeB获取一个动态IP地址。然后,eNodeB跟FW之间协商新的IPSec SA,用于保护eNodeB承载的业务流量。

IKEv1+XAUTH认证

PC用户采用RSA方式与总部协商建立IPSec。此方式的PC用户无需输入用户名和密码用证书与总部进行认证,如果PC被盗,则非法获取该设备的人可以毫无障碍地接入总部,获取机密信息,存在安全隐患。

为了解决以上问题,IKEv1+XAUTH认证(即IKEv1扩展认证)方案被提出,在IKE协商时,第一阶段IKE SA协商完成后,总部会对PC用户发起IKEv1扩展认证来验证用户的用户名和密码,如果扩展认证通过,则继续进行第二阶段IPSec SA的协商;如果扩展认证失败,则停止IKE协商,建立IPSec隧道失败。

华为防火墙IPSec网络安全协议_IPSec_12华为防火墙IPSec网络安全协议_IPSec_13

IKEv2+EAP认证

无线设备通过基站远程接入IP核心网,或者移动PC通过Internet远程接入IP核心网,基站/移动用户与IP核心网网关FW之间通过建立IPSec隧道进行安全传输。基站采用EAP(Extensible Authentication Protocol)认证接入总部网关,EAP认证的认证服务器(以RADIUS服务器为例)部署在IP核心网。为此,需要在IKE报文中传递EAP认证报文以实现EAP认证。

华为防火墙IPSec网络安全协议_IPSec_14

EAP协议有20多种,目前设备只支持基本的EAP-MD5(Message Digest 5)协议、基于SIM(Subscriber Identity Module)卡的EAP-AKA(Authenticantion and Key Agreement)和EAP-SIM协议:

  • EAP-MD - 当远程接入终端是PC时,EAP认证一般采用EAP-MD5协议。
  • EAP-SIM - 当远程接入终端是2G手机时,EAP认证采用EAP-SIM协议。EAP-SIM协议在无线局域网WLAN(Wireless LAN)上提供了基于GSM-SIM(即2G手机SIM卡)的认证和密钥分发机制。
  • EAP-AKA - 当远程接入终端是3G手机或安装了USIM集成电路卡UICC(USIM Integrated Circuit Card)的PC时,EAP认证采用EAP-AKA协议。EAP-AKA协议在WLAN上提供了基于全球用户识别卡USIM(Universal Subscriber Identity Module,即3G手机的SIM卡)的认证和密钥分发机制。

L2TP over IPSec

L2TP over IPSec,即先用L2TP封装报文再用IPSec封装,这样可以综合两种VPN的优势,通过L2TP实现用户验证和地址分配,并利用IPSec保障通信的安全性。L2TP over IPSec既可以用于分支接入总部,也可以用于出差员工接入总部。

华为防火墙IPSec网络安全协议_IPSec_15

GRE over IPSec

GRE over IPSec可利用GRE和IPSec的优势,通过GRE将组播、广播和非IP报文封装成普通的IP报文,通过IPSec为封装后的IP报文提供安全地通信,进而可以提供在总部和分支之间安全地传送广播、组播的业务,例如视频会议或动态路由协议消息等。

华为防火墙IPSec网络安全协议_IPSec_16

IPSec多实例

IPSec多实例主要用于向小企业提供防火墙租赁业务和实现企业内部网络隔离。

三个小企业的分支共用一台VPN网关。三个企业之间需要保持网络独立,互相之间不会产生影响。三个企业的分支内部网络IP地址是各自规划的,可能出现IP地址重叠(即不同私网出现使用相同IP地址的情况),此时需要在网关上应用IPSec多实例功能,将三个企业的IPSec隧道与三个IPSec多实例绑定,保证相同IP地址的报文能够正确转发。

华为防火墙IPSec网络安全协议_IPSec_17


IPSec可靠性

IPSec智能选路

华为防火墙IPSec网络安全协议_IPSec_18

通过在FW_B上配置IPSec智能选路功能,可以实现分支和总部之间多条IPSec隧道动态切换。使用其中一条链路建立IPSec隧道后,网关设备会实时检测已有IPSec隧道的时延或丢包率。在时延或丢包率高于设定的阈值时,动态切换到备用链路上重新建立IPSec隧道。


华为防火墙IPSec网络安全协议_华为防火墙_19

从分支网关FW_B到总部网关FW_A之间有两条链路Link1和Link2,FW_B与Internet之间运行动态路由协议(此处以OSPF为例)。在FW_B上配置IPSec智能选路功能,可以实现分支和总部之间多条IPSec隧道动态切换。

链路冗余备份

华为防火墙IPSec网络安全协议_华为防火墙_20

FW_A通过主备两条链路连接FW_B。在FW_A上创建两个Tunnel接口,借用同一个物理接口的IP地址,分别应用不同的IPSec安全策略,在FW_B的两个物理接口上也分别应用不同的IPSec安全策略,这样可以创建主备两条IPSec隧道。正常情况下,流量通过由主链路和Tunnel1接口建立的IPSec隧道传输;当主链路故障时,FW_A感知变化,采用Tunnel2接口与FW_B的备份链路建立IPSec隧道,旧的IPSec隧道被拆除,流量切换也随之完成。

华为防火墙IPSec网络安全协议_华为防火墙_21

FW_A通过主备两条链路连接FW_B。系统在FW_A的物理接口与FW_B的Tunnel接口之间建立一个IPSec隧道,流量通过Tunnel接口进行IPSec处理,然后通过路由表选择物理接口发送。当主物理链路失效时,其路由变为不可达,流量自然切换到备用链路。这种情况下,IPSec隧道不需要进行重协商,故可快速完成流量切换。

IPSec双机热备

华为防火墙IPSec网络安全协议_IPSec_22

FW_A1和FW_A2对外配置VRRP备份组1,并在VRRP备份组1和分支网关FW_B的物理接口之间建立IPSec隧道。当主用FW_A1物理接口、链路或主机故障时,流量被引导到备用FW_A2进行IPSec和转发处理。这种情况下,原有的IPSec隧道并不会被拆除,切换速度更具优势。


华为防火墙IPSec网络安全协议_华为防火墙_23

     FW_A1和FW_A2以负载分担方式工作。eNodeB1和FW_A1、FW_A2各建了一条IPSec隧道,这两条IPSec隧道共同分担了分支发往总部的流量。这两条IPSec隧道之间不存在备份关系,彼此独立,因而互不影响。当FW_A1发生故障时,eNodeB1与FW_A1的IPSec隧道将断开,分支发往总部的流量将全部通过eNodeB1与FW_A2之间的IPSec隧道发往总部。反之,当FW_A2发生故障时,流量将会全部通过eNodeB1与FW_A1之间的IPSec隧道发往总部。


华为防火墙IPSec网络安全协议_IPSec_24

建立隧道的基本原理是:在FW_A1和FW_A2上分别创建一个VRRP备份组1,eNodeB1将会以VRRP备份组1的虚拟IP地址作为隧道对端地址与FW_A1和FW_A2建立主、备IPSec Tunnel1。同样,在FW_A1和FW_A2上分别创建一个VRRP备份组2,eNodeB2将会以VRRP备份组2的虚拟地址作为隧道对端地址与FW_A1和FW_A2建立主、备IPSec Tunnel2。当FW_A1和FW_A2运行正常时,eNodeB1下的用户发给总部的流量将由eNodeB1与FW_A1之间的主IPSec Tunnel1发往总部。eNodeB2下的用户发给总部的流量将由eNodeB2与FW_A2之间的主IPSec Tunnel2发往总部。当FW_A1出现故障时,eNodeB1则会将流量通过eNodeB1与FW_A2之间的备IPSec Tunnel1发往总部。同样,当FW_A2出现故障时,eNodeB2也将会使用备IPSec Tunnel2发送流量。

IPSec集群

华为防火墙IPSec网络安全协议_华为防火墙_25

在LTE场景中,基站所承载的客户流量需要在不安全的传输网络与安全的核心网络之间传输。为保护客户流量的安全,就需要在核心网络的边缘部署IPSec网关。在基站与IPSec网关之间建立IPSec隧道,客户流量通过IPSec隧道安全地传输。问题在于LTE场景中基站数量众多,且随着4G业务的发展每个基站承载的客户流量也大量增加。

一台IPSec网关的性能有限,无法承载所有基站的客户流量。所以LTE场景下通常需要多台IPSec网关才能满足IPSec隧道和VPN流量带宽的需求。由于基站所承载的客户流量不是固定的,多台IPSec网关之间彼此独立,很容易造成某些IPSec网关负载过重而无法建立新的IPSec隧道,某些IPSec网关却没有得到充分利用的情况。IPSec集群功能正是在此背景下产生的。

IPSec集群是指彼此有关联的一组IPSec网关的集合,这些IPSec网关对外相当于一台虚拟设备。对于基站来说,它与IPSec集群协商建立IPSec隧道,而不需要知道具体与哪个IPSec网关协商IPSec隧道。集群内部可以根据成员的负载情况选择一台IPSec网关响应基站的IPSec协商请求。

设备仅支持作为IPSec协商响应端与做为IPSec协商发起方的基站进行IPSec协商。

相关配置

华为防火墙网关间通过IKE方式协商IPSec VPN隧道(共享密钥认证):

​https://blog.51cto.com/u_15630500/5292601​