防火墙是企业网络安全的"守门员"。与路由器"默认允许"不同,防火墙默认拒绝所有流量,只有明确放行的策略才能通过。本文从安全域划分、策略配置到流量验证,完整实战防火墙安全策略。

一、防火墙基础概念

防火墙与路由器最核心的区别在于默认行为和状态检测机制。

对比项路由器防火墙
默认行为默认允许(有路由就转发)默认拒绝(无策略则丢弃)
核心功能路由转发、连通网络访问控制、安全隔离
状态检测无(逐包独立处理)有(跟踪会话状态)
安全域无概念Trust/Untrust/DMZ等
💡
状态检测(Stateful Inspection):防火墙不仅检查单个数据包,还跟踪整个会话。当 Trust→Untrust 的请求被放行后,Untrust→Trust 的回程流量自动放行,无需额外配置反向策略。

二、安全域划分

安全域(Security Zone)是防火墙的逻辑隔离单位,每个域有安全等级(0-100),等级越高越可信。流量从高等级域到低等级域默认允许方向,反之默认拒绝。

安全域安全等级典型连接说明
Trust85内网终端、办公区可信内网,最高保护
DMZ50Web/邮件/FTP服务器对外服务区,半可信
Untrust5互联网不可信外部网络
⚠️
安全等级方向规则:高等级→低等级(如 Trust→Untrust)默认允许方向,但仍需配置安全策略才能放行;低等级→高等级(如 Untrust→Trust)默认拒绝方向,必须显式配置 permit 策略。

三、实验拓扑

                    ┌─────────────┐
    互联网(8.8.8.8)──┤  USG6000    ├──Trust区: PC1(192.168.10.10)
                    │  防火墙      ├──Trust区: PC2(192.168.20.10)
    Untrust         │             ├──DMZ区: Web服务器(192.168.30.10)
    GE1/0/0         │             │
    200.1.1.1       └─────────────┘
                    Trust GE1/0/1 (192.168.10.1)
                    Trust GE1/0/2 (192.168.20.1)
                    DMZ   GE1/0/3 (192.168.30.1)

需求:
  ① Trust→Untrust: 内网PC可访问互联网
  ② Untrust→Trust: 互联网不可主动访问内网PC
  ③ Untrust→DMZ: 外网可访问DMZ的Web服务器(80端口)
  ④ Trust→DMZ: 内网PC可管理DMZ服务器

四、安全域与接口配置

将防火墙各接口加入对应安全域,是策略配置的前提。

# 进入系统视图
<USG6000> system-view

# 将接口加入Trust安全域
[USG6000] firewall zone trust
[USG6000-zone-trust] add interface GigabitEthernet 1/0/1
[USG6000-zone-trust] add interface GigabitEthernet 1/0/2
[USG6000-zone-trust] quit

# 将接口加入Untrust安全域
[USG6000] firewall zone untrust
[USG6000-zone-untrust] add interface GigabitEthernet 1/0/0
[USG6000-zone-untrust] quit

# 将接口加入DMZ安全域
[USG6000] firewall zone dmz
[USG6000-zone-dmz] add interface GigabitEthernet 1/0/3
[USG6000-zone-dmz] quit

# 验证安全域配置
[USG6000] display zone
  trust    Priority: 85
    GigabitEthernet1/0/1
    GigabitEthernet1/0/2
  untrust  Priority: 5
    GigabitEthernet1/0/0
  dmz      Priority: 50
    GigabitEthernet1/0/3

五、安全策略配置

安全策略是防火墙的核心——定义哪些流量可以跨域通行。每条策略包含源域、目的域、源地址、目的地址、服务、动作。

# ① Trust→Untrust: 允许内网PC访问互联网
[USG6000] security-policy
[USG6000-policy-security] rule name trust-to-untrust
[USG6000-policy-security-rule-trust-to-untrust] source-zone trust
[USG6000-policy-security-rule-trust-to-untrust] destination-zone untrust
[USG6000-policy-security-rule-trust-to-untrust] source-address 192.168.10.0 0.0.0.255
[USG6000-policy-security-rule-trust-to-untrust] source-address 192.168.20.0 0.0.0.255
[USG6000-policy-security-rule-trust-to-untrust] action permit
[USG6000-policy-security-rule-trust-to-untrust] quit

# ② Untrust→Trust: 默认拒绝(无需配置,防火墙默认deny)
#    如需显式拒绝,可配置deny策略
[USG6000-policy-security] rule name untrust-to-trust-deny
[USG6000-policy-security-rule-untrust-to-trust-deny] source-zone untrust
[USG6000-policy-security-rule-untrust-to-trust-deny] destination-zone trust
[USG6000-policy-security-rule-untrust-to-trust-deny] action deny
[USG6000-policy-security-rule-untrust-to-trust-deny] quit

# ③ Untrust→DMZ: 允许外网访问DMZ Web服务器(仅HTTP 80端口)
[USG6000-policy-security] rule name untrust-to-dmz-web
[USG6000-policy-security-rule-untrust-to-dmz-web] source-zone untrust
[USG6000-policy-security-rule-untrust-to-dmz-web] destination-zone dmz
[USG6000-policy-security-rule-untrust-to-dmz-web] destination-address 192.168.30.10 0.0.0.0
[USG6000-policy-security-rule-untrust-to-dmz-web] service http
[USG6000-policy-security-rule-untrust-to-dmz-web] action permit
[USG6000-policy-security-rule-untrust-to-dmz-web] quit

# ④ Trust→DMZ: 允许内网PC管理DMZ服务器(SSH+HTTP)
[USG6000-policy-security] rule name trust-to-dmz-mgmt
[USG6000-policy-security-rule-trust-to-dmz-mgmt] source-zone trust
[USG6000-policy-security-rule-trust-to-dmz-mgmt] destination-zone dmz
[USG6000-policy-security-rule-trust-to-dmz-mgmt] destination-address 192.168.30.10 0.0.0.0
[USG6000-policy-security-rule-trust-to-dmz-mgmt] service ssh
[USG6000-policy-security-rule-trust-to-dmz-mgmt] service http
[USG6000-policy-security-rule-trust-to-dmz-mgmt] action permit
[USG6000-policy-security-rule-trust-to-dmz-mgmt] quit

# ⑤ 默认拒绝所有其他流量(兜底策略)
[USG6000-policy-security] rule name default-deny
[USG6000-policy-security-rule-default-deny] source-zone any
[USG6000-policy-security-rule-default-deny] destination-zone any
[USG6000-policy-security-rule-default-deny] action deny
[USG6000-policy-security-rule-default-deny] quit
策略名源域→目的域服务动作
trust-to-untrustTrust→Untrustanypermit
untrust-to-trust-denyUntrust→Trustanydeny
untrust-to-dmz-webUntrust→DMZHTTP(80)permit
trust-to-dmz-mgmtTrust→DMZSSH+HTTPpermit
default-denyany→anyanydeny

六、策略验证

# ① 验证 Trust→Untrust 放行
PC1> ping 8.8.8.8
Reply from 8.8.8.8: bytes=32 time=5ms  ✅ 通

# ② 验证 Untrust→Trust 拒绝
外网PC> ping 192.168.10.10
Request timeout  ❌ 被防火墙丢弃

# 查看丢弃日志
[USG6000] display firewall session table
  # 无Untrust→Trust的会话记录,说明策略deny生效

# ③ 验证 Untrust→DMZ Web服务器对外发布
外网PC> curl http://200.1.1.1
<html><h1>DMZ Web Server</h1></html>  ✅ 返回页面

# ④ 验证 Trust→DMZ 管理访问
PC1> ssh 192.168.30.10
Password: ******
✅ SSH登录成功

# 查看安全策略命中计数
[USG6000] display security-policy rule all
  trust-to-untrust    hit-count: 156  action: permit
  untrust-to-trust-deny hit-count: 23   action: deny
  untrust-to-dmz-web  hit-count: 42   action: permit
  trust-to-dmz-mgmt   hit-count: 8    action: permit
  default-deny        hit-count: 5    action: deny

七、排错思路

  1. 策略不生效? 检查接口是否已加入正确安全域——`display zone` 确认接口归属,接口未入域则策略永远无法匹配。
  2. 匹配顺序问题? 策略按配置顺序自上而下匹配,命中即停止。兜底 deny 策略必须放在最后,否则会拦截所有流量。
  3. 地址范围错误? `source-address` 用反掩码(0.0.0.255 对应 /24),不是子网掩码。写错会导致匹配范围偏差。
  4. NAT与策略协同? 先做安全策略检查,再做NAT转换。策略中的地址是NAT前的真实地址,不是转换后的公网地址。
  5. 回程流量不通? 状态检测会自动放行已建立会话的回程流量。若回程不通,检查是否为非状态化协议(如UDP单包)或会话超时。
⚠️
NAT与策略的顺序:防火墙处理流程为:安全策略检查 → NAT转换 → 路由转发。配置策略时源/目的地址必须写NAT前的原始地址,而非转换后的地址。这是最常见的配置错误。

八、小结

  • 防火墙默认拒绝所有流量,与路由器的默认允许截然不同
  • 安全域按信任程度划分:Trust(85) > DMZ(50) > Untrust(5)
  • 安全策略五要素:源域、目的域、源地址、目的地址、服务/动作
  • 策略按顺序匹配,兜底deny放最后;NAT前地址用于策略匹配
  • 状态检测自动放行回程流量,无需配置反向策略