精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 计算机安全>>◇网络安全◇>>防火墙>>Firewall(5)

主题:Firewall(5)
发信人: HPVC()
整理人: ding(1999-12-13 18:56:43), 站内信件
                        (三)防火墙的构成(续2) 

3.3  包过滤

    包过滤技术(Ip Filtering or packet filtering) 的原理在于监视并过滤网络上

流入流出的Ip包,拒绝发送可疑的包。由于Internet 与Intranet 的连接多数都要使用

路由器,所以Router成为内外通信的必经端口,Router的厂商在Router上加入IP Filte-

-ring 功能,这样的Router也就成为Screening Router 或称为Circuit-level gateway

网络专家Steven.M.Bellovin认为这种Firewall 应该是足够安全的,但前提是配置合理。

然而一个包过滤规则是否完全严密及必要是很难判定的,因而在安全要求较高的场合,

通常还配合使用其它的技术来加强安全性。       

    Router 逐一审查每份数据包以判定它是否与其它包过滤规则相匹配。(注:只检查

包头的内容,不理会包内的正文信息内容) 过滤规则以用于IP顺行处理的包头信息为基

础。包头信息包括: IP 源地址、IP目的地址、封装协议(TCP、UDP、或IP Tunnel)、

TCP/UDP源端口、ICMP包类型、包输入接口和包输出接口。如果找到一个匹配,且规则允

许这包,这一包则根据路由表中的信息前行。如果找到一个匹配,且规则允许拒绝此包,

这一包则被舍弃。如果无匹配规则,一个用户配置的缺省参数将决定此包是前行还是被

舍弃。            

    *从属服务的过滤

     包过滤规则允许Router取舍以一个特殊服务为基础的信息流,因为大多数服务检测

器驻留于众所周知的TCP/UDP端口。例如,Telnet Service 为TCP port 23端口等待远程

连接,而SMTP Service为TCP Port 25端口等待输入连接。如要封锁输入Telnet 、SMTP

的连接,则Router舍弃端口值为23,25的所有的数据包。

     典型的过滤规则有以下几种:

     .允许特定名单内的内部主机进行Telnet输入对话

     .只允许特定名单内的内部主机进行FTP输入对话  

     .只允许所有Telnet 输出对话

     .只允许所有FTP 输出对话 

     .拒绝来自一些特定外部网络的所有输入信息

   * 独立于服务的过滤
 
     有些类型的攻击很难用基本包头信息加以鉴别,因为这些独立于服务。一些Router

可以用来防止这类攻击,但过滤规则需要增加一些信息,而这些信息只有通过以下方式才

能获悉:研究Router选择表、检查特定的IP选项、校验特殊的片段偏移等。这类攻击有

以下几种:

    .源IP地址欺骗攻击
 
     入侵者从伪装成源自一台内部主机的一个外部地点传送一些信息包;这些信息包似

乎像包含了一个内部系统的源IP地址。如果这些信息包到达Router的外部接口,则舍弃每

个含有这个源IP地址的信息包,就可以挫败这种源欺骗攻击。

     .源路由攻击

     源站指定了一个信息包穿越Internet时应采取的路径,这类攻击企图绕过安全措施
 
,并使信息包沿一条意外(疏漏)的路径到达目的地。可以通过舍弃所有包含这类源路由

选项的信息包方式,来挫败这类攻击。

     .残片攻击

      入侵者利用Ip残片特性生成一个极小的片断并将TCP报头信息肢解成一个分离的信

息包片断。舍弃所有协议类型为TCP、IP片断偏移值等于1的信息包,即可挫败残片的攻

击。

     从以上可看出定义一个完善的安全过滤规则是非常重要的。通常,过滤规则以表

格的形式表示,其中包括以某种次序排列的条件和动作序列。每当收到一个包时,则按

照从前至后的顺序与表格中每行的条件比较,直到满足某一行的条件,然后执行相应的

动作(转发或舍弃)。有些数据包过滤在实现时,"动作"这一项还询问,若包被丢弃是否

要通知发送者(通过发ICMP信息),并能以管理员指定的顺序进行条件比较,直至找到满足

的条件。以下是两个例子:

   * 例 一
     
     某公司有一个B类地址 123.45.0.0,它不希望Internet上的其他站点对它进行访问。

但是,该公司网中有一个子网123.45.6.0 用于和某大学合作开发项目,该大学有一个B

类地址 135.79.0.0 ,并希望大学的各个子网都能访问123.45.6.0 子网。但是,由于

135.79.99.0 子网中存在着不安全因素,因此,它除了能访问123.45.6.0 子网之外,不

能访问公司网中的其它子网。为了简单起见,假定只有从大学到公司的包,表一中列出

了所需的规则集。

                                 表 一

        规  则         源   地   址        目  的  地  址        动   作

          A             135.79.0.0           123.45.6.0           permit

          B            135.79.99.0           123.45.0.0            deny

          C               0.0.0.0              0.0.0.0             deny
     
       
     其中0.0.0.0代表任何地址,规则C是缺省规则,若没有其它的规则可满足,则应用

此规则。如果还有从公司到大学的包,相对称的规则应加入到此表格中,即源地址与目的

地址对调,再定义相应的动作。

    现在,我们按照规则ABC的顺序来进行过滤和按照BAC的顺序来进行过滤后采取的动作

的结果如表二所示(注意:两种动作的结果有不同)

                                表   二

  Packet   源 地 址       目 的 地 址      希望的动作  执行ABC后   执行BAC后
    
  1       135.79.99.1     123.45.1.1         deny        deny(B)     deny(B)
  
* 2       135.79.99.1     123.45.6.1         permit      permit(A)   deny(B)

  3       135.79.1.1      123.45.6.1         permit      permit(A)  permit(A)

  4       135.79.1.1      123.45.1.1         deny         deny(C)     deny(c) 
       

     从表二可以看出,以ABC的顺序来应用规则的Router能达到预想的结果: 从

135.79.99.0子网到公司网的包(如包1)都被拒绝(根据规则B),从135.79.99.0子网到

123.45.6.0子网的包(如包2)将被转发(根据规则A),从大学中的其它子网到123.45.6.0

的子网包(如包3)也将被转发(根据规则A),从大学中的其它子网到公司中的其它字网的

包(如包4)都被拒绝(根据规则C)。若以BAC的顺序来应用规则,则不能达到预计的目的。

     实际上,在上面的规则外集中存在着一个小错误,正是由于这个错误,导致了以

ABC的顺序和以BAC的顺序来应用规则而出现了不同的结果。该错误就是:规则B似乎用于

限制135.79.99.0子网访问公司网,但实际上这是多余的。如果将这条规则去掉,那么

顺序ABC和BAC都将归结为AC顺序。以AC的顺序进行过滤后的结果如表三所示。

                     
                             表      三

     Packet     源  地  址       目 的 地 址      希望的动作     AC 动作
    
      1         135.79.99.1      123.45.1.1         deny          deny(C) 
  
      2         135.79.99.1      123.45.6.1         permit       permit(A)

      3         135.79.1.1       123.45.6.1         permit       permit(A)

      4         135.79.1.1       123.45.1.1         deny           deny(C)       
       



    * 例  二

      ________
      |      |   Network 199.245.180.0                  ______________ 
      |______|                           _________      |            |  
_________|_______________________________|Packet |______| Internet   |
  ___|____         ___|___               |Filter |      |____________|  
  |      |         |     |               |router | 
  |______|         |_____|               |_______|  

                               图   一


     如图一所示的网络,由包过滤的Router作为在内部被保护的网络与外部不安全的网

络之间的第一道防线。假设网络的安全策略为:从外部主机来的Internet Mail 在一个指

定的网关上接收,同时你不信任外部网络上一个名叫HPVC的主机,准备拒绝任何由它发

起的网络通信。
   
     本例中,关于使用SMTP的网络安全策略必须转移为包过滤规则。可以将网络安全规

则转换成下述用语言表示的规则:

     规则1: 拒绝从主机HPVC发起的连接。
  
     规则2:允许连接到我们的E-Mail网关。

  这些规则可以用下面的表四来表示。星号(*)表示可以匹配该列的任何值。
                                
                                
                                表    四

 规则     动作    本地     本地    远地主机    远地            说明
 序号             主机    端口号              端口号
   
  1      Block     *        *       HPVC         *        Block traffic from 
                                                                HPVC

  2      Allow   Mail-GW    25        *          *        Allow Connection to Our 
                                                                Mail gateway

                             
       对于表四所示的规则1而言,在远地主机栏中填入了HPVC,而其它所有栏的内容

都是星号;在动作栏填入阻塞。这条规则的意义可以理解为:阻塞所有从远地主机HPVC

发起的从它的任意端口到我们本地任意主机的任意端口的连接。

      对于表四所示的规则2而言,在本地主机和本地端口号两栏中都有内容,而其它栏

都是星号;在动作栏填入允许。这个规则的意义可以理解为:允许从任意远地主机的任

意端口发起的到本地主机Mail-GW的25号端口连接(端口25是为SMTP保留的)

     规则是按照它们在表中的顺序来执行的。如果一个分组不符合任何规则,则它将被

拒绝。
   
     在表四中对规则的描述有一个严重的问题,它允许任意外部主机从端口25发起一个

呼叫。端口25是为SMTP保留的,但是一个外部主机有可能利用这个权利从事其它活动。

这条规则的一个更好的描述方案是允许本地主机发起呼叫,同远地主机的端口25进行通

信。这使得本地主机可以向远地站点发送电子邮件。如果远地主机不是用端口25执行

SMTP,则SMTP的发送进程将不能发送电子邮件。这等价与远地主机不支持电子邮件。

     一个TCP连接是一个全双工连接,信息双向流动。在表四所示的包过滤规则中没有

明确指定被发送报文分组中信息的传递方向,即是从本地主机发送远地站点,还是从远

地站点发送到本地主机。

    当一个TCP包在某一个方向上传递时,它必须被接收方确认。接收方通过设置TCP ACK

标志来发送应答帧。TCP ACK标志也被用来确认TCP建立连接请求,ACK包将在所有TCP连接

上发送。当一个ACK包被发送后,发送方向就逆转过来,包过滤规则应该考虑为响应控制

或数据包而发回的ACK包。

    对于下面的表五中的规则1,在源主机栏中填入199.245.180.0,在目标主机端口号栏

中填入25,其它栏中都填入星号,在动作栏中填入允许.整个规则的意义为:允许所有从网

络199.245.180.0任意端口发起的任意目标主机端口号为25的连接 (其中199.245.180.0

是一个C类网络地址,主机号字段为0表示网络上任意一台主机).

    基于以上的讨论,修改后的包过滤规则如表五中所示.


                                表    五
                            SMTP的包过滤规则

规则  动作   源主机       源端     目标主机     远地     TCP标识     说明
序号                      口号                 端口号    /IP选项    
 
1    Allow  199.245.180.0  *           *         25              Allow packet 
                                                                 from Network
                                                                 199.245.180.0

2    Allow     *           25    199.245.180.0    *      TCP ACK  Allow return   
                                                                  acknowledgement       

                    
    对于表五中的规则2,在源端口号栏中填入25,在目标主机栏中填入199.245.180.0,

在TCP标志和IP选项栏中填入TCP ACK,其它栏中都填入星号,在动作栏中填入允许.整个

规则的意义为:允许所有从任何外部网络主机上源端口号25发起的到任意本地主机(在网

络199.245.180.0上)任意端口号的TCP ACK标志置位的连接.

    表五中的两条过滤规则合并起来的效果是:允许网络199.245.180上的任意主机同任何

外部网络主机的SMTP端口建立连接.

    由于包过滤器只工作在OSI模型的第二和第三层(数据层和网络层).它无法绝对保证

返回的TCP确认帧中是否属于同一个连接.在实际应用中,这个策略运行得很好,因为TCP

维护连接两侧的状态信息,它们知道将要发送或接收的序号和确认信息.同时,一些上层

应用服务,例如TELNET ,SMTP 和FTP等,只能接受遵循应用层协议规则的包,想要伪造包含正确

应答信息的包是非常困难的.如想要使安全程度更高,可考虑和应用层网关一起使用(下

节将会讨论). 


     罗罗嗦嗦说了一大通,可以综述为下面两点:

  包过滤路由器的优点:绝大多数Internet 防火墙系统只用一个包过滤路由器.与设计过

                     滤器和匹配Router不同的是,执行PACKET FILTER 所用的时间很
                
                     少或几乎不需要什么时间.因为Internet 访问一般被提供给一个
     
                     WAN接口.如果通信负载适中且定义的过滤很少的话,则对Router

                     性能没有多大影响.最后一点,包过滤路由器对终端用户和应用程

                     序是透明的,因此不需要专门的用户培训或在每主机上设置特别

                     的软件.


 包过滤路由器的局限性:定义包过滤器可能是一项复杂的工作,因为网管员需要详细地了

                      解Internet 各种服务、包头格式和他们在希望每个域查找的特

                      定的值。如果必须支持复杂的过滤要求的,则过滤规则集可能
             
                      会变得很长和很复杂,从而很难管理。存在几种自动测试软件,

                      被配置到Router上后即可校验过滤规则。这可能对未检测到的
  
                      易损部件开放了一个地点。

   
     一般来说,一个路由器和信息包吞吐量随过滤器数量的增加而减少。Router 被优

化用来从每个包中提取目的IP地址、查找一个相对简单的路由表,而后将信息包顺向运

行到适当转发接口。如果过滤可执行,Router还必须对每个包执行所有过滤规则。这可

能消耗CPU的资源,并影响一个完全饱和的系统性能。
    
 




   

--
※ 来源:·广州网易 BBS bbs.nease.net·[FROM: 202.96.185.150]

[关闭][返回]