防火墙会话表与ASPF 核心知识笔记

一、 防火墙会话表(Session Table)基础与核心原理

1.1 什么是会话表?

会话表(Session Table)本质上是防火墙内部的一张详细的登记信息表

  • 诞生目的 :主要是为了提升网络的安全性,同时也为了减少工程师配置复杂规则的工作量。
  • 无状态检测的痛点:如果没有会话表(即缺乏状态检测机制),管理员必须粗略地配置安全策略(例如直接放行所有 Untrust 到 Trust 的流量),或者为了精细化管理而不得不穷举放行公网上所有的服务器 IP 和端口,这在现实中是不可能完成的。

1.2 核心解决的问题

会话表主要解决了"单向主动发起通信"场景下的核心问题:

  • 放行合法流量:确保内部合法用户主动发出的数据包不仅能顺利出去,其对应的回包也能正常穿透防火墙返回内部。
  • 阻断非法访问:在允许回包进入的同时,有效避免公网上的非法用户主动发起对内部网络的访问。

1.3 状态检测机制

执行 display firewall session table 命令所查看到的表项,正是状态检测机制的核心

  • 防火墙依赖这张表进行前后文消息关联性的判断
  • 只有能够匹配上会话表的"回包",才被认为是属于已知合法连接的一部分,从而被允许通行。

二、 安全策略的书写逻辑与会话表查看

2.1 单向策略 vs 双向策略

  • 单向策略:大多数日常上网场景只需单向策略,内部主动发起访问,回包通过匹配会话表(session-table)进入网络,不需要反向的安全策略。
  • 双向策略当一个业务需要双向都能够主动发起通信时(例如两端的服务器需要互相主动同步数据),才需要书写双向策略。

2.2 会话表查看命令与字段解析

管理员可以通过命令行深入查看会话表的具体状态。

  • 简要查看display firewall session table 可以查看当前会话的总数以及简要的源/目的 IP 和端口映射。
  • 详细查看display firewall session table verbose 可以查看单条会话的详细上下文信息。

关键字段含义解析:

字段 含义说明
ID 该条会话在防火墙内部的唯一标识符。
Zone 流量的安全区域走向,例如 dmz --> untrust
TTL 会话的总生存时间(Time To Live)。
Left 该条会话距离老化被删除的剩余时间。
Recv Interface 接收数据包的入接口。
Interface/NextHop/MAC 数据包转发的出接口、下一跳 IP 地址以及对应的 MAC 地址。
packets / bytes 流量统计,<-- 代表入方向统计,--> 代表出方向统计。
PolicyName 该流量最初建立会话时所匹配的安全策略名称。

三、 会话表老化机制

如果一个流量持续匹配某个会话,该会话就会一直保持存活;如果长时间没有流量匹配,防火墙就会将其删除。

3.1 为什么需要老化?

  • 节省资源:单次通信完成后,及时清理无用表项以节约设备内存和处理资源。
  • 防止被滥用:避免已完成的会话通道被长期遗留,从而被恶意攻击者利用(尽管攻击者只能发送符合上下文衔接的数据包)。
  • 防止会话占满:抵御恶意伪造不断变化的数据包来耗尽防火墙会话表空间的攻击,确保后续正常业务不受影响。

3.2 常见协议老化时间对比

不同协议因为其底层工作机制不同,默认的老化时间也有显著差异。例如,ICMP(如 Ping 测试)通常不需要长时间等待响应,老化时间较短;而 TCP(如数据库查询)可能需要较长时间处理数据,老化时间较长。

协议 默认老化时间 协议 默认老化时间
ICMP 20 秒 TCP 600 秒
UDP 120 秒 DNS 120 秒
HTTP 120 秒 FTP 120 秒

四、 多通道协议难题与 ASPF / Server-map 机制

4.1 什么是多通道协议问题?

对于单通道协议(如 HTTP),控制报文和数据报文在同一个连接中传输,传统的会话表足以应对。但对于 FTP 等多通道协议,会遇到以下问题:

  • 安全策略无法提前精准配置,因为数据通道使用的端口是随机协商的。
  • 如果仅配置 service ftp,可能会导致下载失败;如果删掉 service ftp 并使用 PORT 模式,依然会失败。
  • 为了解决这类多通道协议在穿越防火墙时产生的随机端口放行问题,ASPF(Application Specific Packet Filter,针对应用层的包过滤) 技术应运而生。

4.2 FTP 的两种工作模式

FTP 协议分为控制通道(TCP 21端口)和数据通道。

  • 被动模式(PASV)

  • 客户端向服务器发送请求,要求获取一个用于传输数据的 IP 和端口。

  • 服务器随机打开一个 TCP 端口,通过控制通道告知客户端。

  • 客户端主动连接服务器的这个随机端口建立数据通道。

  • 主动模式(PORT)

  • 客户端通过控制通道告知服务器自己开放了一个随机端口用于数据传输。

  • 服务器主动 使用自己的 TCP 20 号端口去连接客户端提供的随机端口建立数据通道。

4.3 ASPF 与 Server-map 工作流程(以 FTP 主动模式为例)

ASPF 会持续监听控制通道中协商出来的随机端口,并自动生成放行规则。

  1. 控制连接建立:客户端使用随机端口主动向服务器的 21 号端口发起 TCP 连接建立请求。
  2. 动态生成表项 :防火墙的 ASPF 功能检测到控制报文中的端口协商信息,自动在内部创建一张 Server-map 表
  3. 隐形通道放行 :当服务器的 20 号端口尝试连接客户端的随机端口(数据连接首包)时,该报文会命中 Server-map 表项 ,从而不再受常规安全策略的限制
  4. 生成数据会话:防火墙根据 Server-map 生成一条正式的 Session,用于放行后续的数据通道报文。

连接首包)时,该报文会命中 Server-map 表项 ,从而不再受常规安全策略的限制

  1. 生成数据会话:防火墙根据 Server-map 生成一条正式的 Session,用于放行后续的数据通道报文。

总结:Server-map 表就是防火墙通过 ASPF 功能自动生成的精细安全策略,可以理解为防火墙为多通道协议临时打通的一条"隐形通道"。