如何为VPN开放安全策略
防火墙上的VPN业务
防火墙支持IPSec VPN、L2TP VPN、GRE、SSL VPN等多种VPN业务,下面分别介绍典型VPN场景的安全策略的配置方法。如果VPN业务使用服务器认证,还需要开放防火墙与服务器之间的安全策略。
如何为IPSec VPN开放安全策略
点到点IPSec VPN
在典型的IPSec VPN应用中,VPN网关(即Firewall_A和Firewall_B)之间首先通过IKE协议协商安全联盟,然后使用协商出的AH或ESP协议来提供认证或加密传输。如图1-1所示。其中,ISAKMP消息用于IKE协商,使用UDP报文封装,端口号为500。ESP协议提供认证和加密功能,AH协议仅支持认证功能,因此通常使用ESP协议。
一般情况下,点到点VPN隧道两端的子网都可能会主动发起业务访问,因此,Firewall_A和Firewall_B都可能会主动发起IKE协商。典型的安全策略配置如表1-1所示,Firewall_A侧安全策略与Firewall_B侧互为镜像。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
Firewall_A |
|||||||
101 |
Allow ISAKMP message to peer |
local |
untrust |
192.0.2.1/32 |
203.0.113.1/32 |
isakmp (UDP: 500) |
permit |
102 |
Allow ISAKMP message from peer |
untrust |
local |
203.0.113.1/32 |
192.0.2.1/32 |
isakmp (UDP: 500) |
permit |
103 |
Allow IPSec from peer |
untrust |
local |
203.0.113.1/32 |
192.0.2.1/32 |
esp (50) ah (51) |
permit |
104 |
Allow intranet from peer |
untrust |
trust |
10.1.2.0/24 |
10.1.1.0/24 |
any |
permit |
105 |
Allow intranet to peer |
trust |
untrust |
10.1.1.0/24 |
10.1.2.0/24 |
any |
permit |
Firewall_B |
|||||||
101 |
Allow ISAKMP message to peer |
local |
untrust |
203.0.113.1/32 |
192.0.2.1/32 |
isakmp (UDP: 500) |
permit |
102 |
Allow ISAKMP message from peer |
untrust |
local |
192.0.2.1/32 |
203.0.113.1/32 |
isakmp (UDP: 500) |
permit |
103 |
Allow IPSec from peer |
untrust |
local |
192.0.2.1/32 |
203.0.113.1/32 |
esp (50) ah (51) |
permit |
104 |
Allow intranet from peer |
untrust |
trust |
10.1.1.0/24 |
10.1.2.0/24 |
any |
permit |
105 |
Allow intranet to peer |
trust |
untrust |
10.1.2.0/24 |
10.1.1.0/24 |
any |
permit |
需要说明的是:
- 防火墙接收对端的IPSec加密报文,需要配置安全策略(编号103),从防火墙发出的IPSec加密报文不需要配置安全策略。
- 如果采用手工方式配置IPSec VPN,防火墙不需要使用ISAKMP消息协商安全联盟,因此,不需要配置相应的安全策略(编号101、102)。
- 待加密流量进入IPSec隧道(编号为105的安全策略),其源安全区域是报文发起方所属的区域(此处为Trust),其目的安全区域为建立IPSec隧道的接口所属的安全区域,即应用IPSec策略组的接口或应用IPSec安全框架的虚拟隧道接口(Tunnel接口)。以Firewall_A侧主动发起业务访问为例,其源安全区域和目的安全区域如图1-2所示。当使用Tunnel接口建立IPSec隧道时,请特别注意配置正确的安全区域。
点到多点IPSec VPN
在点到多点场景中,通常由分支站点向中心站点发起访问,则分支站点和中心站点的安全策略如表1-2所示。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
Firewall_A,分支站点,本端主动发起访问 |
|||||||
101 |
Allow ISAKMP message to peer |
local |
untrust |
192.0.2.1/32 |
203.0.113.1/32 |
isakmp (UDP: 500) |
permit |
102 |
Allow IPSec from peer |
untrust |
local |
203.0.113.1/32 |
192.0.2.1/32 |
esp (50) ah (51) |
permit |
103 |
Allow intranet to peer |
trust |
untrust |
10.1.1.0/24 |
10.1.2.0/24 |
any |
permit |
Firewall_B,中心站点,接收对端访问 |
|||||||
201 |
Allow ISAKMP message from peer |
untrust |
local |
192.0.2.1/32 |
203.0.113.1/32 |
isakmp (UDP: 500) |
permit |
202 |
Allow IPSec from peer |
untrust |
local |
192.0.2.1/32 |
203.0.113.1/32 |
esp (50) ah (51) |
permit |
203 |
Allow intranet from peer |
untrust |
trust |
10.1.1.0/24 |
10.1.2.0/24 |
any |
permit |
如果中心站点需要主动向分支站点发起访问,则点到多点场景下的安全策略配置与点到点场景完全一致,可参考表1-1。
IPSec VPN之NAT穿越
NAT的本质是修改报文的IP地址和端口,IPSec VPN则是要保证数据的安全性,避免被篡改或窃取。当VPN网关之间存在NAT网关时,矛盾出现了。为了保证IPSec隧道能够成功建立,使报文顺利穿过NAT设备,需要VPN网关支持并启用NAT穿越功能。
为了顺利实现NAT穿越,VPN网关在IKE协商阶段需要首先检测对端是否支持NAT穿越;待确认对端支持NAT穿越以后,再检测本端与对端之间是否存在NAT网关。这两个检测都是使用ISAKMP消息来实现的。
确认存在NAT网关后,VPN网关使用UDP头封装ISAKMP消息和ESP报文,来实现NAT穿越。在传输模式下,VPN网关在原报文的IP头和ESP头间增加一个标准的UDP报头;在隧道模式下,VPN网关在新IP头和ESP头间增加一个标准的UDP报头。UDP报头的端口号默认是4500。这样,当ESP报文经过NAT网关时,NAT网关转换该报文的外层IP头和增加的UDP报头的地址和端口号。图1-3是NAT穿越的典型场景。Firewall_A位于企业私网,其向Firewall_B发起IPSec VPN,必须先经过NAT网关。
安全策略配置如表1-3所示。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
Firewall_A,分支站点,本端主动发起访问 |
|||||||
101 |
Allow ISAKMP message to peer |
local |
untrust |
10.10.1.1/32 |
203.0.113.1/32 |
isakmp (UDP: 500) UDP: 4500 |
permit |
102 |
Allow IPSec from peer |
untrust |
local |
203.0.113.1/32 |
10.10.1.1/32 |
UDP: 4500 |
permit |
103 |
Allow intranet to peer |
trust |
untrust |
10.1.1.0/24 |
10.1.2.0/24 |
any |
permit |
Firewall_B,中心站点,接收对端访问 |
|||||||
201 |
Allow ISAKMP message from peer |
untrust |
local |
192.0.2.1/32 |
203.0.113.1/32 |
isakmp (UDP: 500) UDP: 4500 |
permit |
202 |
Allow IPSec from peer |
untrust |
local |
192.0.2.1/32 |
203.0.113.1/32 |
UDP: 4500 |
permit |
203 |
Allow intranet from peer |
untrust |
trust |
10.1.1.0/24 |
10.1.2.0/24 |
any |
permit |
如何为GRE开放安全策略
GRE是一种三层VPN封装技术,GRE隧道的报文封装和转发过程如图1-4所示。报文进入Firewall_A以后,首先根据路由表送到Tunnel接口封装GRE头和新IP头。新IP头的源IP地址是由本端source { source-ip-address | interface-type interface-number }命令指定,通常是本端连接公网的物理接口或者本端Loopback接口的IP地址。新IP头的目的IP地址即对端指定的源IP地址。封装完成后,根据新IP头再次查找路由表,转发到对端。Firewall_B接收到报文以后,识别出GRE报文,送到Tunnel接口解封装,恢复为原始报文,并转发。
在这个过程中,报文跨越了多个安全区域。以Firewall_A侧为例,如图1-5所示,首先,原始报文从内网进入Firewall_A的Tunnel接口,源安全区域是Trust,目的安全区域是DMZ。在Tunnel接口完成GRE封装的报文从Firewall_A发往对端,源安全区域是Local,目的安全区域是连接公网的接口所在的安全区域,即Untrust。Firewall_B接收报文的域间关系与此相反。
安全策略如表1-4所示。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
Firewall_A,本端主动发起访问 |
|||||||
101 |
Allow original packet to tunnel |
trust |
dmz |
10.1.1.0/24 |
10.1.2.0/24 |
any |
permit |
102 |
Allow GRE packet to peer |
local |
untrust |
1.1.1.1/32 |
2.2.2.2/32 |
gre (47) |
permit |
Firewall_B,接收对端访问 |
|||||||
201 |
Allow GRE packet from peer |
untrust |
local |
1.1.1.1/32 |
2.2.2.2/32 |
gre (47) |
permit |
202 |
Allow original packet from peer |
dmz |
trust |
10.1.1.0/24 |
10.1.2.0/24 |
any |
permit |
Firewall_B,本端主动发起访问 |
|||||||
203 |
Allow original packet to tunnel |
trust |
dmz |
10.1.2.0/24 |
10.1.1.0/24 |
any |
permit |
204 |
Allow GRE packet to peer |
local |
untrust |
2.2.2.2/32 |
1.1.1.1/32 |
gre (47) |
permit |
Firewall_A,接收对端访问 |
|||||||
103 |
Allow GRE packet from peer |
untrust |
local |
2.2.2.2/32 |
1.1.1.1/32 |
gre (47) |
permit |
104 |
Allow original packet from peer |
dmz |
trust |
10.1.2.0/24 |
10.1.1.0/24 |
any |
permit |
如何为L2TP VPN开放安全策略
L2TP VPN有三种典型的场景,下面分别介绍。
Client-Initiated场景(移动办公用户访问企业内网)
在Client-Initiated场景中,移动办公用户要访问内网资源,需要首先跟防火墙(LNS设备)建立L2TP隧道、L2TP会话和PPP连接。在建立PPP连接的过程中,LNS为移动办公设备分配私网地址。在这三个阶段,移动办公设备与LNS之间交互的是L2TP报文。在数据传输阶段,移动办公设备访问内网资源的业务报文先后经过PPP封装和L2TP封装,发送给防火墙。防火墙使用VT接口拆除报文的L2TP头和PPP头,查找私网路由,转发报文给服务器。详细的报文交互过程如图1-6所示。
在整个报文交互过程中,防火墙作为LNS设备,需要处理两类报文:
- 移动办公设备发起的L2TP协商报文,以及经过L2TP封装的业务报文,其使用公网地址通信,目的端口为UDP 1701,由Untrust区域进入Local区域。
- 防火墙在VT接口解封装业务报文,发送给内网服务器,使用私网地址通信,由VT接口所在安全区域进入服务器所在区域。
相应的安全策略如表1-5所示。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Allow L2TP packet from remote uses |
untrust |
local |
any |
203.0.113.1/32 |
l2tp (UDP: 1701) |
permit |
102 |
Allow original packet from remote user |
dmz |
trust |
10.1.3.1-10.1.3.100 |
10.1.2.10/32 |
any1 |
permit |
1:请根据业务指定具体的服务。如果服务器端需要主动访问移动端,还需要镜像配置反向安全策略。为了简化配置,可以将VT接口加入到服务器所在的安全区域。 |
NAS-Initiated场景(拨号用户访问企业内网)
在NAS-Initiatied场景中,拨号用户首先发出PPPoE广播报文,跟运营商NAS设备建立PPPoE连接。随后,NAS设备与LNS设备协商L2TP隧道,建立L2TP会话。拨号用户向LNS请求私网地址,建立PPP连接。在数据传输阶段,拨号用户访问内网资源的业务报文先后经过PPP封装和PPPoE封装,发送给NAS设备。NAS设备使用VT接口拆除报文的PPPoE头,再封装L2TP头,查找公网路由,发送给LNS设备。LNS设备收到报文以后,使用VT接口拆除L2TP头和PPP头,查找私网路由,转发报文给服务器。
其中:
- 拨号用户与NAS设备之间交互的PPPoE报文是广播报文,不需要安全策略。
- 对于NAS设备来说,其向LNS设备发出的L2TP协商报文和L2TP封装报文,由Local区域进入LNS设备所在安全区域。
- 对于LNS设备来说,其接收NAS设备发出的L2TP协商报文和经过L2TP封装的拨号用户访问内网资源的业务报文。这些L2TP报文都由Untrust区域进入Local区域。
- 此外,LNS设备收到封装后的业务报文以后,还要用VT接口解封装,并转发给内网服务器,即由VT接口所在安全区域进入服务器所在区域。
相应的安全策略如表1-6所示。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
运营商侧NAS设备 |
|||||||
101 |
Allow L2TP packet to LNS |
local |
untrust |
192.0.2.1/32 |
203.0.113.1/32 |
l2tp (UDP: 1701) |
permit |
企业侧LNS设备 |
|||||||
201 |
Allow L2TP packet from NAS |
untrust |
local |
192.0.2.1/32 |
203.0.113.1/32 |
l2tp (UDP: 1701) |
permit |
202 |
Allow original packet from remote user |
dmz |
trust |
10.1.3.1-10.1.3.100 |
10.1.2.10/32 |
any1 |
permit |
1:请根据业务指定具体的服务。为了简化配置,可以将VT接口加入到服务器所在的安全区域。 |
Call-LNS场景(通过LAC自主拨号实现企业内网互连)
在Call-LNS场景中,LAC设备主动与LNS设备协商L2TP隧道,建立L2TP会话,建立PPP连接。在PPP连接建立过程中,LNS设备分配私网IP地址给LAC设备的VT接口。当有数据传输时,LAC首先通过源NAT把原始报文的源地址转换为VT接口地址,再使用VT接口完成PPP封装和L2TP封装,通过公网路由发送给LNS设备。LNS设备收到报文以后,使用VT接口拆除报文的PPPoE头和PPP头,查找私网路由,转发报文给服务器。
对于LAC设备来说:
- LAC设备主动向LNS设备发送L2TP协商报文和L2TP封装报文,由Local区域进入LNS设备所在安全区域(Untrust)。
- 内网终端发起的业务报文,需要送到VT接口封装,因此其目的安全区域为VT接口所在安全区域。
对于LNS设备来说:
- LNS设备接收LAC设备发送过来的L2TP协商报文和L2TP封装报文,由LAC设备所在安全区域进入Local区域。
- LNS设备使用VT接口解封装报文,送到内网服务器,其源安全区域为VT接口所在安全区域,目的安全区域为内网服务器所在安全区域。需要注意的是,解封装后的报文源IP地址是LAC侧VT接口获得的私网地址。
如果LNS侧内网终端需要主动访问LAC侧业务,还需要分别在两侧完成此类业务报文的封装和解封装,因此需要为反向业务镜像配置安全策略。相应的安全策略如表1-7所示。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
LAC设备 |
|||||||
101 |
Allow L2TP packet to LNS |
local |
untrust |
192.0.2.1/32 |
203.0.113.1/32 |
l2tp (UDP: 1701) |
permit |
102 |
Allow original packet from local user |
trust |
dmz |
10.3.3.0/24 |
10.1.2.0/24 |
any1 |
permit |
103 |
Allow original packt from remote user |
dmz |
trust |
10.1.2.0/24 |
10.3.3.0/24 |
any1 |
permit |
LNS设备 |
|||||||
201 |
Allow L2TP packet from LAC |
untrust |
local |
192.0.2.1/32 |
203.0.113.1/32 |
l2tp (UDP: 1701) |
permit |
202 |
Allow original packet from remote user |
dmz |
trust |
10.1.3.1-10.1.3.1002 |
10.1.2.0/24 |
any1 |
permit |
203 |
Allow original packet from local user |
trust |
dmz |
10.1.2.0/24 |
10.1.3.1-10.1.3.1002 |
any1 |
permit |
1:请根据业务指定具体的服务。如果服务器端需要主动访问移动端,还需要镜像配置反向安全策略。为了简化配置,可以将VT接口加入到服务器所在的安全区域。 2:LNS侧解封装之后的业务报文的源IP地址是其分配给LAC侧的VT接口的IP地址,而不是远端内网PC的IP地址。 |
如何为SSL VPN开放安全策略
SSL VPN支持的典型业务包括Web代理、端口转发、文件共享和网络扩展。
Web代理、端口转发、文件共享
Web代理、端口转发、文件共享三种业务的交互流程类似。移动办公用户首先通过HTTPS登录防火墙上的虚拟网关,然后浏览并访问业务资源。防火墙作为业务代理,通过HTTP、TCP、SMB/NFS协议跟服务器交互。
因此,首先要允许移动办公用户通过HTTPS从公网访问虚拟网关,然后开放防火墙到内网业务资源之间的业务访问。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区3 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Allow SSL tunnel |
untrust |
local |
any |
203.0.113.1/32 |
https (TCP: 443) |
permit |
102 |
Allow web proxy |
local |
trust |
any |
10.1.2.10/32 |
HTTP (TCP: 80) |
permit |
103 |
Allow port forwarding |
local |
trust |
any |
10.1.2.11/32 |
telnet (TCP: 23)1 |
permit |
104 |
Allow file sharing |
local |
trust |
any |
10.1.2.12/32 |
smb (TCP: 445) netbios-session (TCP: 139)2 |
permit |
1:此处以Telnet业务为例示意端口转发的安全策略。 2:此处以Windows平台下SMB文件共享为例,需要开放TCP 139、TCP 445端口。如果访问UNIX-like平台下NFSv4,则需要开放TCP 2049端口。 3:对于SSL隧道,其源地址是移动办公用户的公网地址,范围不可控,因此设置为any。从防火墙访问服务器的源地址是防火墙自身地址,指定为any即可。 |
网络扩展
移动办公用户首先需要通过HTTPS登录虚拟网关,并启用网络扩展功能。启动网络扩展功能以后,移动办公设备与虚拟网关之间会建立一条SSL VPN隧道,移动办公设备从虚拟网关地址池中获得一个私网IP地址,用于访问内网资源。移动办公用户的访问请求被封装在SSL中,发送到虚拟网关。虚拟网关解封装以后,再查找路由和安全策略,发送给服务器端。根据客户端的配置,SSL VPN隧道有两种:
- 可靠传输模式:使用TCP作为传输协议,SSL作为封装协议,即TCP 443端口。
- 快速传输模式:使用UDP作为传输协议,SSL作为封装协议,即UDP 443端口。
图1-10以可靠传输模式为例,简单示意了网络扩展业务的报文处理过程,其中报文结构为发送方向。
因此,首先要允许移动办公用户通过HTTPS登录虚拟网关,建立SSL隧道。根据客户端配置,SSL隧道可能使用TCP 443端口或者UDP 443端口。然后,允许解封装之后的报文访问服务器。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Allow SSL tunnel |
untrust |
local |
any |
203.0.113.1/32 |
https (TCP: 443) UDP: 4431 |
permit |
102 |
Allow network extension |
untrust |
trust |
10.1.3.1-10.1.3.1002 |
10.1.2.10/24 |
any3 |
permit |
1:仅当客户端选择快速传输模式时,才需要开放UDP 443端口。TCP 443端口在任何情况下都需要开放。如果修改了虚拟网关端口和快速通道端口号,请以实际配置为准。 2:网络扩展业务内层报文的源地址,是移动办公设备获取到的虚拟网关地址池的地址。 3:安全策略中指定的服务与具体的网络扩展业务有关,请根据实际业务配置。如果服务器端需要主动访问移动办公设备,还需要开放反向安全策略。 |
需要特别注意的是,在不同产品中,网络扩展业务内层报文的源安全区域有不同的判断原则。
场景 |
适用产品和版本 |
判断原则 |
---|---|---|
场景1 |
USG6000E系列,所有版本 USG6000系列,V50R005C00SPC200之后的版本(不含) |
移动办公用户访问的公网接口所在的安全区域。 如果移动办公用户从多个公网线路访问虚拟网关,则需要同时指定多个安全区域。 |
场景2 |
USG6000系列,V500R001版本~V500R005C00SPC200版本(含) USG9500系列,V500R001版本~V500R005C00SPC200版本(含) USG6000系列,V100R001C30SPC600及之后的版本(含) |
反查移动办公终端公网IP地址的路由,路由表下一跳接口所在的安全区域。 如果查不到路由,则网络扩展业务不通。 如果防火墙有多个公网路由,则需要同时指定多个安全区域。 |
场景3 |
USG6000系列,V100R001版本~V100R001C30SPC600版本(不含) |
当虚拟网关地址池与服务器地址位于同一个网段时,源安全区域为服务器所在安全区域。 当虚拟网关地址池与服务器地址位于不同网段时,需要手工配置一条目的地址为虚拟网关地址池的路由,出接口通常指定为公网接口,源安全区域即为此公网接口所在的安全区域。如果未配置路由,则网络扩展业务不通。 |
场景4 |
USG9500系列,V300R001版本 |
当虚拟网关地址池与服务器地址位于同一个网段时,源安全区域为服务器所在安全区域。 当虚拟网关地址池与服务器地址位于不同网段时,需要手工配置一条目的地址为虚拟网关地址池的路由,出接口通常指定为公网接口,源安全区域即为此公网接口所在的安全区域。如果未配置路由,则源安全区域为Local。 |