第23章_IPSec VPN原理与配置

  • 企业对网络安全性的需求日益提升,而传统的TCP/IP协议缺乏有效的安全认证和保密机制。IPSec(Internet Protocol Security)作为一种开放标准的安全框架结构,可以用来保证IP数据报文在网络上传输的机密性、完整性和防重放。

1.IPSec VPN应用场景

  • 企业分支可以通过IPSec VPN接入到企业总部网络。

image-20231208221305015

  • IPSec是IETF定义的一个协议组。通信双方在IP层通过加密、完整性校验、数据源认证等方式,保证了IP数据报文在网络上传输的机密性、完整性和防重放。

    1. 机密性(Confidentiality)指对数据进行加密保护,用密文的形式传送数据。
    2. 完整性(Data integrity)指对接收的数据进行认证,以判定报文是否被篡改。
    3. **防重放(**Anti-replay)指防止恶意用户通过重复发送捕获到的数据包所进行的攻击,即接收方会拒绝旧的或重复的数据包。
  • 企业远程分支机构可以通过使用IPSecVPN建立安全传输通道,接入到企业总部网络。

2.IPSec架构

  • IPSec不是一个单独的协议,它通过==AH==和==ESP==这两个安全协议来实现IP数据报文的安全传送。
  • ==IKE==协议提供密钥协商,建立和维护安全联盟SA等服务。

image-20231209084631074

  • IPSec VPN体系结构主要由AH(Authentication Header)、ESP(EncapsulatingSecurity Payload )和IKE(Internet Key Exchange)协议套件组成。
    • ==AH协议==:主要提供的功能有数据源验证、数据完整性校验和防报文重放功能。然而,AH并不加密所保护的数据报。
    • ==ESP协议==:提供AH协议的所有功能外(但其数据完整性校验不包括IP头),还可提供对IP报文的加密功能。
    • ==IKE协议==:用于自动协商AH和ESP所使用的密码算法。

3.安全联盟SA

  • 安全联盟定义了IPSec对等体间将使用的数据封装模式、认证和加密算法、密钥等参数。
  • 安全联盟是单向的,两个对等体之间的双向通信,至少需要两个SA。

image-20231209084757872

  • SA(Security Association)安全联盟定义了IPSec通信对等体间将使用的数据封装模式、认证和加密算法、秘钥等参数。SA是单向的,两个对等体之间的双向通信,至少需要两个SA。如果两个对等体希望同时使用AH和ESP安全协议来进行通信,则对等体针对每一种安全协议都需要协商一对SA。
  • SA由一个三元组来唯一标识,这个三元组包括
    • 安全参数索引SPI(Security ParameterIndex)、
    • 目的IP地址、
    • 安全协议(AH或ESP)。
  • 建立SA的方式有以下两种:
    • 手工方式:安全联盟所需的全部信息都必须手工配置。手工方式建立安全联盟比较复杂,但优点是可以不依赖IKE而单独实现IPSec功能。当对等体设备数量较少时,或是在小型静态环境中,手工配置SA是可行的。
    • IKE动态协商方式:只需要通信对等体间配置好IKE协商参数,由IKE自动协商来创建和维护SA。动态协商方式建立安全联盟相对简单些。对于中、大型的动态网络环境中,推荐使用IKE协商建立SA。

4.IPSec传输模式

  • 在传输模式下,AH或ESP报头位于IP报头和传输层报头之间。

image-20231209084909833

  • IPSec协议有两种封装模式:传输模式和隧道模式。
    • 传输模式中,在IP报文头和高层协议之间插入AH或ESP头。传输模式中的AH或ESP主要对上层协议数据提供保护。
    • 传输模式中的AH:
      • 在IP头部之后插入AH头,对整个IP数据包进行完整性校验。
    • 传输模式中的ESP:
      • 在IP头部之后插入ESP头,在数据字段后插入尾部以及认证字段。对高层数据和ESP尾部进行加密,对IP数据包中的ESP报文头,高层数据和ESP尾部进行完整性校验。
    • 传输模式中的AH+ESP:
      • 在IP头部之后插入AH和ESP头,在数据字段后插入尾部以及认证字段。

5.IPSec隧道模式

  • 在隧道模式下,IPSec会另外生成一个新的IP报头,并封装在AH或ESP之前。

image-20231209085006775

  • 隧道模式中,AH或ESP头封装在原始IP报文头之前,并另外生成一个新的IP头封装到AH或ESP之前。隧道模式可以完全地对原始IP数据报进行认证和加密,而且,可以使用IPSec对等体的IP地址来隐藏客户机的IP地址。
  • 隧道模式中的AH:
    • 对整个原始IP报文提供完整性检查和认证,认证功能优于ESP。但AH不提供加密功能,所以通常和ESP联合使用。
  • 隧道模式中的ESP:
    • 对整个原始IP报文和ESP尾部进行加密,对ESP报文头、原始IP报文和ESP尾部进行完整性校验。
  • 隧道模式中的AH+ESP:
    • 对整个原始IP报文和ESP尾部进行加密,AH、ESP分别会对不同部分进行完整性校验。

6.IPsec VPN配置步骤

image-20231209090340119

配置IPSec VPN的步骤如下:

  1. 首先需要检查报文发送方和接收方之间的网络层可达性,确保双方只有建立IPSec VPN隧道才能进行IPSec通信。
  2. 第二步是定义数据流。因为部分流量无需满足完整性和机密性要求,所以需要对流量进行过滤,选择出需要进行IPSec处理的兴趣流。可以通过配置ACL来定义和区分不同的数据流。
  3. 第三步是配置IPSec安全提议。IPSec提议定义了保护数据流所用的安全协议、认证算法、加密算法和封装模式。安全协议包括AH和ESP,两者可以单独使用或一起使用。AH支持MD5和SHA-1认证算法;ESP支持两种认证算法(MD5和SHA-1)和三种加密算法(DES、3DES和AES)。为了能够正常传输数据流,安全隧道两端的对等体必须使用相同的安全协议、认证算法、加密算法和封装模式。如果要在两个安全网关之间建立IPSec隧道,建议将IPSec封装模式设置为隧道模式,以便隐藏通信使用的实际源IP地址和目的IP地址。
  4. 第四步是配置IPSec安全策略。IPSec策略中会应用IPSec提议中定义的安全协议、认证算法、加密算法和封装模式。每一个IPSec安全策略都使用唯一的名称和序号来标识。IPSec策略可分成两类:手工建立SA的策略和IKE协商建立SA的策略。
  5. 第五步是在一个接口上应用IPSec安全策略。

7.IPSec VPN配置

image-20231209090443251

本示例中的IPSec VPN连接是通过配置静态路由建立的,下一跳指向RTB。需要配置两个方向的静态路由确保双向通信可达。建立一条高级ACL,用于确定哪些感兴趣流需要通过IPSec VPN隧道。高级ACL能够依据特定参数过滤流量,继而对流量执行丢弃、通过或保护操作。

  • 执行ipsec proposal命令,可以创建IPSec提议并进入IPSec提议视图。配置IPSec策略时,必须引用IPSec提议来指定IPSec隧道两端使用的安全协议、加密算法、认证算法和封装模式。缺省情况下,使用ipsec proposal命令创建的IPSec提议采用ESP协议、MD5认证算法和隧道封装模式。在IPSec提议视图下执行下列命令可以修改这些参数。
  • 执行transform [ah |ah-esp|esp]命令,可以重新配置隧道采用的安全协议。
  • 执行encapsulation-mode {transport|tunnel }命令,可以配置报文的封装模式。
  • 执行esp authentication-algorithm [md5|shal |sha2-256|sha2-384|sha2-512 ]命令,可以配置ESP协议使用的认证算法。
  • 执行esp encryption-algorithm [des|3des|aes-128|aes-192 |aes-256 ]命令,可以配置ESP加密算法。
  • 执行ah authentication-algorithm [md5|shal |sha2-256 |sha2-384 |sha2-512]命令,可以配置AH协议使用的认证算法。

配置验证:

image-20231209090555219

  • IPSec VPN对等体配置的安全提议参数必须一致。

  • 执行display ipsec proposal [name<proposal-name>]命令,可以查看IPSec提议中配置的参数。

    • Number of proposals字段显示的是已创建的IPSec提议的个数。IPSec proposal name字段显示的是已创建IPSec提议的名称。
    • Encapsulation mode字段显示的指定提议当前使用的封装模式,其值可以为传输模式或隧道模式。
    • Transform字段显示的是IPSec所采用的安全协议,其值可以是AH、ESP或AH-ESP。ESP protocol字段显示的是安全协议所使用的认证和加密算法。

image-20231209090653804

  • 安全策略将要保护的数据流和安全提议进行绑定。

  • ipsec policy policy-name seq-number命令用来创建一条IPSec策略,并进入IPSec策略视图。安全策略是由policy-name和seq-number共同来确定的,多个具有相同policy-name的安全策略组成一个安全策略组。在一个安全策略组中最多可以设置16条安全策略,而seq-number越小的安全策略,优先级越高。在一个接口上应用了一个安全策略组,实际上是同时应用了安全策略组中所有的安全策略,这样能够对不同的数据流采用不同的安全策略进行保护。

  • IPSec策略除了指定策略的名称和序号外,还需要指定SA的建立方式。如果使用的是IKE协商,需要执行ipsec-policy-template命令配置指定参数。如果使用的是手工建立方式,所有参数都需要手工配置。本示例采用的是手工建立方式。

  • security acl acl-number命令用来指定IPSec策略所引用的访问控制列表。

  • proposal proposal-name命令用来指定IPSec策略所引用的提议。

  • tunnel local {ip-address|binding-interface }命令用来配置安全隧道的本端地址。

  • tunnel remote ip-address命令用来设置安全隧道的对端地址。

  • sa spi{inbound|outbound }{ah|esp }spi-number命令用来设置安全联盟的安全参数索引SPI。在配置安全联盟时,入方向和出方向安全联盟的安全参数索引都必须设置,并且本端的入方向安全联盟的SPI值必须和对端的出方向安全联盟的SPI值相同,而本端的出方向安全联盟的SPI值必须和对端的入方向安全联盟的SPI值相同。

  • sa string-key{inbound|outbound }{ah|esp }{simple|cipher }string-key命令用来设置安全联盟的认证密钥。入方向和出方向安全联盟的认证密钥都必须设置,并且本端的入方向安全联盟的密钥必须和对端的出方向安全联盟的密钥相同;同时,本端的出方向安全联盟密钥必须和对端的入方向安全联盟的密钥相同。

image-20231209090822204

  • ipsec policy policy-name命令用来在接口上应用指定的安全策略组。手工方式配置的安全策略只能应用到一个接口。

配置验证:

image-20231209090902981

  • 执行display ipsec policy [brief |name policy-name[seq-number]]命令,可以查看指定IPSec策略或所有IPSec策略。命令的显示信息中包括:策略名称、策略序号、提议名称、ACL、隧道的本端地址和隧道的远端地址等。

image-20231209090945568

  • 执行display ipsec policy命令,还可以查看出方向和入方向SA相关的参数。

8.本章总结

  • 安全联盟的作用是什么?

    • SA(Security Association)安全联盟定义了IPSec通信对等体间将使用的数据封装模式、认证和加密算法、密钥等参数。
  • IPSec VPN将会对过滤后的感兴趣数据流如何操作?

    • 经过IPSec过滤后的感兴趣数据流将会通过SA协商的各种参数进行处理并封装,之后通过IPSec隧道转发。