分享

防火墙基础知识

 笑尽英雄啊 2013-10-17
 3.3 包过滤

包过滤技术(Ip Filtering or packet filtering) 的原理在于监视并过滤网络上流入流出的Ip包,拒绝发送可疑的包。由于Internet 与Intranet 的连接多数都要使用路由器,所以Router成为内外通信的必经端口,Router的厂商在Router上加入IP Filtering 功能,这样的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)     
    



  * 例 二

3.jpg

如图一所示的网络,由包过滤的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的资源,并影响一个完全饱和的系统性能。      


3.4 应用网关
  
为了克服与包过滤路由器相关联的某些弱点,防火墙需要使用应用软件来转发和过滤Telnet和Ftp等服务的连接。这样一种应用叫做代理服务,而运行代理服务软件的主系统叫做应用网关。应用网关和包过滤路由器可以组合在一起使用,以获得高于单独使用的安全性和灵活性。

作为一个例子,请考虑一个用包过滤路由器封锁所有输入Telnet 和Ftp 连接的网点。路由器允许Telnet和Ftp包只通过一个主系统,即Telnet/Ftp应用网关,然后再连接到目的主系统,过程如下:

   1. 用户首先把Telnet连接到应用网关,并输入内部主系统的名字;
   2. 网关检验用户的源IP地址,并根据任何合适的访问准则接受或拒绝;
   3. 用户可能需要证明自己的身份(可使用一次性口令装置);
   4. 代理服务软件在网关和内部主系统之间建立Telnet连接;
   5. 于是,代理服务软件在两个连接之间传送数据;
   6. 应用网关记录连接情况。

这一例子指出了使用代理服务软件的几个好处。第一,代理服务软件只允许有代理的服务通过。换句话说,如果应用网关包含Telnet和Ftp的代理软件,则只有Ftp和Telnet被允许进入受保护的子网,而其它所有服务都完全被封锁住。对有些网点来说,这种程度的安全性是很重要的,因为它保证,只有那些被认为“可信赖的”服务才被允许通过防火墙。它还防止其他不可靠的服务不会背着防火墙管理人员实施。

使用代理服务的另一好处是可以过滤协议。例如,有些防火墙可以过滤FTP连接,并拒绝使用FTP 协议中的 put 命令。如果人们要保证用户不能写到匿名FTP服务器软件,

则这一点是很有用的。

4.jpg

应用网关有三种基本的原型,分别适用于不同的网络规模。

     * 双穴主机网关(Dual-Homed Gateway)
     * 屏蔽主机网关(Screened Host Gateway)
     * 屏蔽子网网关(Screened Subnet Gateway)


这三种原型有一个共同的特点,就是都需要一台主机(如上面所述一样),通常称为桥头堡主机(Bastion Host) 。该主机充当应用程序转发者、通信登记者以及服务提供者的角色。因此,保护该主机的安全性是至关重要的,建立防火墙时,应将较多的注意力放在该主机上。

   * 双穴主机网关

该原型的结构如下图所示。

5.jpg

其中,桥头堡主机充当网关,因此,需要在此主机中装两块网卡,并在其上运行防火墙软件。受保护网与Internet之间不能直接进行通信,必须经过桥头堡主机,因此,不必显示地列出受保护网与不受保护网之间的路由,从而达到受保护网除了看到桥头堡主机之外,不能看到其他任何系统的效果。同时,桥头堡主机不转发TCP/IP包,网络中的所有服务都必须由此主机的相应代理程序支持。
    
由于双穴主机网关容易安装,所需的硬件设备也较少,且容易验证其正确性,因此,这是一种使用较多的纺火墙。

双穴主机网关最致命的弱点是:一旦防火墙被破坏,桥头堡主机实际上就变成了一台没有寻径功能的路由器,一个有经验的攻击者就能使它寻径,从而使受保护网完全开放并受到攻击。例如,在基于Unix的双穴主机网关中,通常是先修改一个名叫IPforwarding的内核变量,来禁止桥头堡主机的寻径能力,非法攻击者只要能获得网关上的系统特权,就能修改此变量,使桥头堡主机恢复寻径能力,以进行攻击。

  * 屏蔽主机网关
 
该原型的结构如下图所示。

6.jpg

其中,桥头堡主机在受保护网中,将带有包屏蔽功能的路由器置于保护网和Internet之间,它不允许Internet对保护网的直接访问,只允许对受保护网中桥头堡主机的访问。与双穴网关类似,桥头堡主机运行防火墙软件。

屏蔽主机网关是一种很灵活的防火墙,它可以有选择地允许那些值得信任的应用程序通过路由器。但它不像双穴网关,只需注意桥头堡主机的安全性即可,它必须考虑两方面的安全性,即桥头堡主机和路由器。如果路由器中的访问控制列表允许某些服务能够通过路由器,则防火墙管理员不仅要管理桥头堡主机中的访问控制表,还要管理路由器中的访问控制列表,并使它们互相协调。当路由器允许通过的服务数量逐渐增多时,验证防火墙的正确性就会变得越来越困难。

* 屏蔽子网网关

该原型的结构如下图所示。

7.jpg

其中,一个小型的独立网络放在受保护网与Internet之间,对这个网络的访问受到路由器中屏蔽规则的保护。因此,屏蔽子网中的主机是唯一一个受保护网和Internet都能访问到的系统。

从理论上来说,这也是一种双穴网关的方法,只是将其应用到了网络上。防火墙被破坏后,它会出现与双穴主机网关同样的问题。不同的是,在双穴主机网关中只需配置桥头堡主机的寻径功能,而在屏蔽子网网关中则需配置三个网络(受保护网、屏蔽子网和Internet)之间的寻径功能,即先要闯入桥头堡主机,再进入受保护网中的某台主机,然后返回包屏蔽路由器,分别进行配置。这对攻击者来说显然是极其困难的。另外,由于Internet很难直接与受保护网进行通信,因此,防火墙管理员不需指出受保护网到Internet之间的路由。这对于保护大型网络来说是一种很好的方法。

应用网关的一个缺点是,就Telnet 等客户机--服务器协议来说,需要采取两个步骤来连接输入信息或输出信息。有些应用网关需要经过修改的客户机,这一点既可看作是缺点,也可看作是优点,视修改的客户机是否更加容易使用防火墙而定。Telnet应用网关不一定需要经过修改的Telnet客户机,但是,它需要修改用户行为:用户必须连接到防火墙(但不记录),而不是直接连接到主系统。但是,经过修改的Telnet客户机可以使防火墙透明,因为它允许用户用Telnet命令规定目的系统(不是防火墙)。防火墙起着通向目的系统通道的作用,从而拦截连接,再按需完成其他步骤,如查询一次性口令。用户行为仍然是相同的,但其代价是每个系统需要一个经过修改的客户机。

除了Telnet 外,应用网关一般用于Ftp 和电子邮件,同时也用于XWindows和其他某些服务。有些Ftp应用网关包括拒绝特定主系统的put 和get 命令的能力。例如,一个已同内部系统(如匿名Ftp服务器)建立Ftp对话(通过Ftp应用网关)的外部用户,可能试图把文件上装到服务器。应用网关可以过滤Ftp协议,并拒绝把所有puts命令发送给匿名Ftp服务器;这将保证没有文件能上装到服务器,而且所提供的确信程度要高于只依赖由设置正确的匿名Ftp服务器进行的文件许可。

电子邮件应用网关可集中收集电子邮件,并把它分发给内部主系统和用户。对外部用户来说,所有内部用户都拥有电子邮件地址,其格式为:user@emailhost 其中,emailhost是电子邮件网关的名字。网关会接受外部用户的邮件,然后按需把邮件转发到其他内部系统。从内部系统发送电子邮件的用户可以从其主系统直接发送电子邮件,否则在内部系统名字只有受保护的子网知道的情况下,邮件会发送给应用网关,然后应用网关着把邮件转发给目的主系统。有些电子邮件网关使用更加安全的sendmail程序版本来接收电子邮件

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多