先查找会话表项,然后再目的 NAT 转换,路由查找,包过滤规则,防火墙策略、应用层匹配规则,审计策略,最后查询源 NAT 从设备转发出去。
DPtech FW1000系列防火墙技术白皮书 - 技术白皮书 - 杭州迪普科技股份有限公司
防火墙通过会话表(Session Table)来跟踪和管理经过防火墙的所有连接会话。会话表项是防火墙用来记录每个连接状态的信息,帮助防火墙在后续的数据包处理时决定是否允许或拒绝这些数据包。下面介绍防火墙如何创建会话表项的过程。
会话表项的创建过程
-
数据包的初次到达:
- 当一个新的数据包首次到达防火墙时,防火墙会检查该数据包的五元组信息,即源IP地址、目的IP地址、源端口号、目的端口号和协议类型(如 TCP、UDP)。
- 如果这个数据包属于一个新的连接(即之前未在会话表中记录过),防火墙会开始创建一个新的会话表项。
-
策略检查:
- 防火墙会根据预定义的安全策略(如 ACL 访问控制列表、策略路由等)检查这个数据包是否被允许通过。如果安全策略允许该数据包的连接,防火墙将继续处理并创建会话表项。
- 如果策略不允许该连接,防火墙可能会丢弃数据包,并不创建会话表项。
-
状态跟踪:
- 如果安全策略允许,防火墙将开始跟踪该连接的状态,并在会话表中创建一个新的表项。
- 这个表项会记录五元组信息、连接状态(如 TCP 的 SYN、SYN-ACK、ACK 等状态)、时间戳、以及其他相关信息(如 NAT 映射、应用层协议状态等)。
-
数据包处理与转发:
- 防火墙会将数据包转发到目标地址,并在会话表项中更新该连接的状态。例如,在 TCP 三次握手过程中,防火墙会根据不同的 SYN、ACK 包更新连接的状态。
-
会话超时管理:
- 每个会话表项都有一个超时时间,防火墙会基于连接的状态和协议类型设置超时时间。例如,TCP 连接在正常关闭后会话表项可能会立即删除,而在非正常关闭的情况下会保留一段时间。
- 如果在规定时间内没有数据包经过该会话,防火墙将会清除该会话表项。
示例:TCP 会话的创建
以 TCP 连接为例,假设一个客户端发起到服务器的 TCP 连接请求:
-
客户端发送 SYN 包:
- 数据包信息:源IP、源端口、目的IP、目的端口、协议(TCP),并带有 SYN 标志。
- 防火墙检测到这是一个新的连接,没有现成的会话表项。
- 防火墙检查安全策略,允许该连接,通过并创建一个新的会话表项。
-
服务器响应 SYN-ACK 包:
- 防火墙检测到该响应包属于之前的会话,根据五元组匹配到已有的会话表项。
- 防火墙更新会话表项的状态,将其从
SYN_SENT
更新为SYN_RECEIVED
。
-
客户端发送 ACK 包:
- 防火墙检测到该包属于已建立的连接,更新会话表项状态为
ESTABLISHED
。
- 防火墙检测到该包属于已建立的连接,更新会话表项状态为
-
数据传输:
- 在连接建立后,数据包将通过防火墙,防火墙会继续跟踪和更新会话表中的状态信息。
-
连接关闭:
- 当 TCP 连接结束时(通过 FIN 或 RST),防火墙会更新会话表项的状态,并在超时后删除该表项。
结论
防火墙通过会话表来跟踪网络连接的状态,以决定是否允许数据包通过。会话表项的创建涉及数据包的初次到达、策略检查、状态跟踪、数据包处理与转发以及会话超时管理等步骤。通过这种机制,防火墙可以有效地管理和控制网络流量,确保网络安全。