9.4.2 分组过滤器

分组过滤是一种在许多商用路由器上提供的功能,通常情况下,它用于控制路由,但是网络管理员可以设置对分组处理的规则,来实现对某些外部分组进行过滤的功能。这种机制称为分组过滤器(packet filter),它是防火墙技术中最基本的一种技术。

分组过滤器的工作原理是:当一个数据报到达路由器时,路由器在对其进行其他路由处理前,首先把数据报交给分组过滤器处理;分组过滤器根据数据报的首部信息对照一张过滤规则表,确定该数据报是否可以被进一步处理,还是被丢弃(即过滤)。

显然,分组过滤器的关键是过滤规则表的构建。那么分组过滤表应该包含哪些信息呢?TCP/IP没有规定分组过滤器的标准。不同的产品,其过滤的方式各不相同。有些路由器对所有的接口采用统一的过滤规则表,而也有的路由器允许针对每个接口分别设置过滤规则表。过滤规则表需要网络管理员手工设置,其中一般包含源IP地址、目的IP地址、协议、源站协议端口号以及目的站协议端口号等。

下图为一个两接口的分组过滤器的示意图及其过滤规则表。

但是分组过滤器存在一定的局限性:

熟知端口号的增加使网络管理员必须不断更新过滤规则表,稍有疏忽就可能造成安全隐患;

互联网上大多数的通信量并不是发往或来自熟知端口,例如远程过程调用RPC(Remote Procedure Call)一类的服务会动态地分配端口号,这样,分组过滤器无法适应这样的应用需求;

在隧道技术下分组过滤机制显得无能为力,一些看似合法的数据报在除去封装层之后,就可能是本应由防火墙限制访问的服务,隧道技术破坏了过滤器的安全性。

为了使防火墙有效,使用数据报过滤的防火墙要限制所有IP源站、IP目的站、协议以及协议端口的访问,仅仅在分组过滤表中指定那些允许开放的计算机、网络以及服务。这样的过滤规则容易指定。