分类: 网络与安全
2011-11-13 16:30:22
防火墙是近期发展起来的一种保护计算机网络安全的技术性措施,它是一个用以阻止网络中的黑客访问某个机构网络的屏障,也可称之为控制进/出两个方向通信的门槛。在网络边界上通过建立起来的相应网络通信监控系统来隔离内部和外部网络,以阻档外部网络的侵入。目前的防火墙主要有以下三种类型:包过滤防火墙、代理防火墙和双穴主机防火墙三种
包过滤防火墙
包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更复杂的动作。
包过滤防火墙
在Linux系统下,包过滤功能是内建于核心的(作为一个核心模块,或者直接内建),同时还有一些可以运用于数据包之上的技巧,不过最常用的依然是查看包头以决定包的命运。 包过滤防火墙将对每一个接收到的包做出允许或拒绝的决定。具体地讲,它针对每一个数据报的报头,按照包过滤规则进行判定,与规则相匹配的包依据路由信息继续转发,否则就丢弃。包过滤是在IP层实现的,包过滤根据数据包的源IP地址、目的IP地址、协议类型(TCP包、UDP包、ICMP包)、源端口、目的端口等报头信息及数据包传输方向等信息来判断是否允许数据包通过。 包过滤也包括与服务相关的过滤,这是指基于特定的服务进行包过滤,由于绝大多数服务的监听都驻留在特定TCP/UDP端口,因此,为阻断所有进入特定服务的链接,防火墙只需将所有包含特定TCP/UDP目的端口的包丢弃即可。
包过滤防火墙的工作层次
包过滤是一种内置于Linux内核路由功能之上的防火墙类型,其防火墙工作在网络层。
包过滤防火墙的工作原理
使用过滤器
数据包过滤用在内部主机和外部主机之间, 过滤系统是一台路由器或是一台主机。过滤系统根据过滤规则来决定是否让数据包通过。用于过滤数据包的路由器被称为过滤路由器。
数据包信息的过滤
数据包过滤是通过对数据包的IP头和TCP头或UDP头的检查来实现的,主要信息有:
* IP源地址
* IP目标地址
* 协议(TCP包、UDP包和ICMP包)
* TCP或UDP包的源端口
* TCP或UDP包的目标端口
* ICMP消息类型
* TCP包头中的ACK位
* 数据包到达的端口
* 数据包出去的端口
在TCP/IP中,存在着一些标准的服务端口号,例如,HTTP的端口号为80。通过屏蔽特定的端口可以禁止特定的服务。包过滤系统可以阻塞内部主机和外部主机或另外一个网络之间的连接,例如,可以阻塞一些被视为是有敌意的或不可信的主机或网络连接到内部网络中。
过滤器的实现
数据包过滤一般使用过滤路由器来实现,这种路由器与普通的路由器有所不同。
普通的路由器只检查数据包的目标地址,并选择一个达到目的地址的最佳路径。它处理数据包是以目标地址为基础的,存在着两种可能性:若路由器可以找到一个路径到达目标地址则发送出去;若路由器不知道如何发送数据包则通知数据包的发送者“数据包不可达”。
过滤路由器会更加仔细地检查数据包,除了决定是否有到达目标地址的路径外,还要决定是否应该发送数据包。“应该与否”是由路由器的过滤策略决定并强行执行的。
路由器的过滤策略
* 拒绝来自某主机或某网段的所有连接。
* 允许来自某主机或某网段的所有连接。
* 拒绝来自某主机或某网段的指定端口的连接。
* 允许来自某主机或某网段的指定端口的连接。
* 拒绝本地主机或本地网络与其它主机或其它网络的所有连接。
* 允许本地主机或本地网络与其它主机或其它网络的所有连接。
* 拒绝本地主机或本地网络与其它主机或其它网络的指定端口的连接。
* 允许本地主机或本地网络与其它主机或其它网络的指定端口的连接。
过滤器操作的基本过程
下面做个简单的叙述:
(1)包过滤规则必须被包过滤设备端口存储起来。
(2)当包到达端口时,对包报头进行语法分析。大多数包过滤设备只检查IP、TCP、或UDP报头中的字段。
(3)包过滤规则以特殊的方式存储。应用于包的规则的顺序与包过滤器规则存储顺序必须相同。
(4)若一条规则阻止包传输或接收,则此包便不被允许。
(5)若一条规则允许包传输或接收,则此包便可以被继续处理。
(6)若包不满足任何一条规则,则此包便被阻塞。
包过滤技术的优点
→对于一个小型的、不太复杂的站点,包过滤比较容易实现。
→因为过滤路由器工作在IP层和TCP层,所以处理包的速度比代理服务器快。
→过滤路由器为用户提供了一种透明的服务,用户不需要改变客户端的任何应用程序,也不需要用户学习任何新的东西。因为过滤路由器工作在IP层和TCP层,而IP层和TCP层与应用层的问题毫不相关。所以,过滤路由器有时也被称为“包过滤网关”或“透明网关”,之所被称为网关,是因为包过滤路由器和传统路由器不同,它涉及到了传输层。
→过滤路由器在价格上一般比代理服务器便宜。
包过滤技术的缺点
→一些包过滤网关不支持有效的用户认证。
→规则表很快会变得很大而且复杂,规则很难测试。随着表的增大和复杂性的增加,规则结构出现漏洞的可能 性也会增加。
→这种防火墙最大的缺陷是它依赖一个单一的部件来保护系统。如果这个部件出现了问题,会使得网络大门敞开,而用户其至可能还不知道。
→在一般情况下,如果外部用户被允许访问内部主机,则它就可以访问内部网上的任何主机。
→包过滤防火墙只能阻止一种类型的IP欺骗,即外部主机伪装内部主机的IP,对于外部主机伪装外部主机的IP欺骗却不可能阻止,而且它不能防止DNS欺骗。
虽然,包过滤防火墙有如上所述的缺点,但是在管理良好的小规模网络上,它能够正常的发挥其作用。一般情况下,人们不单独使用包过滤网关,而是将它和其他设备(如堡垒主机等)联合使用。
包过滤的工作是通过查看数据包的源地址、目的地址或端口来实现的,一般来说,它不保持前后连接信息,过滤决定是根据 当前数据包的内容来做的。管理员可以做一个可接受机和服务的列表,以及一个不可接受机和服务的列表。在主机和网络一级,利用数据包过滤很容易实现允许或禁止访问。
由此不难看出这个层次的防火墙的优点和弱点,由于防火墙只是工作在OSI的第三层(网络层)和第四层(传输层),因此包过滤的防火墙的一个非常明显的优势就是速度,这是因为防火墙只是去检查数据报的报头,而对数据报所携带的内容没有任何形势的检查,因此速度非常快。与此同时,这种防火墙的缺点也是显而易见的,比较关键的几点如下所述。
(1)由于无法对数据报的内容进行核查,一次无法过滤或审核数据报的内容
体现这一问题的一个很简单的例子就是:对某个端口的开放意味着相应端口对应的服务所能够提供的全部功能都被开放,即使通过防火墙的数据报有攻击性,也无法进行控制和阻断。例如在一个简单的Web服务器,而包过滤的防火墙无法对数据报内容进行核查。因此,未打相应补丁的提供Web服务的系统,及时在防火墙的屏蔽之后,也会被攻击着轻易获取超级用户的权限。
(2)由于此种类型的防火墙工作在较低层次,防火墙本身所能接触道德信息较少,所以它无法提供描述细致事件的日志系统。
此类防火墙生成的日志常常只是包括数据报捕获的时间、网络层的IP地址、传输层的端口等非常原始的信息。至于这个数据报内容是什么,防火墙不会理会,而这对安全管理员而言恰恰是很关键的。因为及时一个非常优秀的系统管理员,一旦陷入大量的通过/屏蔽的原始数据包信息中,往往也是难以理清头绪,这在发生安全事件时给管理员的安全审计带来很大的困难。
(3)所有可能用到的端口(尤其是大于1024的端口)都必须开放,对外界暴露,从而极大地增加了被攻击的可能性
通常对于网络上所有服务所需要的数据包进出防火墙的二端口都要仔细考虑,否则会产生意想不到的情况。然而我们知道,当被防火墙保护的设备与外界通信时,绝大多数应用要求发出请求的系统本身提供一个端口,用来接收外界返回的数据包,而且这个端口一般是在1024到65536之间不确定的,如果不开发那个这些端口,通信将无法完成,这样就需要开发那个1024以上的全部端口,允许这些端口的数据包进出。而这就带来非常大的安全隐患。例如:用户网中有一台UNIX服务器,对内部用户开放了RPC服务,而这个服务是共做在高端口的,那么这台服务器非常容易遭到基于RPC应用的攻击。
(4)如果网络结构比较复杂,那么对管理员而言配置访问控制规则将非常困难
当网络发展到一定规模时,在路由器上配置访问控制规则将会非常繁琐,在一个规则甚至一个地址处出现错误都有可能导致整个访问控制列表无法正常使用。
代理防火墙
第一代:代理防火墙
代理防火墙也叫应用层网关(Application Gateway)防火墙。这种防火墙通过一种代理(Proxy)技术参与到一个TCP连接的全过程。从内部发出的数据包经过这样的防火墙处理后,就好像是源于防火墙外部网卡一样,从而可以达到隐藏内部网结构的作用。这种类型的防火墙被网络安全专家和媒体公认为是最安全的防火墙。它的核心技术就是代理服务器技术。
所谓代理服务器,是指代表客户处理在服务器连接请求的程序。当代理服务器得到一个客户的连接意图时,它们将核实客户请求,并经过特定的安全化的 Proxy应用程序处理连接请求,将处理后的请求传递到真实的服务器上,然后接受服务器应答,并做进一步处理后,将答复交给发出请求的最终客户。代理服务器在外部网络向内部网络申请服务时发挥了中间转接的作用。
代理类型防火墙的最突出的优点就是安全。由于每一个内外网络之间的连接都要通过Proxy的介入和转换,通过专门为特定的服务如 Http编写的安全化的应用程序进行处理,然后由防火墙本身提交请求和应答,没有给内外网络的计算机以任何直接会话的机会,从而避免了入侵者使用数据驱动类型的攻击方式入侵内部网。包过滤类型的防火墙是很难彻底避免这一漏洞的。就像你要向一个陌生的重要人物递交一份声明一样,如果你先将这份声明交给你的律师,然后律师就会审查你的声明,确认没有什么负面的影响后才由他交给那个陌生人。在此期间,陌生人对你的存在一无所知,如果要对你进行侵犯,他面对的将是你的律师,而你的律师当然比你更加清楚该如何对付这种人。
图3 传统代理型防火墙
代理防火墙的最大缺点就是速度相对比较慢,当用户对内外网络网关的吞吐量要求比较高时,(比如要求达到75-100Mbps时)代理防火墙就会成为内外网络之间的瓶颈。所幸的是,目前用户接入Internet的速度一般都远低于这个数字。在现实环境中,要考虑使用包过滤类型防火墙来满足速度要求的情况,大部分是高速网(ATM或千兆位以太网等)之间的防火墙。
第二代:自适应代理防火墙
自适应代理技术(Adaptive proxy)是最近在商业应用防火墙中实现的一种革命性的技术。它可以结合代理类型防火墙的安全性和包过滤防火墙的高速度等优点,在毫不损失安全性的基础之上将代理型防火墙的性能提高10倍以上。组成这种类型防火墙的基本要素有两个:自适应代理服务器(Adaptive Proxy Server)与动态包过滤器(Dynamic Packet filter)。
图4 自适应代理防火墙
在自适应代理与动态包过滤器之间存在一个控制通道。在对防火墙进行配置时,用户仅仅将所需要的服务类型、安全级别等信息通过相应 Proxy的管理界面进行设置就可以了。然后,自适应代理就可以根据用户的配置信息,决定是使用代理服务从应用层代理请求还是从网络层转发包。如果是后者,它将动态地通知包过滤器增减过滤规则,满足用户对速度和安全性的双重要求。
双穴主机防火墙
双穴主机防火墙:该防火墙是用主机来执行安全控制功能。一台双穴主机配有多个网卡,分别连接不同的网络。双穴主机从一个网络收集数据,并且有选择地把它发送到另一个网络上。网络服务由双穴主机上的服务代理来提供。内部网和外部网的用户可通过双穴主机的共享数据区传递数据,从而保护了内部网络不被非法访问。(这个貌似资料比较少)