计算机基础知识 | 计网 | 状态检测防火墙(Stateful Firewall)
状态检测防火墙(Stateful Firewall)的工作原理。状态检测防火墙会维护一个连接表(也称为状态表),用来跟踪网络连接的状态,尤其是TCP连接的状态。
状态检测防火墙的工作原理
状态检测防火墙不仅检查每个数据包的源地址、目标地址和端口,还会检查数据包所属的连接状态。它通过维护一个连接状态表来记录每个连接的状态,从而做出更智能的过滤决策。
状态检测防火墙维护一个动态连接表,记录所有活跃连接的状态信息:
连接表示例:
[{"源IP": "192.168.1.100","源端口": 54321,"目标IP": "93.184.216.34", "目标端口": 80,"协议": "TCP","连接状态": "ESTABLISHED","超时时间": 300秒,"序列号信息": {...}},{"源IP": "192.168.1.101","源端口": 54322, "目标IP": "93.184.216.34","目标端口": 443,"协议": "TCP","连接状态": "SYN_SENT","超时时间": 30秒}
]
连接表(状态表)的作用
连接表记录了每个连接的状态信息,包括:
源IP地址
目标IP地址
源端口
目标端口
协议(如TCP、UDP)
连接状态(对于TCP,包括SYN_SENT、SYN_RECEIVED、ESTABLISHED、FIN_WAIT等)
对于TCP连接的状态跟踪
TCP 是 面向连接的协议,其连接建立和断开的过程可以通过状态跟踪来监控。状态检测防火墙会根据TCP连接的不同阶段更新连接状态。
例如,一个典型的TCP连接建立过程(三次握手)中,防火墙会跟踪以下状态:
当内部主机发送SYN包时,防火墙在连接表中创建一个条目,状态为SYN_SENT。
当收到对方回应的SYN-ACK包时,防火墙将状态更新为ESTABLISHED。
连接建立后,双方可以传输数据。
当连接关闭时,防火墙会监控FIN包,并更新状态直到连接关闭,然后从连接表中删除该条目。
状态检测的优势
动态过滤:根据连接状态决定是否允许数据包通过。例如,只有建立连接的数据包(如ESTABLISHED状态)才被允许通过,而未经请求的连接尝试(如从外部发起的SYN包)可以被阻止。
提高安全性:可以防止一些攻击,如 SYN洪水攻击(通过监控半开连接的数量和超时)或IP欺骗。
支持复杂协议:对于FTP、SIP等需要动态打开端口的协议,状态检测防火墙可以监控控制连接,并动态打开所需的数据连接端口。
注意
状态检测防火墙 不仅限于 TCP,也可以用于无连接协议如UDP和ICMP。对于这些协议,防火墙会基于数据包的交互模拟一个“虚拟连接”,并设置超时时间。
总结:状态检测防火墙通过维护连接状态表,能够根据连接状态动态允许或拒绝数据包,提供了比静态包过滤防火墙更高的安全性。