1. 数据包过滤
包过滤防火墙一般作用在网络层(IP层),故也称网络层防火墙(Network Lev Firewall)或IP过滤器(IP filters)它是对进出内部网络的所有信息进行分析,并按照一定的安全策略(信息过滤规则)对进出内部网络的去处进行限制,允许授权信息通过,拒绝非授权信息通过。信息过滤规则是以其所收到的数据包头信息为基础,比如IP数据包源地址IP数据包目的地址、封装协议类型(TCP、UDP、ICMP等)、TCP/IP源端口号、TCP/IP目的端口号、ICMP报文类型等。当一个数据包满足过滤规则,则允许此数据包通过,否则拒绝此包通过,相当于此数据包所要到达的网络物理上被断开,起到了保护内部网络的作用。包过滤的核心就是安全策略即包过滤算法的设计。采用这种技术的防火墙优点在于速度快、实现方便,但安全性能差,且由于不同操作系统环境下TCP和UDP端口号所代表的应用服务协议类型有所不同,故兼容性差。

包过滤型防火墙往往可以用一台过滤路由器来实现,对所接收的每个数据包做允许拒绝的决定。路由器审查每个数据包以便确定其是否与某一条包过滤规则匹配。过滤规则基于可以提供给IP转发过程的包头信息。

包头信息中包括IP源地址、IP目的地址、内装协议(ICP、UDP、ICMP、或IP Tunnel)、TCP/UDP目标端口、ICMP消息类型、TCP包头中的ACK位。包的进入接口和输出接口如果有匹配,并且规则允许该数据包通过,那么该数据包就会按照路由表中的信息被转发。如果匹配并且规则拒绝该数据包,那么该数据包就会被丢弃。如果没有匹配规则,用户配置的缺省参数会决定是转发还是丢弃数据包。

包过滤路由器使得路由器能够根据特定的服务允许或拒绝流动的数据,因为多数的服务收听者都在已知的TCP/UDP端口号上。例如,Telnet服务器在TCP的23号端口上监听远地连接,而SMTP服务器在TCP的25号端口上监听连接。为了阻塞所有进入的Telnet连接,路由器只需简单的丢弃所有TCP端口号等于23的数据包。为了将进来的Telnet连接限制到内部的数台机器上,路由器必须拒绝所有TCP端口号等于23并且目标IP地址不等于允许主机的IP地址的数据包。

(1) 过滤路由器型防火墙的优点
1) 处理包的速度比较快,过滤路由器为用户提供了一种透明的服务,用户不用改变客户端程序或改变自己的行为。

2) 实现包过滤几乎不再需要费用(或极少的费用),因为这些特点都包含在标准的路由器软件中。由于Internet访问一般都是在WAN接口上提供,因此在流量适中并定义较少过滤器时对路由器的性能几乎没有影响。

3) 包过滤路由器对用户和应用来讲是透明的,所以不必对用户进行特殊的培训和在每台主机上安装特定的软件。

(2) 包过滤路由器型防火墙的缺点
1)防火墙的维护比较困难,定义数据包过滤器会比较复杂,因为网络管理员需要对各种Internet服务、包头格式、以及每个域的意义有非常深入的理解。

2)对于外部主机伪装其他可信任的外部主机IP的IP欺骗不能阻止。

3)任何直接经过路由器的数据包都有被用做数据驱动式***的潜在危险。我们已经知道数据驱动式***从表面上来看是由路由器转发到内部主机上没有害处的数据。该数据包括了一些隐藏的指令,能够让主机修改访问控制和与安全有关的文件,使得***者能够获得对系统的访问权。

4)一些包过滤网关不支持有效的用户认证。因为IP地址是可以伪造的,因此如果没有基于用户的认证,仅通过IP地址来判断是不安全的。

5)不可能提供有用的日志,或根本就不提供。

6)随着过滤器数目的增加,路由器的吞吐量会下降。可以对路由器进行这样的优化:抽取每个数据包的目的IP地址,进行简单的路由表查询,然后将数据包转发到正确的接口上去传输。如果打开过滤功能,路由器不仅必须对每个数据包作出转发决定,还必须将所有的过滤器规则施用给每个数据包。这样就消耗CPU时间并影响系统的性能。

7)IP包过滤器可能无法对网络上流动的信息提供全面的控制。包过滤路由器能够允许或拒绝特定的服务,但是不能理解特定服务的上下文环境和数据。

所以包过滤防火墙一般用在下列场合:
" 机构是非集中化管理。

" 机构没有强大的集中安全策略。

" 网络的主机数非常少。

" 主要依赖于主机安全来防止***,但是当主机数增加到一定的程度的时候,仅靠主机安全是不够的。

" 没有使用DHCP这样的动态IP地址分配协议。

(3) 过滤规则制定
1) 按地址过滤
最简单的数据包过滤结构是按地址过滤。这种方法的过滤要用户限制基于数据包源或目的地址的数据包流,而不考虑包括什么协议。这样过滤能用来允许特定的外部主机与特定的内部主机对话。例如,阻止侵袭者注入伪造的数据包(如伪造源IP地址)到用户的网络中去。

例如,如果用户想要阻止引入有伪造源地址的数据包,用户就可以做这样的规定:
规则 方向 源地址 目的地址 动作
A 入站 内部 任意 拒绝
因为内部地址只可能是出站方向,所以出现表中所示情况表明伪造源地址,从而加以拒绝。

规则A说明包过滤防火墙可以帮助用户过滤掉一些伪造源地址的***,但如果一个***者声称是另一个不同的外部主机,这个规则就无能为力。

按地址过滤最大的好处就是可以将一些不希望内部用户登陆的站点屏蔽掉,例如×××,反动言论网站等。

按地址过滤的另一个应用就是防止内部网络中的某主机对外部网络中一目标主机进行拒绝服务***(DoS)。

拒绝服务(Denial of Service,简称DOS),是一种简单的破坏性***,通常***者利用TCP/IP协议中的某个弱点,或者系统存在的某些漏洞,对目标系统发起大规模的进攻,致使***目标无法对合法用户提供正常的服务,***模型如图7.1.6所示。 
大量数据包 ***方 ***方内部网络 Internet 被***目标系统
防火墙(路由器) 图7.1.6 拒绝服务***示意图在对目标系统的***中,必须伪造源地址,目标主机对伪造的源地址是不能识别的,因为它并不能判断这些数据包的真正来源。也不知道其实来自同一台主机,但***者的出口路由器却能发现,因为一般伪造源地址都是随机的,不可能都选用***者所在内部网络主机的IP地址,所以,出口路由器能发现一个出站方向的数据包源地址居然是外部网络的主机地址。这台路由器上的包过滤防火墙就可以加一个规则:

规则 方向 源地址 目的地址 动作
B 出站 外部 任意 拒绝过滤掉这些数据包,从而阻止单机的DOS***。但对于象DDOS(即分布式拒绝服务***)这样的多点***,包过滤防火墙则无能为力。 2)按服务过滤
按地址对数据包过滤并不能消除所有的安全隐患,或者是,虽然消除了这些安全隐患,却限制了很多的服务。譬如,我们只想屏蔽某台外部主机对内部主机的Telnet服务,而该外部主机其他的服务是允许的,用地址过滤的办法是无法做到这一点的,要么禁止该主机的一切服务,要么屏蔽一切该主机的一切服务。在这样的情况下,可以使用按服务过滤。