摘要:防火墙是企业网络安全的第一道防线。本文系统讲解防火墙核心机制——五元组识别、状态检测(Stateful Inspection)、安全策略编写、NAT地址转换,帮助网络/安全初学者快速掌握防火墙工作原理,夯实CISSP/HCIA-Security/CCNA Security基础。附配置示例+排错技巧+面试题!


🔥 为什么防火墙不是“高级路由器”?

很多人误以为防火墙只是“带ACL的路由器”,其实大错特错!
现代防火墙的核心能力在于:

  • 基于连接的状态感知(不只是包过滤)
  • 精细化流量控制(五元组精准匹配)
  • 内外网地址隔离与转换(NAT隐藏内网)
  • 策略驱动的安全边界

掌握这四大基石,你才算真正“懂”防火墙!


一、五元组:流量识别的“身份证”

1.1 什么是五元组?

五元组是唯一标识一条网络连接的五个关键字段:

字段 说明
源 IP 地址 发起通信的主机 IP
目的 IP 地址 接收通信的目标 IP
源端口 发起方使用的端口号(如 50000)
目的端口 服务端监听端口(如 80、443)
协议类型 TCP / UDP / ICMP 等

✅ 示例:
192.168.1.10:52000 → 203.0.113.5:443 (TCP) 就是一个完整的 HTTPS 连接五元组。

1.2 为什么重要?

  • 防火墙策略匹配的基础
  • NAT 转换时需维护五元组映射表
  • 日志审计、入侵检测都依赖五元组溯源

💡 注意:ICMP 没有端口,用 Type/Code 代替端口字段。


二、状态检测(Stateful Inspection):让防火墙“记住”会话

2.1 包过滤 vs 状态检测

类型 工作方式 缺陷
无状态包过滤 逐包检查规则 无法识别“回应包”,易被绕过
状态检测 跟踪整个连接生命周期 安全性高,支持动态放行返回流量

2.2 状态机如何工作?

以 TCP 为例,防火墙维护连接状态:

  1. NEW:首包(SYN)到达,匹配策略后创建会话
  2. ESTABLISHED:后续 ACK/FIN 包自动放行(无需重复匹配策略)
  3. RELATED:关联连接(如 FTP 数据通道)
  4. INVALID:非法包(如无会话的 RST),直接丢弃

优势

  • 外部无法主动连接内网(除非策略允许)
  • 返回流量自动放行,无需写反向规则!

2.3 查看会话表示例(华为 USG)

[USG] display firewall session table
Current total sessions : 2
icmp  VPN:public --> public  Zone: trust--> untrust  TTL: 00:00:20
  192.168.1.10:1 --> 8.8.8.8:2048
tcp   VPN:public --> public  Zone: trust--> untrust  TTL: 00:05:00
  192.168.1.20:52000 --> 203.0.113.10:443

三、防火墙策略:安全规则的“灵魂”

3.1 策略基本结构(以主流厂商为例)

一条典型策略包含以下要素:

源区域(Source Zone)    → trust
目的区域(Destination Zone)→ untrust
源地址(Source Address)   → 192.168.1.0/24
目的地址(Destination Address)→ any
服务(Service)           → HTTP, HTTPS
动作(Action)            → Permit / Deny
日志(Log)               → Enable

🌐 区域(Zone)概念
将接口分组(如 trust/untrust/dmz),策略基于区域而非单个接口,简化管理。

3.2 策略匹配原则

  • 自上而下匹配(Top-down)
  • 命中即执行,不再往下查
  • 默认隐式拒绝所有(Deny Any)

最佳实践

  • 策略从具体到宽泛排列
  • 定期清理“从未命中”的僵尸策略
  • 关键策略开启日志,便于审计

3.3 配置示例(华为防火墙)

[USG] security-policy
[USG-policy-security] rule name allow_web
[USG-policy-security-rule-allow_web] source-zone trust
[USG-policy-security-rule-allow_web] destination-zone untrust
[USG-policy-security-rule-allow_web] source-address 192.168.1.0 24
[USG-policy-security-rule-allow_web] destination-address any
[USG-policy-security-rule-allow_web] service http https
[USG-policy-security-rule-allow_web] action permit
[USG-policy-security-rule-allow_web] logging enable

四、NAT:网络地址转换,隐藏内网的“隐身术”

4.1 NAT 三大类型

类型 别名 用途
源NAT(SNAT) Easy IP / NAPT 内网上网,多对一转换
目的NAT(DNAT) 端口映射 / Server Map 外网访问内网服务器
双向NAT 同时转换源和目的(复杂场景)

4.2 源NAT(上网必备)

# 华为示例:内网通过公网IP上网
[USG] nat address-group OUTBOUND
[USG-address-group-OUTBOUND] mode pat  # 端口复用
[USG-address-group-OUTBOUND] route 203.0.113.1 32

[USG] nat-policy
[USG-policy-nat] rule name snat_web
[USG-policy-nat-rule-snat_web] source-zone trust
[USG-policy-nat-rule-snat_web] destination-zone untrust
[USG-policy-nat-rule-snat_web] source-address 192.168.1.0 24
[USG-policy-nat-rule-snat_web] action source-nat address-group OUTBOUND

4.3 目的NAT(发布服务器)

# 将公网 203.0.113.100:80 映射到内网 192.168.10.10:80
[USG] nat server protocol tcp global 203.0.113.100 www inside 192.168.10.10 www

⚠️ 注意顺序
防火墙处理流程通常是:DNAT → 安全策略 → SNAT
策略中写的是转换后的地址(DNAT后)或原始地址(SNAT前),需特别注意!


🧠 防火墙处理流程图(简化版)

入站流量
   ↓
[目的NAT] ← 发布服务器用
   ↓
[安全策略匹配] ← 基于五元组 + 区域
   ↓
[源NAT] ← 内网上网用
   ↓
转发/丢弃

❓ 常见问题

Q1:为什么写了允许 outbound 的策略,外网还是不能 ping 通内网?
A:ICMP 是双向的!需同时允许:
① 内→外(echo request)
② 外→内(echo reply)——但状态检测下 reply 会自动放行,前提是首包策略允许出站

Q2:NAT 和安全策略哪个先生效?
A:先 DNAT(改变目的地址),再匹配策略(策略中写内网服务器地址),最后 SNAT(如需要)。

Q3:如何排查策略不生效?

  • 查会话表:display firewall session table
  • 查策略命中计数:display security-policy rule name xxx
  • 抓包验证:packet capturetraffic-filter

结语:防火墙不是“挡板”,而是智能流量调度与安全决策中心。理解五元组、状态机、策略与NAT的协同工作机制,是构建零信任网络的第一步!
建议:在 eNSP 或 GNS3 中搭建防火墙实验环境,亲手验证每一条规则!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐