安全策略基础
什么是安全策略?
安全策略(Security Policy)在安全领域具有双重含义。
宏观上,安全策略指的是一个组织为保证其信息安全而建立的一套安全需求、控制措施和流程要求。它不仅建立了信息安全的总体目标,定义了信息安全的管理结构,还提出了对组织成员的安全要求。这种安全策略通常以文档的形式存在,属于企业治理范畴。
具体到防火墙产品上,安全策略指的是用于保护网络的规则。它是由管理员在系统中配置,决定了哪些流量可以通过,哪些流量应该被阻断。安全策略是防火墙产品的一个基本概念和核心功能。防火墙通过安全策略来提供业务管控能力,以保证网络的安全。
为了避免歧义,通常把针对一个组织的安全策略称为信息安全策略(Information Security Policy),而把后者称为防火墙安全策略(Firewall Security Policy,有时也简称为防火墙策略Firewall Policy)、防火墙规则(Firewall Rule)。在本文档中,我们主要介绍防火墙安全策略,并简称为安全策略。
安全策略的组成
每一条安全策略都是由匹配条件和动作组成的规则。防火墙接收到报文以后,将报文的属性与安全策略的匹配条件进行匹配。如果所有条件都匹配,则此报文成功匹配安全策略,防火墙按照该安全策略的动作处理这个报文及其后续双向流量。因此,安全策略的核心元素是匹配条件和动作。
匹配条件
安全策略的匹配条件描述了流量的特征,用于筛选出符合条件的流量。安全策略的匹配条件包括以下要素。
- 谁:谁发出的流量,即用户。在Agile Controller单点登录场景下,还可以指定用户的接入方式、用户使用的终端设备类型。
- 从哪里来,到哪里去:流量的来源和目的,包括源/目的安全区域、源/目的IP地址、源/目的地区和VLAN。地区本质上是IP地址在地理区域上的映射。
- 干什么:访问的服务、应用或者URL分类。
- 什么时候:即时间段。
以上匹配条件,在一条安全策略中都是可选配置;但是一旦配置了,就必须全部符合才认为匹配,即这些匹配条件之间是“与”的关系。一个匹配条件中如果配置了多个值,多个值之间是“或”的关系,只要流量匹配了其中任意一个值,就认为匹配了这个条件。
一条安全策略中的匹配条件越具体,其所描述的流量越精确。你可以只使用五元组(源/目的IP地址、端口、协议)作为匹配条件,也可以利用防火墙的应用识别、用户识别能力,更精确、更方便地配置安全策略。
动作
安全策略的基本动作有两个:允许和禁止,即流量能否通过。
- 如果动作为允许,你还可以对此符合此策略的流量执行进一步的内容安全检查。华为防火墙的内容安全检查功能包括反病毒AV、入侵防御IPS、URL过滤、文件过滤、内容过滤、应用行为控制、邮件过滤、APT防御、DNS过滤等。每项内容安全检查都有各自的适用场景和处理动作。防火墙如何处理流量,由所有内容安全检查的结果共同决定。
- 如果动作为禁止,你还可以选择发送向服务端或客户端反馈报文,快速结束会话,减少系统资源消耗。
用户、终端设备、时间段、地址、地区、服务、应用、URL分类等匹配条件,以及内容安全检查所需的各种配置文件,在防火墙上都以对象的形式存在。你可以先创建对象,然后在多个安全策略中引用。
策略标识
为了便于管理,安全策略还提供了如下属性。
- 名称:用于唯一标识一条安全策略,不可重复。为每一条安全策略指定一个有意义的名称(如安全策略的目的),能提高维护工作效率。
- 描述:用于记录安全策略的其他相关信息。例如,你可以在这个字段记录触发此安全策略的的申请流程编号。这样,在例行审计时可以快速了解安全策略的背景,比如什么时间引入此安全策略,谁提出的申请,其有效期多久,等等。
- 策略组:把相同目的的多条安全策略加入到一个策略组中,可以简化管理。你可以移动策略组,启用/禁用策略组等。
- 标签:标签是安全策略的另一种标识方式,你可以给一条安全策略添加多个标签,通过标签可以筛选出具有相同特征的策略。例如,你可以根据安全策略适用的应用类型,添加高风险应用、公司应用等标签。在为安全策略设置标签时,建议使用固定的前缀,如用“SP_”代表安全策略,并用颜色区分不同的动作。这会使标签更容易理解。
安全策略的配置方式
华为防火墙提供了多种配置方式,你可以选择命令行、Web界面或者北向接口(RESTCONF和NETCONF)来配置安全策略。接下来,我们将以一个实例来展示最常用的Web界面和命令行配置。
例如:为了允许Trust安全区域内的、192.168.1.0/24和192.168.2.0/24网段的设备能够正常上网,需要创建一条表1-1所示的安全策略。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
用户 |
服务 |
动作 |
---|---|---|---|---|---|---|---|---|
101 |
Allow access to the Internet |
trust |
untrust |
192.168.1.0/24 192.168.2.0/24 |
any |
any |
http https |
permit |
使用Web界面配置如下:
使用命令行配置如下:
<sysname> system-view [sysname] security-policy [sysname-policy-security] rule name "Allow access to the Internet" [sysname-policy-security-rule-Allow access to the Internet] source-zone trust [sysname-policy-security-rule-Allow access to the Internet] destination-zone untrust [sysname-policy-security-rule-Allow access to the Internet] source-address 192.168.1.0 mask 24 [sysname-policy-security-rule-Allow access to the Internet] source-address 192.168.2.0 mask 24 [sysname-policy-security-rule-Allow access to the Internet] service http https [sysname-policy-security-rule-Allow access to the Internet] action permit [sysname-policy-security-rule-Allow access to the Internet] quit [sysname-policy-security]
缺省策略与匹配规则
防火墙出厂存在一条显式的缺省策略default,默认禁止所有的域间流量。缺省策略永远位于策略列表的最底端,且不可删除。
用户创建的安全策略,按照创建顺序从上往下排列,新创建的安全策略默认位于策略列表底部,缺省策略之前。防火墙接收到流量之后,按照安全策略列表从上向下依次匹配。一旦某一条安全策略匹配成功,则停止匹配,并按照该安全策略指定的动作处理流量。如果所有手工创建的安全策略都未匹配,则按照缺省策略处理。
基于以上两点:
- 建议保持缺省策略的动作为禁止,不要修改。缺省策略的目的,是保证所有未明确允许的流量都被禁止,这是防火墙作为一个安全产品的基本设计理念。
- 安全策略的顺序至关重要。在创建安全策略之后,你需要根据业务需要手动调整安全策略的顺序,以保证策略匹配结果符合预期。
例如:安全策略列表中已经有一条名为“Block high-risk ports”的安全策略101,阻断了所有高风险服务。现在,你要为来自Trust区域的管理终端访问位于DMZ区域的服务器开放RDP远程桌面服务,新增了一条名为“RDP for admin”的安全策略201。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
用户 |
服务 |
动作 |
---|---|---|---|---|---|---|---|---|
101 |
Block high-risk ports |
any |
any |
any |
any |
any |
自定义服务:High-risk ports |
deny |
…… |
||||||||
201 |
Allow RDP for admin |
trust |
dmz |
自定义地址组:Management terminal |
自定义地址组:Server farm |
any |
rdp-tcp rdp-udp |
permit |
202 |
default |
any |
any |
any |
any |
any |
any |
deny |
因为安全策略101完全包含了安全策略201的匹配条件,按照安全策略的匹配规则,安全策略201永远也不会被命中。来自Trust区域的远程桌面访问命中安全策略101,就按照其动作被阻断了。因此,新增安全策略201之后,你需要手动调整其顺序,把它放到安全策略101前面。调整后安全策略的序号自动变化。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
用户 |
服务 |
动作 |
---|---|---|---|---|---|---|---|---|
101 |
Allow RDP for admin |
trust |
dmz |
自定义地址组:Management terminal |
自定义地址组:Server farm |
any |
rdp-tcp rdp-udp |
permit |
102 |
Block high-risk ports |
any |
any |
any |
any |
any |
自定义服务:High-risk ports |
deny |
…… |
||||||||
202 |
default |
any |
any |
any |
any |
any |
any |
deny |
本地安全策略和接口访问控制
如前所述,防火墙作为一种安全产品,其基本设计理念就是管理网络中的业务,决定哪些流量可以通过,哪些不行。这里说的业务,也包括从防火墙发出的流量、访问防火墙的流量。针对这些流量的安全策略,其源安全区域或目的安全区域为local(代表防火墙自身),因此也叫本地安全策略。
如图1-2所示,从管理终端Ping防火墙的接口地址,是访问防火墙的流量。从防火墙Ping服务器的地址,属于从防火墙发出的流量。为它们开放的安全策略即为本地安全策略(表1-4中编号101、102)。为了对比,这里也提供了从管理终端Ping服务器的安全策略(103)。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
用户 |
服务 |
动作 |
---|---|---|---|---|---|---|---|---|
101 |
Allow Mgt terminal ping firewall |
trust |
local |
10.1.1.10/24 |
10.1.1.1/24 |
any |
icmp |
permit |
102 |
Allow Firewall ping server |
local |
untrust |
10.1.2.1/24 |
10.1.2.10/24 |
any |
icmp |
permit |
103 |
Allow Mgt terminal ping server |
trust |
untrust |
10.1.1.10/24 |
10.1.2.10/24 |
any |
icmp |
permit |
是的,为了定位网络问题,你需要在防火墙上专门开放安全策略。这确实有一点复杂,但是安全。
interface GigabitEthernet 0/0/1 ip address 10.1.1.1 255.255.255.0 service-manage enable //开启接口的访问控制功能。 service-manage ping permit //允许通过Ping访问此接口。
缺省情况下,防火墙带外管理口MGMT接口已经启用接口访问控制功能,并且允许通过HTTP、HTTPS、Ping、SSH、Telnet、NETCONF和SNMP访问防火墙。其他接口也启用了接口访问控制功能,但是未允许任何协议。
需要注意的是,接口访问控制功能优先于安全策略。举例来说,如果只启用了接口的访问控制功能,而未允许通过Ping访问此接口,即使配置了安全策略101,也无法访问防火墙。如果启用了接口下的Ping访问功能,不需要配置安全策略101就可以访问防火墙了。因此,如果需要通过上述协议访问防火墙,你有两个选择:
- 选择接口访问控制:启用接口访问控制功能,并允许指定的协议。
- 选择安全策略:关闭接口访问控制功能,为访问指定协议的流量开放精细的安全策略。
另外,如果想要从管理终端Ping防火墙的GE0/0/2接口,也需要开启GE0/0/1的接口访问控制功能,因为流量是从GE0/0/1进入防火墙的。
哪些业务需要开放安全策略
你必须知道,在华为防火墙的实现中,并不是所有业务都需要开放安全策略。了解这些基本规则,有助于规避可能的问题。
- 安全策略仅控制单播报文,你需要为所有合法的单播报文开放安全策略。缺省情况下,组播报文和广播报文不受防火墙的安全策略控制。防火墙直接转发组播报文和广播报文,不需要开放安全策略。
特别值得提醒的是:以上规则同样适用于网络互连互通的基础协议(包括BGP、BFD、DHCP、DHCPv6、LDP、OSPF),你需要为它们的单播报文配置安全策略。这是防火墙与路由器和交换机最大的不同。如果想要快速接入网络,你也可以使用命令undo firewall packet-filter basic-protocol enable取消这个控制。取消以后,上述协议的单播报文不受安全策略控制。
- 对于二层组播报文,你也可以启用安全策略控制功能。USG6000/USG6000E产品,使用命令firewall l2-multicast packet-filter enable启用此功能以后,你需要为二层组播报文(二层ND组播报文除外)配置安全策略。
- 对于访问防火墙的管理协议,如果启用了接口访问控制,不需要配置安全策略。接口访问控制适用于常见的管理协议,优先级高于安全策略,具体请参考本地安全策略和接口访问控制。
- 对于多通道协议(比如FTP),只需要为控制通道配置安全策略。众所周知,多通道协议需要在控制通道中动态协商出数据通道的地址和端口,然后根据协商结果建立数据通道连接。你需要为多通道协议启用ASPF功能,防火墙从协商报文中记录地址和端口信息,生成Server-map表项,并根据Server-map表转发报文。Server-map表相当于是一个动态创建的安全策略。
- 华为防火墙是状态检测防火墙,你只需要为报文发起方配置安全策略。防火墙收到发起方的首包报文以后,执行安全策略检查,记录会话表。后续报文和回程报文只需要命中会话表即可通过,不再检查安全策略。如果通信双方都可能发起连接,你需要为双向报文分别配置安全策略。
- 源和目的在同一个安全区域内的域内流量,默认不需要配置安全策略。按照安全区域的设计理念,域内的设备具有相同的安全等级,域内流量缺省转发,不需要安全检查。你可以为某些域内流量配置安全策略(源/目的安全区域为同一个),阻断特定的流量,或者为某些放行的流量添加内容安全检查。如果你有更高的安全需求,也可以使用default packet-filter intrazone enable命令,让域内流量受缺省安全策略控制。在这种情况下,你需要为所有域内流量配置安全策略。
- 防火墙转发流程中跳过安全策略检查的业务,不需要配置安全策略。例如,当防火墙配置了认证策略,且用户访问请求触发Portal认证时,不需要为Portal认证开放安全策略。再如,防火墙双机热备组网中,两台防火墙之间的HRP报文不需要配置安全策略。
毋庸置疑的是,防火墙的安全性带来了一定的复杂度,而配置和管理的复杂性也会破坏安全性。你需要熟悉并理解这些规则和配置开关,并根据自己的业务需求和安全需求,找到中间的平衡点。
如何配置安全策略
安全策略的配置和管理关系到业务的正常运行和网络的安全。在开始配置安全策略之前,强烈建议你仔细阅读安全策略管理与配置的原则,理解这些宏观的原则和建议。接下来,了解如何开始部署安全策略,它提供了一个低风险的方法,一个在不影响业务的情况下,逐步精确安全策略的流程。
深刻理解和掌握业务内部的协议交互流程,对配置安全策略至关重要。开放安全策略的前提是你足够了解业务,包括业务本身的基本原理(协议、端口、报文交互过程)、业务在网络中的访问关系(源/目的IP地址、源/目的安全区域)。以下TechNotes提供了常见业务的配置指导,由此展示分析业务和配置安全策略的方法。更多业务的安全策略配置,需要你结合实际情况自行分析。
- 如何为管理协议开放安全策略,包括Telnet、FTP/TFTP、SSH(STelnet、SFTP、SCP)、Ping和Tracert、SNMP、HTTP/HTTPS、RESTCONF、NETCONF、日志
- 如何为基础协议开放安全策略,包括DHCP、OSPF、BGP、BFD、LDP。
- 如何为VPN开放安全策略,包括IPSec VPN、GRE、L2TP VPN、SSL VPN。
- 如何为NAT开放安全策略,包括源NAT和目的NAT。
- 如何为SLB开放安全策略,包括四层负载均衡、七层负载均衡、SSL卸载等。