华为防火墙安全策略基础

本文最后更新于 2024年12月16日 下午

安全策略基础

安全策略的组成

每一条安全策略都是由匹配条件和动作组成的规则。防火墙接收到报文以后,将报文的属性与安全策略的匹配条件进行匹配。如果所有条件都匹配,则此报文成功匹配安全策略,防火墙按照该安全策略的动作处理这个报文及其后续双向流量。因此,安全策略的核心元素是匹配条件和动作。

匹配条件

  • 从哪里来到哪里去
  • 干什么
  • 什么时候

用户、终端设备、时间段、地址、地区、服务、应用、URL分类等匹配条件可以帮助防火墙精准地识别和过滤恶意流量。

动作

  • 允许

    • 流量通过
    • 可以执行内容安全检查
  • 禁止

    • 流量不通过
    • 可以选择发送反馈报文,快速结束会话

策略标识

  • 名称

    • 唯一标识安全策略
  • 描述

    • 记录安全策略的相关信息
  • 策略组

    • 简化管理相同目的的安全策略
  • 标签

    • 标识安全策略
    • 筛选具有相同特征的策略
    • 建议使用固定前缀和颜色区分不同动作

安全策略的命令行配置方式

1
2
3
4
5
6
7
8
9
10
<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

缺省策略和匹配规则

缺省策略

  • 出厂设置:存在一条显式的缺省策略default,默认禁止所有域间流量。
  • 位置:永远位于策略列表的最底端,不可删除。

安全策略匹配流程

  • 用户创建的安全策略按创建顺序排列,新策略默认位于策略列表底部,缺省策略之前。
  • 流量处理:防火墙接收到流量后,从上至下依次匹配安全策略。
  • 匹配成功:一旦某条安全策略匹配成功,停止匹配,按该策略指定的动作处理流量。
  • 未匹配:如果所有手工创建的安全策略都未匹配,则按缺省策略处理。

建议

  • 保持缺省策略
    • 建议保持缺省策略的动作为禁止,不要修改。
    • 缺省策略的目的是保证所有未明确允许的流量都被禁止,这是防火墙的基本设计理念。
  • 策略顺序
    • 安全策略的顺序至关重要。
    • 创建安全策略后,需根据业务需要手动调整策略顺序,以确保策略匹配结果符合预期。

本地安全策略和接口访问控制

针对从防火墙发出的流量、访问防火墙的流量的安全策略,叫做本地安全策略。
eg:ping防火墙接口,不需要专门写策略,允许指定协议即可

1
2
3
4
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防火墙的GE0/0/2接口,也需要开启GE0/0/1的接口访问控制功能,因为流量是从GE0/0/1进入防火墙的。

哪些业务需要开放安全策略

安全策略仅控制单播报文,你需要为所有合法的单播报文开放安全策略。缺省情况下,组播报文和广播报文不受防火墙的安全策略控制。防火墙直接转发组播报文和广播报文,不需要开放安全策略。

特别值得提醒的是:以上规则同样适用于网络互连互通的基础协议(包括BGP、BFD、DHCP、DHCPv6、LDP、OSPF),你需要为它们的单播报文配置安全策略。这是防火墙与路由器和交换机最大的不同。如果想要快速接入网络,你也可以使用命令undo firewall packet-filter basic-protocol enable取消这个控制。取消以后,上述协议的单播报文不受安全策略控制。

  • 华为防火墙作为状态检测防火墙,只需为报文发起方配置安全策略。

    • 收到发起方的首包报文后,执行安全策略检查并记录会话表。后续报文和回程报文只需命中会话表即可通过,不再检查安全策略。
    • 如果通信双方都可能发起连接,需要为双向报文分别配置安全策略。
  • 源和目的在同一个安全区域内的域内流量,默认不需要配置安全策略。

引用对象

什么是对象

对象是通用元素(如IP地址、服务、应用等)的集合。创建了集合形式的对象,你就可以在各种业务策略中直接引用该对象,而不需要一次次重复输入或选择。当需要修改多个业务策略的适用范围时,只需要修改其引用的对象,就可以快速完成多个策略的调整。使用对象,可以显著降低管理成本,提高维护效率。
地址对象

1
2
ip address-set Research_Dept type object //object表示地址对象
address 10 range 192.168.1.1 192.168.1.120 //指定IPv4地址段的起止地址
1
2
ip address-set Research_Dept type object 
address 11 192.168.1.1 0.0.0.255 //使用通配符指定地址范围
1
2
ip address-set Research_Dept type object 
address 11 192.168.1.1 mask 255.255.255.0 //使用掩码指定地址范围
1
2
ip address-set Research_Dept type object 
address 11 192.168.1.1 mask 24 //使用掩码长度指定地址范围

地址组

  • 地址组可以添加地址、地址对象或地址组,可以方便地管理复杂的地址范围。
    1
    2
    3
    4
    5
    ip address-set R&D_Dept type group //group表示地址组
    address address-set Research_Dept //将地址对象Research_Dept加入地址组R&D_Dept
    address address-set Test_Dept
    ip address-set Product type group
    address address-set R&D_Dept //将地址组R&D_Dept加入地址组Product

在安全策略中引用地址对象和地址组

eg:禁止地址组R&D_Dept访问DMZ区域的HR服务

1
2
3
4
5
6
7
security-policy 
rule name "Deny R&D_Dept to HR"
source-zone trust
destination-zone dmz
source-address address-set R&D_Dept //以地址组方式指定源地址
service HRService //自定义的HR服务
action deny

在此基础上排除某个地址

1
2
3
4
5
6
7
8
security-policy 
rule name "Deny R&D_Dept to HR"
source-zone trust
destination-zone dmz
source-address address-set R&D_Dept //以地址集方式指定源地址(192.168.1.1/24)
source-address-exclude 192.168.1.66 32 //排除此地址
service HRService //自定义的HR服务
action deny

在安全策略中引用服务和服务组

  • 服务是一个或多个应用协议的集合,由协议类型、源端口、目的端口等信息来指定
  • 服务组是服务的集合,服务组的成员可以是服务,也可以是服务组。

防火墙默认提供了常见的知名服务,即预定义服务,例如HTTP、FTP、Telnet、DNS等。在现实网络中,如果协议使用端口与预定义服务的端口不同时,需要创建自定义服务。例如,预定义服务ILS的端口号为1002,但是某些旧版软件可能使用389端口来接收ILS报文。此时,你需要自定义一个端口号为389的服务,并在安全策略中引用。

1
2
3
system-view
ip service-set new_ils type object //object表示自定义服务
service protocol tcp destination-port 389 //以目的端口指定ILS服务

自定义ICMP服务提高安全性

对于TCP、UDP和SCTP服务,可以通过源端口和目的端口来定义,通常只定义目的端口即可。
对于ICMP和ICMPv6服务,需要使用类型号和消息码来定义。ICMP服务常用于Ping和Tracert,一般直接使用预定义的ICMP服务即可。但是,ICMP服务也经常被攻击者用来窥测网络或建立隐蔽通道。因此,如果你对安全性有更高的要求,可以自定义服务,仅开放特定类型的ICMP报文。
以Ping为例,Ping需要使用两种类型的ICMP报文:Echo Request(Type 8)和Echo Reply(Type 0)。

1
2
3
system-view
ip service-set ICMP_Echo_Request type object
service protocol icmp icmp-type 8 //自定义ICMP type 8

eg:Trust区域的PC要Ping Untrust区域的交换机,安全策略配置如下

1
2
3
4
5
6
7
8
security-policy
rule name "Allow Ping"
source-zone trust
destination-zone untrust
source-address 10.1.1.10 24
destination-address 10.1.2.10 24
service ICMP_Echo_Request
action permit

在安全策略中引用应用

防火墙可以根据服务和服务组识别常用的应用协议。不过,识别服务依赖端口识别技术,其主要依据的是端口号,因此只能用于识别FTP、HTTP等基础协议。然而,大量应用承载在HTTP协议之上,仅识别出服务已经不能解决应用管控的问题了。

报文五元组:源IP地址、源端口、目的IP地址、目的端口、协议类型

业务感知技术:流量特征分析

其他引用类型

地区组、域名组、URL分类等

管理配置原则

使用安全区域划分网络

防火墙默认提供Untrust、Trust、DMZ,通常分别用于连接外网、内网和具有中间状态的DMZ区。缺省情况下,同一个安全区域内的设备可以互相访问,不同安全区域内的设备互访需要开放安全策略。这种设计在性能和安全性之间取得了良好的平衡。如果网络被入侵,攻击者只能访问同一个安全区域内的资源,这就把损失控制在一个比较小的范围内。攻击者必须突破安全区域和安全策略的控制,才能访问其他资源。

  • 对于彼此之间没有交互的系统,不要将它们置于同一子网中。否则,攻击者只要突破外围防御措施,就可以更轻松地访问所有内容。
  • 把具有相同安全级别的设备和业务资源部署在同一个安全区域中。
  • 对于需要交互的不同安全等级的系统,请部署在不同安全区域,并开放严格的安全策略。例如,所有对外提供服务的服务器(如Web服务器、邮件服务器)应该部署在一个专用区域(通常为DMZ),不应该被外网直接访问的服务器(如数据库)必须部署在内部服务器区。

遵循最小授权原则

1. 精确匹配条件

  • 避免使用”Any”作为匹配条件,以减少安全风险。
    • 限制到具体的源/目的IP地址和服务。
    • 设置尽可能多的匹配条件,如用户、应用等。

2. 对外开放服务

  • 如果需要对Internet开放服务:
    • 源IP可设置为”Any”,目的IP必须明确指定。
    • 避免开放所有服务或端口,以防止字典攻击和暴力破解。
  • 对于非公开服务:
    • 必须限定源IP地址范围。
    • 不允许任意源IP访问敏感业务。

3. 应用识别

  • 利用防火墙的应用识别能力,实现精细化管控。
    • 根据应用类型或标签设置安全策略,如允许带有“企业应用”标签的应用。

4. 临时安全策略

  • 为临时安全策略设置明确的生效时间,合作结束后自动失效。
    • 确保系统时间准确,推荐使用NTP同步时间。

5. 安全策略方向

  • 华为防火墙作为状态检测防火墙:
    • 只需允许业务的主动发起方建立连接。
  • 仅在通信双方都需要主动发起连接的情况下,配置双向安全策略。
  • 服务器的系统和软件更新:
    • 应通过统一的中央服务器获取。
    • 在安全策略中限制到具体的域名或应用。

顺序很重要,先精确后宽泛,先常用后少用

  • 始终将更精确的安全策略放在前面,将更宽泛的安全策略放在后面。
    • 对于这些宽泛的安全策略,要持续分析,逐渐精确化,或者停用
  • 将频繁命中的安全策略放在更前面。
    • 命中次数越多,说明匹配此策略的流量越多。
    • 让主要流量快速完成安全策略匹配,显著提高性能,这在高负载环境中尤为明显。

部署安全策略

策略顺序

  1. 白名单(允许列表)
    • 最优先级的策略是白名单,这些策略定义了哪些特定的流量是被明确允许的。这些策略应该尽可能具体,以确保只有合法的流量被允许通过。
  2. 业务相关的安全策略
    • 接下来是与业务相关的安全策略,这些策略基于业务需求和安全政策来允许或拒绝特定的流量。
  3. 黑名单(拒绝列表)
    • 黑名单策略通常位于白名单和业务相关策略之后。这些策略定义了哪些特定的流量是被明确拒绝的,例如已知的恶意IP地址、非法应用等。
  4. 临时安全策略
    • 临时安全策略通常位于策略列表的底部,作为最后的手段。这种策略允许所有流量通过,用于在配置初期或在分析阶段确保业务不受影响,同时收集流量数据以便于后续策略的精确配置。
  5. 默认策略(缺省策略)
    • 最后是默认策略,如果没有匹配到任何上述策略,流量将按照默认策略处理,通常是拒绝所有未明确允许的流量。
      因此,黑名单策略通常位于临时安全策略之前,而临时安全策略位于默认策略之前。这种顺序确保了只有在白名单和业务策略中明确允许的流量才能通过,而所有未明确允许的流量都将被默认策略拒绝。通过这种方式,可以在不影响业务运行的情况下,逐步构建和优化安全策略。

操作步骤

1.粗略确定白名单和黑名单
2.写入临时安全策略允许所有流量
3.迅速写入黑名单策略
4.写入白名单策略
5.精细化业务相关的安全策略以逐渐替代临时安全策略


华为防火墙安全策略基础
https://xinhaojin.github.io/2024/12/16/华为防火墙安全策略基础/
作者
xinhaojin
发布于
2024年12月16日
更新于
2024年12月16日
许可协议