第203篇:状态防火墙 vs 包过滤防火墙

关键词

状态防火墙、包过滤防火墙、ACL、会话状态、应用层检测、安全模型、性能对比


一、防火墙技术的演进

1.1 三代防火墙

防火墙技术经历了三代演进:

包过滤防火墙(第一代) 状态防火墙(第二代) 下一代防火墙(第三代) | 检查:IP + 端口 技术:ACL 逐包检查 缺点:无状态、易绕过 | ───→ | 检查:IP + 端口 + 状态 技术:会话表 + 状态跟踪 优点:安全大幅提升 | ───→ | 检查:应用层 + 用户 + 内容 技术:DPI + IPS + 应用识别 优点:精细应用控制 | | --- | --- | --- | --- | --- |


二、包过滤防火墙详解

2.1 工作原理

包过滤防火墙在网络层和传输层工作,对每个 IP 报文独立检查:

报文到达 → 检查五元组 → 匹配 ACL → 执行动作

                ┌─────────────────────┐
                │  入方向 ACL 检查      │
                │  匹配 Permit/Deny   │
                └─────────┬───────────┘
                          │
                ┌─────────┴───────────┐
                │  路由查询             │
                └─────────┬───────────┘
                          │
                ┌─────────┴───────────┐
                │  出方向 ACL 检查      │
                └─────────┬───────────┘
                          │
                    转发/丢弃

2.2 典型 ACL 配置

# 包过滤防火墙的 ACL 规则(路由器实现)

acl number 3001
 rule 5 permit tcp source 10.0.0.0 0.0.0.255 destination 0.0.0.0 255.255.255.255 destination-port eq 80
 rule 10 deny ip source any destination any
!
interface GigabitEthernet0/0/0
 traffic-filter inbound acl 3001     # 入方向过滤
!

# 注意:出方向也要配,否则回复报文被丢弃
acl number 3002
 rule 5 permit tcp source 0.0.0.0 255.255.255.255 source-port eq 80 destination 10.0.0.0 0.0.0.255
 rule 10 deny ip source any destination any
!
interface GigabitEthernet0/0/1
 traffic-filter inbound acl 3002     # 出方向也要配

2.3 包过滤防火墙的缺点

1. 无状态导致安全隐患
   入方向只能检查 IP+端口,无法判断是否为回复报文
   必须打开高位端口(1024-65535)让回复流量通过
   → 攻击者可以利用这些端口闯入内网

2. 配置复杂
   每条流的入方向和出方向都要配规则
   规则数量随业务增长线性增加

3. 不支持多通道协议
   FTP、SIP 等协议需要动态端口,包过滤无法处理
   FTP 数据通道使用随机端口,必须放开大量端口范围

三、状态防火墙详解

3.1 工作原理

状态防火墙在包过滤基础上增加了会话状态跟踪

首包处理:
  报文到达 → 检查 ACL → 创建会话表 → 转发

后续报文处理(快速路径):
  报文到达 → 查会话表 → 命中 → 直接转发(不检查 ACL)
                     → 未命中 → 走首包处理流程

3.2 状态防火墙的优势

1. 安全的自动反向通道
   状态防火墙自动创建反向会话
   回复报文匹配会话表后直接放行
   不需要开放高位端口范围

2. 配置简化
   只需配置入方向策略
   出方向不需要额外配置

3. TCP 状态验证
   验证序列号在合理范围内
   防止 TCP 注入攻击
   检测非法的状态转换

4. 防御 DoS 攻击
   限制半连接数量(SYN Flood)
   检测异常连接速率

3.3 配置对比

# 包过滤防火墙(双向都要配)
入方向:permit tcp 10.0.0.0/24 → any eq 80
出方向:permit tcp any eq 80 → 10.0.0.0/24 gt 1023

# 状态防火墙(只需一条规则)
security-policy
 rule name HTTP_Access
  source-zone trust
  destination-zone untrust
  service http
  action permit

四、深度对比

对比维度 包过滤防火墙 状态防火墙
工作层次 网络层 + 传输层 网络层 + 传输层 + 会话层
检查粒度 逐包独立检查 基于连接状态检查
配置复杂度 高(需双向配置) 低(单向配置)
安全等级
性能 高(无状态表开销) 中(有会话表维护开销)
多通道协议 不支持 支持(ASPF)
DoS 防护 有限防护
日志审计 无连接日志 有完整的会话日志
典型设备 路由器 ACL 专用防火墙(华为 USG 系列)
部署年代 1990s 2000s 至今

五、性能考量

5.1 处理路径对比

包过滤防火墙处理路径:
  报文 → 入 ACL → 路由 → 出 ACL → 转发
  每个报文都走完整路径
  性能 = 线性

状态防火墙处理路径:
  首包:报文 → 入 ACL → 创建会话 → 路由 → 转发
  后续:报文 → 查会话表 → 转发(Fast Path)
  性能 = 首包慢,后续极快

实际性能数据(以 10G 防火墙为例):
  包过滤(ACL 模式):10 Gbps(纯线速转发)
  状态防火墙(会话模式):10 Gbps(会话命中率 > 99%)
  但状态防火墙在新建连接多时(如 100 万/秒),性能下降至 5-6 Gbps

5.2 适用场景建议

选择包过滤防火墙的场景:
  1. 核心路由器上的简单 ACL 过滤
  2. 不需要状态跟踪的简单场景
  3. 对转发性能要求极高的 P 路由器

选择状态防火墙的场景:
  1. 企业边界安全防护
  2. 需要详细日志审计
  3. 多通道协议支持
  4. 大多数现代企业网络

六、从包过滤到状态防火墙的升级案例

6.1 升级前的包过滤痛点

某企业使用核心路由器 ACL 作为边界防护:

痛点 1:配置复杂
  每次添加新应用,入方向和出方向都要改规则
  运维人员经常忘记配出方向规则

痛点 2:安全漏洞
  为了确保业务,出方向 ACL 配了 permit any any
  内网用户可以访问任何外网资源,无法做应用控制

痛点 3:攻击防护不足
  无法防御 SYN Flood
  无法识别异常连接

6.2 升级到状态防火墙后的效果

部署华为 USG 防火墙后:

1. 策略简化
   从 200 条 ACL 减少到 50 条安全策略
   运维工作量降低 75%

2. 安全提升
   出入方向双向检查
   应用识别 + 内容过滤
   IPS + 反病毒

3. 日志完善
   完整的会话日志
   安全事件关联分析
   满足等保合规要求

七、总结

知识点 核心要点
包过滤 逐包检查五元组,ACL 匹配,无状态
状态防火墙 维护会话表,首包建表后续查表
配置差异 包过滤需双向规则,状态防火墙单向即可
安全等级 状态防火墙远高于包过滤
性能差异 包过滤线速,状态防火墙首包有开销
选择依据 核心 ACL 用包过滤,边界安全用状态防火墙

八、思考

  1. 包过滤防火墙为什么需要双向配置 ACL?状态防火墙为什么不需要?
  2. 状态防火墙的 Fast Path 和首包 Slow Path 的处理差异在哪里?
  3. 如果状态防火墙新建连接速率很高(>10 万/秒),对性能有什么影响?
  4. FTP 等多通道协议在包过滤防火墙和状态防火墙下分别如何工作?
  5. 一个企业从路由器 ACL(包过滤)升级到专用防火墙(状态防火墙),主要的好处是什么?

下篇预告:第204篇《NAT 在防火墙上的实现差异》——防火墙上的 NAT 实现与普通路由器 NAT 的技术差异和应用场景。