Skip to content

防火墙访问控制实战:分场景策略设计(华为 USG) ​

访问控制是防火墙的灵魂,也是项目中最耗工时的部分——拿到客户的业务需求表格后,如何把它变成一套可验证、可审计、可维护的安全策略?本笔记以华为 USG 为例,先讲透策略裁决机制与工程方法论,再按 7 个真实项目场景逐一给出"需求分析 → 策略设计表 → Web 配置 → 等效 CLI → 验证"的完整实战。拓扑沿用 12-防火墙 与 13-防火墙VPN互联 的企业出口,可视为同一个项目的"策略深化阶段"。


📌 核心概念 ​

0.1 一次流量过墙的完整裁决链 ​

数据包到达防火墙后,不是直接查安全策略,而是走一条优先级递减的裁决链:

 收到报文
   │
   ├─ ① 黑名单(blacklist)命中 → 直接丢弃,不看任何策略
   ├─ ② 白名单(whitelist)命中 → 直接放行,跳过大部分检测
   ├─ ③ 查会话表 → 命中 → 按会话转发(回包不再查策略)
   ├─ ④ 安全策略(首包)自上而下逐条匹配 → 命中即执行
   │        └─ 动作 permit → 还可叠加 IPS/AV/URL 等内容检测(UTM)
   └─ ⑤ 默认策略(default,建议 deny)兜底

要点:黑名单/白名单优先于安全策略;策略只对首包生效,后续包走会话表——这解释了后文"改了策略却不生效"的经典现象。

0.2 策略的匹配要素 ​

类别要素说明
基础五要素源/目的安全区域、源/目的地址、服务(协议+端口)任何策略必配(区域是方向,地址/服务是筛选)
扩展要素时间段(time-range)上班/下班、工作时间差异化管理
用户/用户组依赖认证策略先识别用户(AD/本地/RADIUS)
应用依赖应用识别特征库,同端口区分业务(Web vs P2P)
动作允许 / 拒绝拒绝可记录日志(发现攻击尝试)

匹配规则:一条策略内各条件是与关系(全部满足才命中);多条策略间自上而下先到先得;时间段支持周期(每周工作日)与绝对(某日期段),多条时间或关系。

0.3 工程方法论:从需求表到策略表 ​

客户需求 → 策略的四步转换(项目交接必备):

Step 1|需求收集表(让客户按此模板填,拒绝口头需求):

申请部门源(网段/用户)目的(服务器/网段)服务(协议/端口)时间业务理由工单号
研发部10.1.20.0/24代码仓库 10.1.2.10TCP 8443工作日全天日常开发CHG-2026-041

Step 2|对象化:地址→ip address-set、服务→ip service-set、时间→time-range。禁止在策略里裸写 IP——改网段只改对象,策略零改动。

Step 3|命名规范:序号_源_目的_业务(如 30_fin_bank_https),或挂工单号;拒绝类加 _deny 后缀。

Step 4|排序原则:黑名单 → 显式拒绝(置顶,为看日志)→ 精细放行 → 宽泛放行 → 默认 deny。

0.4 贯穿拓扑:部门化改造后的企业出口 ​

                      untrust(互联网)
                          │
   vpn(分支/合作伙伴)──[FW1 USG]── local(设备管理面)
                          │
     dmz 服务器区:Web 10.1.2.100 / App 10.1.2.200 / DB 10.1.2.10
                          │
     trust 办公区(按部门划网段):
       行政 10.1.10.0/24 | 研发 10.1.20.0/24 | 财务 10.1.30.0/24 | 运维 10.1.40.0/24(堡垒机 10.1.40.10)

📖 七大场景实战 ​

场景一:办公区上网管控(trust → untrust) ​

【项目背景】 客户要求:全员可上网;财务部工作时间只能访问网银和邮件;研发部禁止上班刷视频玩游戏;其余部门放行 Web 类应用。

【策略设计】

序策略名源目的条件动作日志
110_rd_deny_media研发网段any应用=流媒体/游戏类拒绝✅
220_fin_bank_worktime财务网段网银地址集+邮件服务器服务 https/smtps/imap,work_hours允许—
390_office_web_any办公全网段any服务 dns/http/https允许—

【Web 配置】(策略 > 安全策略 > 新建;对象先行)

  1. 对象 > 地址:新建 dept_rd(10.1.20.0/24)、dept_fin(10.1.30.0/24)、bank_sites(网银地址集);
  2. 对象 > 时间:新建 work_hours(周期时间段,周一至周五 09:00~18:00);
  3. 策略 > 安全策略:按上表逐条新建——策略编辑页中"源地址"选地址对象、"时间段"选时间对象、"服务"选预定义或自定义服务;拒绝策略勾选"记录策略命中日志"。

【等效 CLI】

[FW1] time-range work_hours 09:00 to 18:00 working-day
[FW1] ip address-set dept_fin type object
[FW1-address-set-dept_fin] address 0 10.1.30.0 mask 24
[FW1-address-set-dept_fin] quit
[FW1] ip address-set dept_rd type object
[FW1-address-set-dept_rd] address 0 10.1.20.0 mask 24
[FW1-address-set-dept_rd] quit
[FW1] security-policy
[FW1-policy-security] rule name 10_rd_deny_media
[FW1-policy-security-rule-10_rd_deny_media] source-zone trust
[FW1-policy-security-rule-10_rd_deny_media] destination-zone untrust
[FW1-policy-security-rule-10_rd_deny_media] source-address address-set dept_rd
[FW1-policy-security-rule-10_rd_deny_media] application app-group Media-Streaming   // 名称以设备应用库为准
[FW1-policy-security-rule-10_rd_deny_media] action deny
[FW1-policy-security-rule-10_rd_deny_media] policy logging        // 新版本;旧版本为 log enable
[FW1-policy-security-rule-10_rd_deny_media] quit
[FW1-policy-security] rule name 20_fin_bank_worktime
[FW1-policy-security-rule-20_fin_bank_worktime] source-zone trust
[FW1-policy-security-rule-20_fin_bank_worktime] destination-zone untrust
[FW1-policy-security-rule-20_fin_bank_worktime] source-address address-set dept_fin
[FW1-policy-security-rule-20_fin_bank_worktime] time-range work_hours
[FW1-policy-security-rule-20_fin_bank_worktime] destination-address address-set bank_sites
[FW1-policy-security-rule-20_fin_bank_worktime] service https
[FW1-policy-security-rule-20_fin_bank_worktime] service smtps
[FW1-policy-security-rule-20_fin_bank_worktime] action permit
[FW1-policy-security-rule-20_fin_bank_worktime] quit
[FW1-policy-security] rule name 90_office_web_any
[FW1-policy-security-rule-90_office_web_any] source-zone trust
[FW1-policy-security-rule-90_office_web_any] destination-zone untrust
[FW1-policy-security-rule-90_office_web_any] service dns
[FW1-policy-security-rule-90_office_web_any] service http
[FW1-policy-security-rule-90_office_web_any] service https
[FW1-policy-security-rule-90_office_web_any] action permit

【验证】 研发网段访问视频站被断开且 监控 > 日志 出现策略命中记录;财务网段 19:00 访问网银被默认策略拒绝(时间段外);行政网段上网正常。

场景二:DMZ 服务器对外发布管控(untrust → dmz) ​

【项目背景】 Web 服务器经 NAT Server 发布(12 篇阶段③),上线后扫描不断。客户追加要求:仅合作伙伴固定出口 IP 可访问后台管理入口,公网只开放 443,并对攻击源快速封禁。

【策略设计】

序策略名源目的服务动作日志
105_web_public_httpsanyWeb 10.1.2.100(转换后私网地址!)TCP 443允许✅
208_admin_partner_only合作伙伴出口 203.0.113.8App 10.1.2.200TCP 8443允许✅
309_scan_deny_top已知攻击源地址集DMZ 全段any拒绝✅(置顶)

配合全局黑名单对高频扫描源一键封禁(优先于所有策略):

[FW1] firewall blacklist item source-ip 198.51.100.66
[FW1] firewall blacklist item source-ip 203.0.113.99

【Web 配置】:对象 > 地址 建 partner_hq(203.0.113.8/32)与 attacker_list;策略按表新建;黑名单在 系统 > 安全防护 > 黑名单(或攻击防范联动自动拉黑,随版本位置不同)。

【CLI 要点】(策略结构同场景一,此处列差异项)

[FW1-policy-security] rule name 08_admin_partner_only
[FW1-policy-security-rule-08_admin_partner_only] source-zone untrust
[FW1-policy-security-rule-08_admin_partner_only] destination-zone dmz
[FW1-policy-security-rule-08_admin_partner_only] source-address 203.0.113.8 mask 32
[FW1-policy-security-rule-08_admin_partner_only] destination-address 10.1.2.200 mask 32
[FW1-policy-security-rule-08_admin_partner_only] service service-set tcp_8443
[FW1-policy-security-rule-08_admin_partner_only] action permit

【验证】 display firewall session table 观察命中会话;从非授权 IP 访问 8443 落入默认拒绝并出日志;黑名单 IP 连 ping 都不通(策略都不查)。

⚠️ 两个衔接点:①策略目的地址填 NAT 转换后的私网地址(12 篇重点难点);②场景一的 90_office_web_any 是 trust→untrust 方向,与本场景 untrust→dmz 互不干扰——区域对就是"方向"。

场景三:内网区域间最小权限(trust → dmz) ​

【项目背景】 内网办公区直连 DMZ 数据库曾引发误操作。安全整改:办公区只能访问 Web/App 的业务端口;数据库端口仅运维网段且只允许堡垒机 IP 访问;Redis 等高危端口全网禁止直连。

【策略设计】

序策略名源目的服务动作
120_pms_all_mgmt堡垒机 10.1.40.10DMZ 全段SSH(22)/RDP(3389)允许
222_ops_db_maintain运维网段 10.1.40.0/24DB 10.1.2.10MySQL(3306)/Oracle(1521)允许
325_office_biz_ports办公三部门Web/AppTCP 443/8080允许
429_trust_dmz_deny_anytrust 剩余DMZ 全段any拒绝

【Web 配置】:对象 > 服务 新建 tcp_8443、db_ports(3306/1521)、mgmt_ports(22/3389);策略按表;29 兜底拒绝放最后,给安全审计留命中日志。

【等效 CLI】

[FW1] ip service-set db_ports type object
[FW1-service-set-db_ports] service 0 protocol tcp destination-port 3306
[FW1-service-set-db_ports] service 1 protocol tcp destination-port 1521
[FW1-service-set-db_ports] quit
[FW1] ip service-set mgmt_ports type object
[FW1-service-set-mgmt_ports] service 0 protocol tcp destination-port 22
[FW1-service-set-mgmt_ports] service 1 protocol tcp destination-port 3389
[FW1-service-set-mgmt_ports] quit
[FW1] security-policy
[FW1-policy-security] rule name 20_pms_all_mgmt
[FW1-policy-security-rule-20_pms_all_mgmt] source-zone trust
[FW1-policy-security-rule-20_pms_all_mgmt] destination-zone dmz
[FW1-policy-security-rule-20_pms_all_mgmt] source-address 10.1.40.10 mask 32
[FW1-policy-security-rule-20_pms_all_mgmt] service service-set mgmt_ports
[FW1-policy-security-rule-20_pms_all_mgmt] action permit
[FW1-policy-security-rule-20_pms_all_mgmt] quit

【长连接补充】 数据库/中间件长连接默认几分钟无流量即被会话表老化踢掉,应用报"连接被重置"。两类解法:

[FW1] firewall session aging-time service-set db_ports 18000   // 按服务延长老化(命令形态以版本为准)
# 或全局:firewall session aging-time tcp 3600

(按服务精细设置命令随版本略有差异,核心思路:只对明确的长连接业务放宽,不开全局大老化时间。)

场景四:分支与合作伙伴 VPN 接入管控(vpn → 内部) ​

【项目背景】 延续 13 篇:自有分支 A/B 需访问办公区与 DMZ 业务;新接入的合作伙伴分支(10.9.1.0/24)只允许访问 App 服务器的 8443,其余全禁。

【策略设计】

序策略名源区域目的区域明细动作
130_branch_to_bizvpn(自有分支网段组)trust / dmz业务端口允许
232_partner_app_onlyvpn(伙伴 10.9.1.0/24)dmz仅 App 10.1.2.200:8443允许
339_vpn_deny_anyvpntrust/dmzany拒绝

【差异 CLI】

[FW1] security-policy
[FW1-policy-security] rule name 32_partner_app_only
[FW1-policy-security-rule-32_partner_app_only] source-zone vpn
[FW1-policy-security-rule-32_partner_app_only] destination-zone dmz
[FW1-policy-security-rule-32_partner_app_only] source-address 10.9.1.0 mask 24
[FW1-policy-security-rule-32_partner_app_only] destination-address 10.1.2.200 mask 32
[FW1-policy-security-rule-32_partner_app_only] service service-set tcp_8443
[FW1-policy-security-rule-32_partner_app_only] action permit

【验证】 伙伴网段 ping 总部办公网关不通(ICMP 未放行=正常),telnet 10.1.2.200 8443 通;自有分支业务正常。最小权限验证法:从"应拒绝清单"逐项测,而不是只测能通的。

场景五:基于用户的访问控制(认证联动) ​

【项目背景】 DHCP 环境下按 IP 管不住"谁";客户要求:访客 WiFi 用户只准上网;内部员工按域账号识别,权限跟随人走(换工位权限不变)。

【设计要点】

  1. 认证策略(策略 > 认证策略)先识别用户:办公网段对接 AD 单点登录或 Portal 认证,访客网段走本地访客账号;
  2. 安全策略即可引用用户/用户组作为源条件(Web:策略编辑页"用户"框选用户组;CLI 用户条件的关键字随版本变化,以命令参考为准,Web 下发最稳);
  3. 典型三条:guest_web_only(访客组→untrust 仅 Web)、staff_biz_full(员工组→trust/dmz 业务)、未认证流量落默认拒绝(或单独放通到认证门户)。

【逻辑示意】

访客组(guest) ──→ 只能 trust→untrust 的 Web 服务
员工组(staff) ──→ 办公业务 + 服务器区业务端口
未识别用户    ──→ 触发 Portal/AD 认证 → 认证后重新匹配策略

【验证】 Web:监控 > 用户 可见在线用户与所属组;同一 IP 换账号登录后权限即时变化(新会话生效)。

场景六:管理面访问控制(local 区域) ​

【项目背景】 等保整改:设备管理只允许运维网段;SNMP 只对网管服务器开;Web/SSH 管理禁止暴露在 untrust。

【设计清单】

项配置位置
管理员绑定信任主机每个管理员账号绑定 10.1.40.0/24系统 > 管理员
接口收敛GE1/0/1(untrust)不开任何 service-manage;管理口只留 https/ssh网络 > 接口
SNMP 收敛只读团体字+指定 trap 目标 10.1.40.20系统 > SNMP
local 域策略untrust→local 仅放 VPN 相关(13 篇),其余拒绝策略 > 安全策略
[FW1] snmp-agent
[FW1-snmp-agent] snmp-agent community read cipher Nms@2026
[FW1-snmp-agent] snmp-agent target-host trap-hostname nms address 10.1.40.20 udp-port 162 params securityname Nms@2026

【验证】 从办公网段 10.1.10.x 尝试登录 Web 被拒(非信任主机);10.1.40.x 正常;外网端口扫描不到 8443/22。

场景七:服务器出向管控(dmz → untrust)——防外联 ​

【项目背景】 攻防演练发现:Web 服务器被种 webshell 后主动外联 C2。整改:DMZ 出向默认全禁,仅放行业务必需(DNS 指定服务器、支付平台回调地址)。

【策略设计】

序策略名源目的服务动作日志
150_dmz_dns_outDMZ 全段223.5.5.5 / 114.114.114.114UDP 53允许—
252_dmz_pay_callbackApp 10.1.2.200支付平台地址集TCP 443允许✅
359_dmz_deny_outDMZ 全段anyany拒绝✅(异常外联就靠它发现)
[FW1] security-policy
[FW1-policy-security] rule name 59_dmz_deny_out
[FW1-policy-security-rule-59_dmz_deny_out] source-zone dmz
[FW1-policy-security-rule-59_dmz_deny_out] destination-zone untrust
[FW1-policy-security-rule-59_dmz_deny_out] action deny
[FW1-policy-security-rule-59_dmz_deny_out] policy logging

配套:开启流量日志集中外发(log type traffic enable + 日志主机,见 12 篇阶段⑤),59_dmz_deny_out 的命中日志就是免费的外联检测器——定期review 异常目的地址。

综合策略全景表(该项目 FW1 最终态,自上而下) ​

序策略名方向(源区→目区)要点动作
黑blacklist全局攻击源一键封禁丢
0909_scan_deny_topuntrust→dmz已知攻击源拒绝
1010_rd_deny_mediatrust→untrust研发禁流媒体(应用维度)拒绝
20/22/25/29场景三 4 条trust→dmz堡垒机/运维库/办公业务/兜底拒绝混合
05/08场景二 2 条untrust→dmz发布服务+伙伴后台允许
30/32/39场景四 3 条vpn→内部分支按需+伙伴隔离+兜底混合
50/52/59场景七 3 条dmz→untrustDNS/回调/防外联兜底混合
2020_fin_bank_worktimetrust→untrust财务工作时间网银允许
9090_office_web_anytrust→untrust全员 Web 上网允许
默认default全部无策略即拒绝拒绝

排序心法:同方向内"拒绝置顶看日志、精细放行居中、宽泛放行垫后";跨方向互不影响但表格统一维护。

验证与排错 ​

[FW1] display security-policy rule all          # 全量策略+命中统计
[FW1] display firewall session table verbose    # 会话落在哪条策略/是否被 NAT
[FW1] display firewall blacklist item           # 黑名单表项
[FW1] reset firewall session table              # 清会话(策略修改后让老连接按新策略重建)
现象原因与处置
改了策略"不生效"老会话仍走会话表 → reset firewall session table 或等老化;只影响新建连接
明明放行了却不通策略排在同方向更严策略之后被先命中 → 调整顺序;或查目的地址是否该填 NAT 后私网地址
时间策略"提前/滞后"设备时钟漂移 → NTP 校准,display clock
用户策略不命中用户未认证/组映射错 → 监控 > 用户 确认在线身份
拒绝了但没日志拒绝策略未开 policy logging;或默认策略丢弃默认不记
长连接业务随机断会话老化太短 → 场景三的长连接处理

💡 重点难点 ​

  1. 裁决链顺序:黑名单→白名单→会话表→安全策略→默认策略;"策略不生效"八成是命中链里前一项先处理了;
  2. 策略只管首包:后续包走会话表——修改策略后必须清会话/等老化才对老连接生效;
  3. 对象化是可维护性的底线:地址/服务/时间/用户四个维度全部对象化,需求变更只改对象;
  4. 显式拒绝的价值:置顶的 deny + policy logging 是攻击发现器,比静默丢弃强得多;
  5. 方向=区域对:trust→untrust 与 untrust→trust 是两条独立策略,别指望一条管双向;
  6. NAT 与策略的匹配时序:目的 NAT(NAT Server)后策略匹配私网地址,源 NAT 场景按真实源地址匹配;
  7. 用户/应用维度依赖前置条件:没有认证就没有用户,没有特征库 License 就没有应用识别——条件配了也不生效;
  8. 最小权限的验证方法:先列"应拒绝清单"逐项验证,再测放行项;只测通不测拒=没验收;
  9. 宽泛策略是技术债:any to any permit 类策略上线一时爽,审计火葬场——新策略入库前先过命名规范与工单映射检查;
  10. 防外联兜底:dmz→untrust 显式 deny + 日志,是零成本的外联检测手段,攻击演练必备项。

🔗 延伸拓展 ​

  • UTM 联动:permit 之后的深度检测(IPS/AV/URL 过滤)——12-防火墙阶段④;
  • 策略治理:定期导出 display security-policy rule all 做命中审计,长期零命中的策略走下线流程(华为官方《如何优化安全策略》专文,见参考);
  • 等保 2.0 边界防护检查项:默认拒绝、访问控制粒度(端口级)、管理面收敛、日志留存 6 个月——本文七个场景正对应检查表;
  • 自动化:安全策略支持 RESTCONF/NETCONF 北向接口,适合与工单系统联动做"申请-审批-下发-回收"闭环;
  • 对照系列笔记:10-ACL访问控制(路由器/交换机侧 ACL,与防火墙策略的思想对照)。

面试高频问答 ​

  1. 防火墙安全策略的匹配流程? 黑名单/白名单优先,其后会话表,首包自上而下匹配安全策略、命中即执行,最后 default 兜底(建议 deny)。
  2. 黑名单、白名单、安全策略拒绝三者区别? 黑名单全局直接丢、优先级最高;白名单直接放行跳过部分检测;策略 deny 只对该策略匹配范围的流量生效且可记录日志。
  3. 为什么改了策略老连接还按旧行为走? 策略只对首包生效,已建立连接按会话表转发;需 reset 会话表或等老化。
  4. 基于用户的策略如何生效? 认证策略先触发用户认证(本地/AD/RADIUS),识别后安全策略按用户/用户组条件匹配;未认证流量不命中用户条件。
  5. 时间段策略的匹配规则? 周期与绝对时间段多条之间"或"关系;依赖设备时钟准确,生产必须 NTP。
  6. 办公区到 DMZ 的最小权限怎么设计? 按系统拆分策略:业务端口放行全员、管理端口仅堡垒机、数据库仅运维网段、高危端口显式拒绝+日志、最后兜底 deny。
  7. 如何用安全策略发现服务器外联? dmz→untrust 显式 deny + policy logging,命中日志即外联行为证据,配合日志平台聚合分析。
  8. NAT Server 场景下放行策略怎么写? 目的地址填转换后的私网地址;公网映射地址只出现在 NAT 配置里,不出现在策略里。
  9. 策略数量很多时如何优化? 对象化合并同类项(地址组/服务组)、按命中统计清理僵尸策略、宽泛策略收敛为对象化精确策略。
  10. 防火墙策略与路由器 ACL 的区别? 策略基于区域+状态检测(会话表)+用户/应用/时间多维;ACL 无区域概念、无状态、逐条无会话跟踪,粒度和可维护性都弱一档。

记忆口诀 ​

  • 裁决链:黑名单拦最前,白名单直接过,会话管老包,策略管首包,默认兜底锁;
  • 设计四步:需求列表格,地址全对象,命名带工单,拒绝要留痕;
  • 排序:拒绝置顶看日志,精细居中宽泛后,默认最后全 deny;
  • 验证:先测该拒的,再测该通的,改完策略清会话;
  • 出向防护:DMZ 出去做减法,DNS 回调白名单,兜底拒绝加日志。

参考来源 ​

官方文档:

文档链接对应章节
安全策略基础(命令行/Web/RESTCONF 多种配置方式)https://support.huawei.com/enterprise/zh/doc/EDOC1100164799全篇
安全策略 time-range 命令参考https://support.huawei.com/enterprise/zh/doc/EDOC1100262521/2480e39b场景一
time-range 生效方式 FAQ(多条"或"关系)https://support.huawei.com/enterprise/zh/doc/EDOC1000160160/c8a03b06场景一
安全策略精要:记录策略命中日志https://support.huawei.com/enterprise/zh/doc/EDOC1100172314/99c788370.1/场景七
如何优化安全策略(流量日志 log type traffic enable)https://support.huawei.com/enterprise/zh/doc/EDOC1100189988延伸拓展
安全策略管理与配置原则https://support.huawei.com/enterprise/zh/doc/EDOC11001647090.3

优质二手来源:

来源链接价值点
华为防火墙黑白名单配置(五云网)https://www.wuyunnet.com/thread-916-1-1.html黑名单优先级
防火墙白名单和黑名单详解(博客园)https://www.cnblogs.com/clnchanpin/p/195705700.1 裁决链
USG6000V 全局白名单实操(CSDN)https://blog.csdn.net/azenlijing/article/details/125404909黑白名单命令
基于时间段的安全策略实战(五云网)https://www.wuyunnet.com/thread-912-1-1.html场景一
华为防火墙配置命令大全(知乎)https://zhuanlan.zhihu.com/p/701987480全篇命令速查

说明:策略命中日志命令存在 policy logging(新版本)与 log enable(旧版本)的版本差异,黑白名单与按服务老化时间的命令形态也随 V500/V600 有变化——本文均已标注,动手时以设备《命令参考》为准;Web 界面字段名称以《Web 配置指南》为准。