一 IPsec-VPN 实操 (点到点)
网络括谱图
IPSec-VPN 配置思路
1 配置IP地址
FWA:IP地址的配置
[FW1000-A]interface GigabitEthernet 1/0/0
[FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 //配置IP地址
[FW1000-A]interface GigabitEthernet 1/0/2
[FW1000-A-GigabitEthernet1/0/2]ip address 2.2.2.1 24
FWB:IP地址配置
[FW1000-B]interface GigabitEthernet 1/0/3
[FW1000-B-GigabitEthernet1/0/3]ip address 10.1.2.1 24
[FW1000-B]interface GigabitEthernet 1/0/4
[FW1000-B-GigabitEthernet1/0/4]ip add
[FW1000-B-GigabitEthernet1/0/4]ip address 2.2.3.1 24
INTERNET-SW1:将接口开成三层接口
[INTERENT-SW]interface GigabitEthernet 1/0/1
[INTERENT-SW-GigabitEthernet1/0/1]port link-mode route //交换机的模式是三层
[INTERENT-SW-GigabitEthernet1/0/1]ip address 2.2.2.2 24
[INTERENT-SW-GigabitEthernet1/0/1]quit
[INTERENT-SW-GigabitEthernet1/0/3]port link-mode route
[INTERENT-SW-GigabitEthernet1/0/3]ip address 2.2.3.2 24
2 防火墙的接口加入指定的防火墙区域
(Local
Turst
Untrust
DMZ
Management)
FWA:配置思路
[FW1000-A]security-zone name Trust //进入对应的区域
[FW1000-A-security-zone-Trust]import interface GigabitEthernet 1/0/0
//将接口加入到指定的区域
[FW1000-B-security-zone-Trust]quit
[FW1000-A]security-zone name Untrust
[FW1000-A-security-zone-Untrust]import interface GigabitEthernet 1/0/2
[FW1000-A-security-zone-Untrust]
FWB配置思路
[FW1000-B]security-zone name Trust
[FW1000-B-security-zone-Trust]import interface GigabitEthernet 1/0/3
[FW1000-B-security-zone-Trust]quit
[FW1000-B]security-zone name Untrust
[FW1000-B-security-zone-Untrust]import interface GigabitEthernet 1/0/4
3 防火墙的接口默认是封 ping的需要解ping
FWA配置思路
[FW1000-A-GigabitEthernet1/0/0]manage ping outbound //出口流量解ping
[FW1000-A-GigabitEthernet1/0/0]manage ping inbound //入口流量解ping
[FW1000-A-GigabitEthernet1/0/0]quit
[FW1000-A-GigabitEthernet1/0/2]manage ping outbound
[FW1000-A-GigabitEthernet1/0/2]manage ping inbound
FWB配置思路
[FW1000-B]interface GigabitEthernet 1/0/4
[FW1000-B-GigabitEthernet1/0/4]manage ping outbound
[FW1000-B-GigabitEthernet1/0/4]manage ping inbound
[FW1000-B-GigabitEthernet1/0/4]quit
[FW1000-B]interface GigabitEthernet 1/0/3
[FW1000-B-GigabitEthernet1/0/3]manage ping outbound
[FW1000-B-GigabitEthernet1/0/3]manage ping in
[FW1000-B-GigabitEthernet1/0/3]manage ping inbound 0/3]
4 防火墙配置静态路由
FWA配置:
[FW1000-A]ip route-static 10.1.2.0 24 2.2.2.2
//配置静态路由 ip route-static 目标地址 掩码 下一条
[FW1000-A]ip route-static 2.2.3.1 24 2.2.2.2
FWB配置:
[FW1000-B]ip route-static 10.1.1.0 24 2.2.3.2
[FW1000-B]ip route-static 2.2.2.1 24 2.2.3.2
5 配置IPsec隧道策略
配置安全策略放行Untrust与Local安全域之间的流量,用于设备之间可以建立IPsec隧道。
FWA
security-policy ip //进入防火墙的策略
rule name ipseclocalout //给规则命名字
source-zone local //源区域是 local
备注:local区域是指防火墙上的所有对应的接口
destination-zone untrust //目标区域是 不信任区域 指定的是公网区域
备注: untrust 指定的是外网区域,通常指定的是不可信认的区域
source-ip-host 2.2.2.1 //源接口的IP地址
destination-ip-host 2.2.3.1 //目标接口的IP地址
action pass //使用 "action pass" 可以覆盖这一默认行为,允许特定的流量通过。
Quit //退出
rule name ipseclocalin
source-zone untrust
destination-zone local
source-ip-host 2.2.3.1
destination-ip-host 2.2.2.1
action pass
quit
6 配置安全策略从信任的区域到不信任的区域 trust-untrust
rule name trust-untrust
source-zone trust
destination-zone untrust
source-ip-subnet 10.1.1.0 24
destination-ip-subnet 10.1.2.0 24
action pass
quit
解释:
规则名称:"trust-untrust",这是该规则的标识名称,方便管理和识别。
源安全域:"trust",表示数据包的发送方所在的网络区域被划分为 "trust" 安全域,通常代表内部网络或受信任的网络。
目的安全域:"untrust",表示数据包的接收方所在的网络区域被划分为 "untrust" 安全域,通常代表外部网络或不受信任的网络。
源IP地址范围:"10.1.1.0 24",指定了允许发送数据包的源IP地址范围,即10.1.1.0到10.1.1.255(子网掩码为255.255.255.0)。
目的IP地址范围:"10.1.2.0 24",指定了允许接收数据包的目的IP地址范围,即10.1.2.0到10.1.2.255。
动作:"action pass",定义了当数据包符合上述条件时,防火墙将执行的动作,这里是 "pass",即允许数据包通过。
退出命令:"quit",用于退出当前的安全策略配置模式。
rule name untrust-trust
source-zone untrust
destination-zone trust
source-ip-subnet 10.1.2.0 24
destination-ip-subnet 10.1.1.0 24
action pass
quit
quit
7 配置ACL 规则
配置ACL规则(高级ACL)
acl advanced 3101
rule permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
quit
解释:
rule permit:表示这是一个允许(permit)规则。
ip:指定该规则适用于IP数据包。
source 10.1.1.0 0.0.0.255:指定源IP地址范围为10.1.1.0到10.1.1.255(子网掩码为255.255.255.0,即24位掩码)。
destination 10.1.2.0 0.0.0.255:指定目的IP地址范围为10.1.2.0到10.1.2.255(同样是一个24位掩码的子网)。
8 配置IPsec安全提议,协商封装报文使用的各种安全协议
ipsec transform-set tran1
encapsulation-mode tunnel
protocol esp
esp encryption-algorithm aes-cbc-128
esp authentication-algorithm sha1
quit
解释:
- 创建IPSec转换集: ipsec transform-set tran1 命令创建了一个名为 tran1 的IPSec转换集,这是一组安全参数,用于定义IPSec隧道的加密和认证方法。
- 设置封装模式: encapsulation-mode tunnel 指定了封装模式为隧道模式,这意味着原始数据包将被完全封装在新的IPSec数据包中,包括源IP和目的IP地址。
- 选择协议: protocol esp 选择了ESP协议,它是IPSec的两个主要协议之一,用于在IP层提供数据的加密和认证。
- 加密算法: esp encryption-algorithm aes-cbc-128 设置了加密算法为AES-CBC-128,即采用128位密钥的高级加密标准(AES)的密码块链(CBC)模式,这是一种常用的、安全性较高的加密方法。
- 认证算法: esp authentication-algorithm sha1 设置了认证算法为SHA-1,即安全哈希算法1,用于验证数据的完整性和来源,防止数据在传输过程中被篡改。
- 退出命令模式: quit 命令用于退出当前的配置模式,返回到上一级命令行界面。
9 配置IPsec安全策略,建立IPsec隧道,保护需要防护的数据流
ipsec policy map1 10 manual
security acl 3101
transform-set tran1
remote-address 2.2.3.1
sa spi outbound esp 12345
sa spi inbound esp 54321
sa string-key outbound esp simple abcdefg
sa string-key inbound esp simple gfedcbasa
quit
- 创建IPSec安全策略: ipsec policy map1 10 manual 创建了一个名为 map1 的IPSec安全策略,序列号为10,并且是手动模式(manual),这意味着IPSec安全关联(SA)需要手动建立。
- 引用访问控制列表(ACL): security acl 3101 指定了该IPSec安全策略将使用编号为3101的ACL来确定哪些流量需要通过IPSec进行保护。
- 指定IPSec转换集: transform-set tran1 指定了该IPSec安全策略将使用名为 tran1 的转换集,该转换集定义了加密和认证算法等安全参数。
- 配置对端IP地址: remote-address 2.2.3.1 指定了IPSec隧道的对端IP地址为2.2.3.1。
- 配置安全关联(SA)的SPI值:
- sa spi outbound esp 12345 为出站(outbound)的ESP协议配置了一个SPI(Security Parameters Index)值为12345。
- sa spi inbound esp 54321 为入站(inbound)的ESP协议配置了一个SPI值为54321。
- 配置SA的密钥:
- sa string-key outbound esp simple abcdefg 为出站SA配置了一个简单的字符串密钥“abcdefg”。
- sa string-key inbound esp simple gfedcbasa 为入站SA配置了一个简单的字符串密钥“gfedcbasa”。
10 在接口上应用IPsec安全策略,对接口上的流量进行保护
interface gigabitethernet 1/0/2
ipsec apply policy map1
quit
- interface gigabitethernet 1/0/2
这条命令用于进入名为GigabitEthernet 1/0/2的网络接口配置模式。这个接口可以是物理接口,也可以是逻辑接口,用于连接网络设备和其他设备,如路由器、交换机或终端设备。 - ipsec apply policy map1
这条命令将名为map1的IPSec安全策略应用到GigabitEthernet 1/0/2接口上。这意味着所有通过该接口的、符合策略map1中定义的ACL(访问控制列表)规则的数据流都将被IPSec保护。这包括数据的加密、认证等安全操作,
11 配置IPsec隧道策略
配置安全策略放行Untrust与Local安全域之间的流量,用于设备之间可以建立IPsec隧道。
security-policy ip
rule name ipseclocalout
source-zone local
destination-zone
source-ip-host 2.2.3.1
destination-ip-host 2.2.2.1
action pass
quit
rule name ipseclocalin
source-zone untrust
destination-zone local
source-ip-host 2.2.2.1
destination-ip-host 2.2.3.1
action pass
quit
12 配置安全策略
配置安全策略 trust-untrust untrust-trust
rule name trust-untrust
source-zone trust
destination-zone untrust
source-ip-subnet 10.1.2.0 24
destination-ip-subnet 10.1.1.0 24
action pass
quit
rule name untrust-trust
source-zone untrust
destination-zone trust
source-ip-subnet 10.1.1.0 24
destination-ip-subnet 10.1.2.0 24
action pass
quit
quit
13 配置ACL规则
acl advanced 3101
rule permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
quit
14 配置IPsec安全提议,协商封装报文使用的各种安全协议
ipsec transform-set tran1
encapsulation-mode tunnel
protocol esp
esp encryption-algorithm aes-cbc-128
esp authentication-algorithm sha1
quit
15 配置IPsec安全策略,建立IPsec隧道,保护需要防护的数据流
ipsec policy usel 10 manual
security acl 3101
transform-set tran1
remote-address 2.2.2.1
sa spi outbound esp 54321
sa spi inbound esp 12345
sa string-key outbound esp simple gfedcba
sa string-key inbound esp simple abcdefg
quit
16 在接口上应用IPsec安全策略,对接口上的流量进行保护
interface gigabitethernet 1/0/
ipsec apply policy usel
quit
17 查看配置
二 IPsec-VPN 理论
2.1 IPsec简介
2.1.1 IPsec协议框架
IPsec协议不是一个单独的协议,它为IP层上的网络数据安全提供了一整套安全体系结构,包括安全协议AH(Authentication Header,认证头)和ESP(Encapsulating Security Payload,封装安全载荷)、IKE(Internet Key Exchange,互联网密钥交换)以及用于网络认证及加密的一些算法等。其中,AH协议和ESP协议用于提供安全服务,IKE协议用于密钥交换。关于IKE的详细介绍请参见“安全配置指导”中的“IKE”,本节不做介绍。
2.1.2 IPsec提供的安全服务
IPsec提供了两大安全机制:认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。
IPsec为IP层的数据报文提供的安全服务具体包括以下几种:
- · 数据机密性(Confidentiality):发送方通过网络传输用户报文前,IPsec对报文进行加密。
- · 数据完整性(Data Integrity):接收方对发送方发送来的IPsec报文进行认证,以确保数据在传输过程中没有被篡改。
- · 数据来源认证(Data Origin Authentication):接收方认证发送IPsec报文的发送端是否合法。
· 抗重放(Anti-Replay):接收方可检测并拒绝接收过时或重复的IPsec报文。
2.1.3 IPsec的优点
IPsec可为IP层上的数据提供安全保护,其优点包括如下几个方面:
- · 支持IKE(Internet Key Exchange,互联网密钥交换),可实现密钥的自动协商功能,减少了密钥协商的开销。可以通过IKE建立和维护SA(Security Association,安全联盟),简化了IPsec的使用和管理。
- · 所有使用IP协议进行数据传输的应用系统和服务都可以使用IPsec,而不必对这些应用系统和服务本身做任何修改。
- · 对数据的加密是以数据包为单位的,而不是以整个数据流为单位,这不仅灵活而且有助于进一步提高IP数据包的安全性,可以有效防范网络攻击。
2.1.4 安全协议
IPsec包括AH和ESP两种安全协议,它们定义了对IP报文的封装格式以及可提供的安全服务。
- · AH协议(IP协议号为51)定义了AH头在IP报文中的封装格式,如图1-3所示。AH可提供数据来源认证、数据完整性校验和抗重放功能,它能保护报文免受篡改,但不能防止报文被窃听,适合用于传输非机密数据。AH使用的认证算法有HMAC-MD5和HMAC-SHA1等。AH协议不支持NAT穿越功能。
- · ESP协议(IP协议号为50)定义了ESP头和ESP尾在IP报文中的封装格式,如图1-3所示。ESP可提供数据加密、数据来源认证、数据完整性校验和抗重放功能。与AH不同的是,ESP将需要保护的用户数据进行加密后再封装到IP包中,以保证数据的机密性。ESP使用的加密算法有DES、3DES、AES等。同时,作为可选项,ESP还可以提供认证服务,使用的认证算法有HMAC-MD5和HMAC-SHA1等。虽然AH和ESP都可以提供认证服务,但是AH提供的认证服务要强于ESP。
在实际使用过程中,可以根据具体的安全需求同时使用这两种协议或仅使用其中的一种。设备支持的AH和ESP联合使用的方式为:先对报文进行ESP封装,再对报文进行AH封装。
2.1.5 封装模式
IPsec支持两种封装模式:传输模式和隧道模式。
1. 传输模式(Transport Mode)
该模式下的安全协议主要用于保护上层协议报文,仅传输层数据被用来计算安全协议头,生成的安全协议头以及加密的用户数据(仅针对ESP封装)被放置在原IP头后面。若要求端到端的安全保障,即数据包进行安全传输的起点和终点为数据包的实际起点和终点时,才能使用传输模式。如图1-1所示,通常传输模式用于保护两台主机之间的数据。
2. 隧道模式(Tunnel Mode)
该模式下的安全协议用于保护整个IP数据包,用户的整个IP数据包都被用来计算安全协议头,生成的安全协议头以及加密的用户数据(仅针对ESP封装)被封装在一个新的IP数据包中。这种模式下,封装后的IP数据包有内外两个IP头,其中的内部IP头为原有的IP头,外部IP头由提供安全服务的设备添加。在安全保护由设备提供的情况下,数据包进行安全传输的起点或终点不为数据包的实际起点和终点时(例如安全网关后的主机),则必须使用隧道模式。如图1-2所示,通常隧道模式用于保护两个安全网关之间的数据。
2.1.6 安全联盟
1. SA简介
SA(Security Association,安全联盟)是IPsec的基础,也是IPsec的本质。IPsec在两个端点之间提供安全通信,这类端点被称为IPsec对等体。SA是IPsec对等体间对某些要素的约定,例如,使用的安全协议(AH、ESP或两者结合使用)、协议报文的封装模式(传输模式或隧道模式)、认证算法(HMAC-MD5、HMAC-SHA1或SM3)、加密算法(DES、3DES、AES或SM)、特定流中保护数据的共享密钥以及密钥的生存时间等。
SA是单向的,在两个对等体之间的双向通信,最少需要两个SA来分别对两个方向的数据流进行安全保护。同时,如果两个对等体希望同时使用AH和ESP来进行安全通信,则每个对等体都会针对每一种协议来构建一个独立的SA。
SA由一个三元组来唯一标识,这个三元组包括SPI(Security Parameter Index,安全参数索引)、目的IP地址和安全协议号。其中,SPI是用于标识SA的一个32比特的数值,它在AH和ESP头中传输。
2. SA生成方式
SA有手工配置和IKE自动协商两种生成方式:
· 手工方式:通过命令行配置SA的所有信息。该方式的配置比较复杂,而且不支持一些高级特性(例如定时更新密钥),优点是可以不依赖IKE而单独实现IPsec功能。该方式主要用于需要安全通信的对等体数量较少,或小型静态的组网环境中。
· IKE自动协商方式:对等体之间通过IKE协议自动协商生成SA,并由IKE协议维护该SA。该方式的配置相对比较简单,扩展能力强。在中、大型的动态网络环境中,推荐使用IKE自动协商建立SA。
3. SA老化机制
手工方式建立的SA永不老化。通过IKE协商建立的SA具有生存时间,当生存时间到达时,旧的SA会被删除。
IKE协商建立的SA在生存时间到达前会提前协商一个新的SA来替换旧的SA。从SA建立到启动新SA协商的这段时间是软超时时间。缺省情况下,系统会基于SA的生存时间使用默认算法计算一个软超时时间。系统允许配置一个软超时缓冲来控制软超时时间,计算公式为:软超时时间=生存时间-软超时缓冲。
IKE协商建立的SA有两种形式的生存时间:
· 基于时间的生存时间,定义了一个SA从建立到删除的时间;
· 基于流量的生存时间,定义了一个SA允许处理的最大流量。
可同时存在基于时间和基于流量两种方式的SA生存时间,只要其中一种到达,就会删除旧的SA。
2.1.7 认证与加密
1. 认证算法
IPsec使用的认证算法主要是通过杂凑函数实现的。杂凑函数是一种能够接受任意长度的消息输入,并产生固定长度输出的算法,该算法的输出称为消息摘要。IPsec对等体双方都会计算一个摘要,接收方将发送方的摘要与本地的摘要进行比较,如果二者相同,则表示收到的IPsec报文是完整未经篡改的,以及发送方身份合法。目前,IPsec使用基于HMAC(Hash-based Message Authentication Code,基于散列的消息鉴别码)的认证算法和SM3认证算法。HMAC认证算法包括HMAC-MD5和HMAC-SHA。其中,HMAC-MD5算法的计算速度快,而HMAC-SHA算法的安全强度高。
2. 加密算法
IPsec使用的加密算法属于对称密钥系统,这类算法使用相同的密钥对数据进行加密和解密。目前设备的IPsec使用的加密算法包括:
· DES:使用56比特的密钥对一个64比特的明文块进行加密。
· 3DES:使用三个56比特(共168比特)的密钥对明文块进行加密。
· AES:使用128比特、192比特或256比特的密钥对明文块进行加密。
· SM:使用128比特的密钥对明文块进行加密。
这些加密算法的安全性由高到低依次是:AES/SM、3DES、DES,安全性高的加密算法实现机制复杂,运算速度慢。
3. 加密引擎
IPsec的认证和加/解密处理在设备上既可以通过软件实现,也可以通过硬件加密引擎实现。通过软件实现的IPsec,由于复杂的加密/解密、认证算法会占用大量的CPU资源,将会影响设备整体处理效率;通过硬件加密引擎实现的IPsec,由于复杂的算法处理由硬件完成,因此可以提高设备的处理效率。
若设备支持通过硬件加密引擎进行认证和加/解密处理,则设备会首先将需要处理的数据发送给硬件加密引擎,由硬件加密引擎对数据进行处理之后再发送回设备,最后由设备进行转发。
关于加密引擎的详细介绍请参见“安全配置指导”中的“加密引擎”。
将一台设备上的国密加密卡更换至另一台设备上部署时,国密加密卡上存储的硬件密钥对将失效。
2.1.8 IPsec隧道保护的对象
IPsec隧道可以保护匹配ACL(Access Control List,访问控制列表)的报文、隧道接口上的报文和IPv6路由协议报文。要实现建立IPsec隧道为两个IPsec对等体之间的数据提供安全保护,首先要配置和应用相应的安全策略,这里的安全策略包括IPsec安全策略和IPsec安全框架。有关IPsec安全策略和IPsec安全框架的详细介绍请参见“IPsec安全策略和IPsec安全框架”。
当IPsec对等体根据IPsec安全策略和IPsec安全框架识别出要保护的报文时,就建立一个相应的IPsec隧道并将其通过该隧道发送给对端。此处的IPsec隧道可以是提前手工配置或者由报文触发IKE协商建立。这些IPsec隧道实际上就是两个IPsec对等体之间建立的IPsec SA。由于IPsec SA是单向的,因此出方向的报文由出方向的SA保护,入方向的报文由入方向的SA来保护。对端接收到报文后,首先对报文进行分析、识别,然后根据预先设定的安全策略对报文进行不同的处理(丢弃,解封装,或直接转发)。