公网防火墙主要基于以下原理工作:
防火墙会预先定义一系列规则,这些规则基于数据包的多个特征。例如,根据源IP地址(即发送数据包的设备的IP地址)、目的IP地址(接收数据包的设备的IP地址)、源端口(发送数据包的应用程序所使用的端口)、目的端口(接收数据包的应用程序所使用的端口)以及协议类型(如TCP、UDP、ICMP等)。
当一个数据包到达防火墙时,防火墙会提取该数据包的上述特征信息。然后将这些信息与预先设定的规则进行比对。如果数据包符合允许通过的规则,例如,源IP地址是内部网络信任的IP地址范围,目的端口是内部网络中特定服务(如Web服务的80端口)所对应的端口,并且协议类型正确,那么防火墙就会允许这个数据包通过;反之,如果数据包不符合任何允许规则,就可能被丢弃或者进行进一步的检查。
除了基于包过滤的静态规则外,公网防火墙还会跟踪网络连接的状态。对于一个正常的TCP连接,它会经历建立连接(SYN包)、数据传输、连接关闭(FIN包)等不同状态。
防火墙会记录每个连接的状态信息。当一个数据包到达时,防火墙不仅检查数据包本身的特征,还会参考该数据包所属连接的状态。例如,对于一个已经建立的TCP连接,防火墙会允许与该连接相关的后续数据包通过,即使这些数据包的某些特征(如源端口)可能与单纯的包过滤规则不完全匹配,但只要它们属于合法的连接状态,就会被放行。
状态检测防火墙能够根据网络连接的实际状态动态地调整访问控制策略。这种动态性使得防火墙能够更好地适应复杂的网络通信情况,提高安全性,同时减少误判。
对于一些高级的公网防火墙,它们能够在应用层对数据包进行分析。这意味着防火墙可以理解特定应用程序的协议内容。例如,对于HTTP协议,防火墙可以解析HTTP请求中的URL、请求方法(GET、POST等)以及头部信息等。
基于对应用层协议的解析,防火墙可以进行更深入的检测和过滤。它可以阻止包含恶意代码(如SQL注入语句、跨站脚本攻击代码等)的HTTP请求,或者限制对某些特定网站或网络服务的访问,即使这些访问请求在网络层和传输层的特征看起来是合法的。