面试真题(六):华为与华三防火墙安全策略配置比对
- 2026-09-16 11:53:52
面试官原题:你运维过华为和华三厂商的防火墙吗?现在要做同一条访问控制需求——放通内网网段访问某业务服务器的 TCP 8080。简述两家配置和差异点。
两家在数据面逻辑上完全一致(都是"区域 + 五元组 + 会话化"),差异全部集中在配置模型、命令方言、默认行为这三件事上。
一、安全策略到底是什么
1.1 安全策略是什么
安全策略是防火墙对首包做访问控制判决的规则集。它回答一个问题:这个报文,放不放?
一条策略本质上就是"匹配条件 + 动作":
• 匹配条件:源/目的安全域、源/目的 IP、服务(协议+端口)、用户、应用、VPN 实例、时间段 • 动作:允许 / 拒绝(+ 是否做内容安全检测)
1.2 匹配流程

1. 查路由在策略匹配之前:源域由入接口决定,目的域由出接口决定,而出接口是路由选出来的。所以"策略条件全对却一条都不命中",第一反应不是改策略,而是查路由——报文很可能从另一个域的接口出去了。 2. 目的 NAT 在查路由和安全策略之前,源 NAT 在安全策略之后:NAT策略中目的NAT会在路由和安全策略之前处理,源NAT会在路由和安全策略之后处理。落到配置上:NAT Server 场景策略目的地址填转换后的私网地址;源 NAT 场景正相反,策略源地址填转换前地址。 3. 完整顺序: 查Server-map/目的NAT → 查路由(查转换后目的地址)→ 确定域 → 匹配安全策略 → 源NAT → 建会话。 4. 改策略不影响已建立的老会话:只有首包查策略,后续包全走会话表。把 permit 改成 deny 后业务"还通着",不是策略没生效,是会话没老化——删会话或等老化时间到了再验证。 5. 丢包默认不记日志:两家缺省策略命中默认都不记录日志,想查"谁被拒了"必须显式开启日志功能(具体命令随版本而异),否则日志里什么都看不到。
二、配置逻辑路径对比
同一个需求:放通 192.168.10.0/24 访问 DMZ 服务器 10.10.10.100 的 TCP 8080。
firewall zone trustadd interface GE1/0/1 | security-zone name Trustimport interface GE1/0/1 | |
ip address-set inside_net type object | object-group ip address inside_net | |
ip service-set app_8080 type object | object-group service app_8080 | |
security-policy | security-policy ip | |
rule name trust_to_dmz | rule 10 name trust_to_dmz | |
source-zone trustdestination-zone dmzsource-address address-set inside_netdestination-address 10.10.10.100 32service app_8080 | source-zone Trustdestination-zone DMZsource-ip inside_netdestination-ip-host 10.10.10.100service app_8080 | |
action permit | action pass |
新配置的规则落在什么位置(决定谁先被匹配)
rule name后直接跟名称 | ||
| 配置顺序 | 配置顺序 |
🚩 华三的 rule ID 只是标识符,不是优先级——先建
rule 50、后建rule 1,rule 1照样排在后面匹配,这与 ACL"编号小先匹配"的逻辑完全不同,是从 ACL 思维转过来最容易踩的坑。
三、配置对照(同一场景,两家各写一遍)
3.1 场景与组网

组网要点:
• 终端位于 Trust 域(优先级 85),服务器位于 DMZ 域(优先级 50)。流量在两个不同的安全域之间流动,必须匹配安全策略,缺省策略不放过任何跨域流量。 • 防火墙的GE1/0/1 加入 Trust 域、GE1/0/2 加入 DMZ 域。接口与安全域的对应关系决定了报文入、出方向的源/目的域,配错接口域就等于把策略配到空气里。 • 报文路径:终端(内网) → ① 入接口(GE1/0/1)→ 安全策略引擎(首包判决(无NAT场景):查路由、定目的域、逐条匹配规则,命中即停)→ ③ 出接口(GE1/0/2)→ 服务器。
3.2 华为 USG 系列
# ---------- ① 安全域与接口 ----------[FW] firewall zone trust[FW-zone-trust] add interface GigabitEthernet 1/0/1[FW-zone-trust] quit[FW] firewall zone dmz[FW-zone-dmz] add interface GigabitEthernet 1/0/2[FW-zone-dmz] quit# ---------- ② 地址对象 ----------[FW] ip address-set inside_net type object[FW-object-address-set-inside_net] address 0 192.168.10.0 mask 24[FW-object-address-set-inside_net] quit# ---------- ③ 服务对象 ----------[FW] ip service-set app_8080 type object[FW-object-service-set-app_8080] service protocol tcp source-port 0 to 65535 destination-port 8080[FW-object-service-set-app_8080] quit# ---------- ④ 安全策略 ----------[FW] security-policy[FW-policy-security] rule name trust_to_dmz_8080[FW-policy-security-rule-trust_to_dmz_8080] source-zone trust[FW-policy-security-rule-trust_to_dmz_8080] destination-zone dmz[FW-policy-security-rule-trust_to_dmz_8080] source-address address-set inside_net[FW-policy-security-rule-trust_to_dmz_8080] destination-address 10.10.10.100 32[FW-policy-security-rule-trust_to_dmz_8080] service app_8080[FW-policy-security-rule-trust_to_dmz_8080] action permit[FW-policy-security-rule-trust_to_dmz_8080] quit华为写法要点
• source-address:后面跟address-set关键字就是引用地址对象,直接跟 IP + 掩码长度就是裸地址。• 例: source-address address-set inside_net(引用对象) /source-address 192.168.10.5 32(裸地址)• 掩码长度写法 destination-address 10.10.10.100 32,也可写成mask 255.255.255.255• 例:主机 destination-address 10.10.10.100 32≡destination-address 10.10.10.100 mask 255.255.255.255;网段destination-address 10.10.10.0 mask 255.255.255.0• 服务对象里 source-port 0 to 65535表示任意源端口;若不写源端口,协议为 TCP/UDP 时通常按任意端口处理(与0 to 65535相同),但显式写出可与项目规范对齐。• 例: service protocol tcp destination-port 8080与service protocol tcp source-port 0 to 65535 destination-port 8080效果相同,后者是项目规范的显式写法• 预定义服务可直接引用,如 service http/service https。• 例: service https直接可用,等价于自建服务集里配 TCP 443,无需手工定义• 地址集还有 type group一层:type object只能放 IP/范围,type group可以把多个object再聚合。做大规模策略治理时,用group嵌套能显著降低维护量。• 例:
security-policy 策略配置里只引用聚合组:[FW] ip address-set all_inside type group[FW-object-address-set-all_inside] address 0 address-set inside_net[FW-object-address-set-all_inside] address 5 address-set oa_netsource-address address-set all_inside,后续部门网段增删只改对象集、不动策略配置
3.3 华三 Comware(新引擎)
# ---------- ① 安全域与接口 ----------[FW] security-zone name Trust[FW-security-zone-Trust] import interface GigabitEthernet 1/0/1[FW-security-zone-Trust] quit[FW] security-zone name DMZ[FW-security-zone-DMZ] import interface GigabitEthernet 1/0/2[FW-security-zone-DMZ] quit# ---------- ② 地址对象组 ----------[FW] object-group ip address inside_net[FW-obj-grp-ip-inside_net] 0 network subnet 192.168.10.0 255.255.255.0[FW-obj-grp-ip-inside_net] quit# ---------- ③ 服务对象组 ----------[FW] object-group service app_8080[FW-obj-grp-service-app_8080] 0 service tcp source gt 0 destination eq 8080[FW-obj-grp-service-app_8080] quit# ---------- ④ 安全策略 ----------[FW] security-policy ip[FW-security-policy-ip] rule 10 name trust_to_dmz_8080[FW-security-policy-ip-10-trust_to_dmz_8080] action pass[FW-security-policy-ip-10-trust_to_dmz_8080] counting enable[FW-security-policy-ip-10-trust_to_dmz_8080] source-zone Trust[FW-security-policy-ip-10-trust_to_dmz_8080] destination-zone DMZ[FW-security-policy-ip-10-trust_to_dmz_8080] source-ip inside_net[FW-security-policy-ip-10-trust_to_dmz_8080] destination-ip-host 10.10.10.100[FW-security-policy-ip-10-trust_to_dmz_8080] service app_8080[FW-security-policy-ip-10-trust_to_dmz_8080] quit华三写法要点
• 地址对象组三种成员形态: network host address(主机)、network subnet(网段)、network range(范围)—— 直接对应华为address ... mask 32/mask 24/range。• 例: network host address 10.10.10.100/network subnet 192.168.10.0 255.255.255.0/network range 192.168.10.10 192.168.10.20• 服务对象组用操作符表达端口: eq/gt/lt/range。source gt 0即源端口 > 0,等价于任意源端口。• 例: 0 service tcp destination eq 8080(单端口)、0 service tcp destination range 8000 9000(端口段)• action pass必须写,否则规则不激活。• 例:缺 action时display security-policy ip回显为rule 10 name trust_to_dmz_8080 (Inactive),补配action pass后变为(Active)• counting enable开启命中计数,排障时靠它判断有没有流量打进来——建议默认就开。• 例: display security-policy statistics ip rule trust_to_dmz_8080回显action: pass (5 packets, 1000 bytes);重新统计用reset security-policy statistics ip
3.4 华三老引擎:对象策略 + 域间实例
存量网络里大量存在这一套。
# ① 地址对象组(与安全策略共用)object-group ip address srcObjGroup44053 0 network subnet 192.168.224.0 255.255.255.128#object-group ip address destObjGroup44053 0 network host address 221.182.31.8# ② 服务对象组object-group service serverGroup44053 0 service tcp source gt 0 destination range 8080 8081# ③ IPv4 对象策略object-policy ip users200-EXTERNAL rule 601 pass source-ip srcObjGroup44053 destination-ip destObjGroup44053 service serverGroup44053 vrf users200_vpn# ④ 域间实例调用对象策略zone-pair security source users200 destination EXTERNAL object-policy apply ip users200-EXTERNAL这套模型的结构差异:过滤条件(源/目的/服务)写在 object-policy里,但"域"不在这里——域间方向由 zone-pair security定义。也就是说,安全域是在"应用点"绑定的,不是在规则里绑定的。这与华为/华三新引擎"域作为规则的一个普通过滤条件"是完全不同的建模思路。
⚠️ 互斥关系(官方文档明确):安全策略功能启用后,首次进入安全策略视图时对象策略即失效。若要从安全策略回退到对象策略,必须先
security-policy disable。这条在割接时极易踩雷——不要以为两套并存会叠加生效。
四、默认动作与同域流量
| 域间 | ||
| 域内 | 默认放行 | 默认拒绝 |
security-policydefault action permit/deny | security-policydefault rule action { drop | pass } |
五、排障命令对照
display security-policy | display security-policy ip | |
display security-policy rule all | display security-policy ip | |
display firewall session table | display session table | |
display zone | display security-zone | |
display security-policy | display security-policy default action |
六、总结对比
写配置、读配置、跨厂商"翻译"配置时回查这张表——同一个功能,两家命令:
security-policy | security-policy ip | |
rule name <名称> | rule <id> name <名称> | |
source-zonedestination-zone | source-zonedestination-zone | |
source-address address-set <名> | source-ip <对象组名> | |
source-address <IP> <掩码> | source-ip-hostsource-ip-subnet/ source-ip-range | |
service <服务集名> | service <对象组名> | |
service protocol tcp destination-port 8080 | service-port tcp destination eq 8080 | |
permitdeny | passdrop | |
ip address-set <名> type object|group | object-group ip address <名> | |
ip service-set <名> type object|group | object-group service <名> | |
firewall zone <名>add interface | security-zone name <名>import interface |
说明:配置模型、命令方言、默认行为随软件版本演进会有差异,请以对应版本的产品配置指导为准。