[解析] 从所采用的技术看,防火墙的基本类型包括:包过滤型、状态检测型、代理服务器型、电路级网关、应用级网关等。
(1)包过滤防火墙(Package Filtering)
包过滤防火墙也叫网络级防火墙,如图所示。一般是基于源地址和目的地址、应用、协议以及每个IP包的端口来作出通过与否的判断。通常用一台路由器实现,它的基本思想很简单:对所接收的每个数据包进行检查,根据过滤规则,然后决定转发或者丢弃该包,对进出两个方向上都要进行配置。
包过滤防火墙进行数据过滤时,查看包中可用的基本信息(源地址、目的地址、端口号和协议等)。过滤器往往建立一组规则,防火墙检查每一条规则,直至发现包中的信息与某规则相符。如果没有一条规则能符合,防火墙就会使用默认规则。一般情况下,默认规则就是要求防火墙丢弃该包。其次通过定义基于TCP或UDP数据包的端口号,防火墙能够判断是否允许建立特定的连接,如Telnet和FTP连接。
建立包过滤防火墙的过程如下。
1)对来自专用网络的数据包,只允许来自内部地址的包通过,因为其他的包包含不正确的包头信息。这条规则可以防止网络内部的任何人通过欺骗性的源地址发起攻击。而且如果黑客对专用网络内部的机器具有了不知从何得来的访问权,这种过滤方式可以阻止黑客从网络内部发起攻击。
2)在公共网络中,只允许目的地址为80端口的包通过。这条规则只允许传入的连接为Web连接。这条规则也允许与Web连接使用相同端口的连接,所以它并不是十分安全的。
3)丢弃从公共网络传入的包,而这些包都有用户的网络内的源地址,从而减少IP欺骗性的攻击。
4)丢弃包含源路由信息的包,以减少源路由攻击。要记住在源路由攻击中,传入的包包含路由信息,它覆盖了包通过网络应采取的正常路由,可能会绕过已有的安全程序。通过忽略源路由信息,防火墙可以减少这种方式的攻击。
包过滤路由器的优点如下。
1)防火墙对每条传入和传出网络的数据包实行低水平控制。
2)每个IP包的字段都被检查,例如源地址、目的地址、协议和端口等。防火墙将基于这些信息应用过滤规则。
3)防火墙可以识别和丢弃带欺骗性源IP地址的包。
4)包过滤防火墙是两个网络之间访问的唯一来源。因为所有的通信必须通过防火墙,绕过是困难的。
5)包过滤通常被包含在路由器数据包中,所以不必额外的系统来处理这个特征。
总的来说,包过滤路由器具有简单、费用低、对用户透明利效率高的特点。
包过滤路由器的缺点如下。
1)配置困难。因为包过滤防火墙很复杂,人们经常会忽略建立一些必要的规则,或者错误配置了已有的规则,在防火墙上留下漏洞。然而在市场上,许多新版本的防火墙对这个缺点正在进行改进,如开发者实现了基于图形化用户界面(GUI)的配置和更直接的规则定义。
2)为特定服务开放的端口存在着危险,可能会被用于其他传输。例如,Web服务器默认端口为80,当计算机上又安装了RealPlayer,软件会自动搜寻可以允许连接到RealAudio服务器的端口,而不管这个端口是否被其他}办议所使用,这样无意中RealPlayer就利用了Web服务器的端口。
3)可能还有其他方法绕过防火墙进入网络,例如,拨入连接。但这个并不是防火墙自身的缺点,而是不应该在网络安全上单纯依赖防火墙的原因。
总的来说,包过滤路由器有维护困难和不支持用户鉴别的缺点。
(2)状态检测防火墙
状态检测防火墙试图跟踪通过防火墙的网络连接和包,这样防火墙就可以使用一组附加的标准,以确定是否允许和拒绝通信。它是在使用了基本包过滤防火墙的通信上应用一些技术来做到这点的,因此状态检测防火墙也称动态包过滤防火墙。
当包过滤防火墙见到一个网络包,包是孤立存在的,它没有防火墙所关心的历史或未来的信息,允许和拒绝包的决定完全取决于包自身所包含的信息,如源地址、目的地址及端口号等。包中没有包含任何描述它在信息流中的位置的信息,则该包被认为是无状态的,它仅是存在而已。
一个有状态包检查防火墙跟踪的不仅仅是包中的信息。为了跟踪包的状态,防火墙还记录有用的信息以帮助识别包,例如,已有的网络连接及数据的传出请求等。
例如,若传入的包包含视频数据流,而防火墙可能已经记录了有关信息,是关于位于特定IP地址的应用程序最近向发出包的源地址请求视频信号的信息。如果传入的包是要传给发出请求的相同系统,防火墙进行匹配,包就可以被允许通过。
一个状态/动态检测防火墙可截断所有传入的通信,而允许所有传出的通信。因为防火墙跟踪内部出去的请求,所有按要求传入的数据被允许通过,直到连接被关闭为止。只有未被请求的传入通信被截断。
如果在防火墙内正运行一台服务器,配置就会变得稍微复杂一些,但状态包检查是很有力和适应性的技术。例如可以将防火墙配置成只允许从特定端口进入的通信,只可传到特定服务器。如果正在运行Web服务器,防火墙只将80端口传入的通信发到指定的Web服务器。
状态/动态检测防火墙可提供的其他一些额外的服务有以下两种。
1)将某些类型的连接重定向到审核服务中去。例如,到专用Web服务器的连接,在Web服务器连接被允许之前,可能被发送到SecutID服务器(用一次性口令来使用)。
2)拒绝携带某些数据的网络通信,如带有附加可执行程序的传入电子消息,或包含ActiveX程序的Web页而。
跟踪连接状态的方式取决于包通过防火墒的类型有以下两种。
1)TCP包。当建立起一个TCP连接时,通过的第一个包被标有包的SYN标志。通常情况下,防火墙丢弃所有外部的连接企图,除非已经建立起某条特定规则来处理它们。对内部的连接试图连到外部主机,防火墙注明连接包,允许响应及随后在两个系统之间的包,直到连接结束为止。在这种方式下,传入的包只有在它是响应一个已建立的连接时,才会被允许通过。
2)UDP包。UDP包比TCP包简单,因为它们不包含任何连接或序列信息。它们只包含源地址、目的地址、校验和携带的数据。这种信息的缺乏使得防火墙确定包的合法性很困难,因为没有打开的连接可利用,以测试传入的包是否应被允许通过。如果防火墙跟踪包的状态,就可以确定。对传入的包,若它所使用的地址和UDP包携带的协议与传出的连接请求匹配,该包就被允许通过。和TCP包一样,没有传入的UDP包会被允许通过,除非它是响应传出的请求或已经建立了指定的规则米处理它。对其他种类的包,情况和UDP包类似。防火墙仔细地跟踪传出的请求,记录下所使用的地址、协议和包的类型,然后对照保存过的信息核对传入的包,以确保这些包是被请求的。
状态/动态检测防火墙的优点有以下几种。
1)检查IP包的每个字段的能力,并遵从基于包中信息的过滤规则。
2)识别带有欺骗性源IP地址包的能力。
3)包过滤防火墙是两个网络之间访问的唯一来源。因为所有的通信必须通过防火墙,绕过是困难的。
4)基于应用程序信息验证一个包的状态的能力,例如,基于一个已经建立的FTP连接,允许返回的FTP包通过。
5)基于应用程序信息验证一个包的状态的能力,例如允许一个先前认证过的连接继续与被授予的服务通信。
6)记录有关通过的每个包的详细信息的能力。基本上防火墙用来确定包状态的所有信息都可以被记录,包括应用程序对包的请求,连接的持续时间,内部和外部系统所做的连接请求等。
状态/动态检测防火墙的缺点如下。
状态/动态检测防火墙唯一的缺点就是所有这些记录、测试和分析工作可能会造成网络连接的某种延迟,特别是在同时有许多连接激活的时候,或者是有大量的过滤网络通信的规则存在时。可是硬件速度越快,这个问题就越不易察觉,而且防火墙的制造商一直致力于提高其产品的速度。
(3)电路级网关
电路级网关工作在会话层,用来监控受信任端与不受信任端的主机间的TCP握手信息。它作为服务器接受外来的请求并转发请求,在TCP握手过程中,检查双方的SYN、ACK和序列数据是否符合逻辑,来判断该请求的会话是否合法。一旦该网关认为会话是合法的,就会为双方建立连接,自此网关仅复制、传递数据,而不进行过滤。电路级网关通常需要依靠特殊的应用程序来进行复制传递数据的服务。实际上,电路级网关并非作为一个独立的产品存在,它与其他的应用级网关结合在一起,所以也有人把电路级网关等同为应用级网关。电路级网关是在OSI模型中会话层上来过滤数据包。它无法检查应用层级的数据包。最流行的电路级网关是IBM发明的Socks网关。很多产品包括微软的Microsoft Proxv Server都支持Socks。
电路级网关的主要优点就是提供NAT,在使用内部网络地址机制时为网络管理员实现安全提供了很大的灵活性。电路级网关是基于和包过滤防火墙一样的规则。电路级网关提供包过滤的所有优点,但却没有包过滤的缺点。
电路级网关的主要缺点是不能很好地区分好包与坏包和易受IP欺骗这类攻击。这些都是电路级网关的弱点。电路级网关另一个重要的缺点是需要修改应用程序和执行程序,以及要求终端用户通过网关的认证等。
(4)应用级网关防火墙
应用级网关可以工作在OSI七层模型的任一层上来检查进出的数据包,通过网关复制传递数据,防止在受信任服务器和客户机与不受信任的主机问直接建立联系。应用级网关能够理解应用层上的协议,能够做复杂一些的访问控制,并做精细的注册。但每一种协议需要相应的代理软件,使用时工作量大,效率不如网络级防火墙。常用的应用级防火墙已有了相应的代理服务器,例如,HTTP、NNTP、FTP、Telnet、Rlolzin和X-Window等。但是对于新开发的应用,尚没有相应的代理服务,它们将通过网络级防火墙和一般的代理服务。应用级网关有较好的访问控制,是目前最安全的防火墙技术,但实现困难,而且有的应用级网关缺乏“透明度”。在实际使刖中,用户在受信任的网络上通过防火墙访问Internet时,经常会发现存在延迟并且必须进行多次径录才能访问Internet或Intranet。
应用级网关的优点在于它易于记录并控制所有进出通信,并对Internet的访问做到内容级的过滤,控制灵活而全面,安全性高。应用级网关具有登记、日志、统计和报告功能以及有很好的审计功能,还具有严格的用户认证功能。
应用级网关的确定是需要为每种应用写不同的代码,维护比较困难。另外详细的检查也导致速度比较慢。
(5)代理服务器
代理服务器(Proxy Server)的作用在应用层,它用来提供应用层服务的控制,在内部网络向外部网络申请服务时起到中间转接的作用。内部网络只接受代理提出的服务请求,拒绝外部网络其他节点的直接请求。
具体地说,代理服务器是运行在防火墙主机上的专门的应用程序或者服务器程序。防火墙主机可以是具有一个内部网络接口和一个外部网络接口的双重宿主主机,也可以是一些可以访问Internet并被内部主机访问的堡垒主机。这些程序接受用户对Internet服务的请求,并按照一定的安全策略将它们转发到实际的服务中。代理提供替代连接并且充当服务的网关。
包过滤技术和应用网关通过特定的逻辑判断来决定是否允许特定的数据通过,其优点是速度快,实现方便。缺点是审计功能差,过滤规则的设计存在矛盾关系,即如果过滤规则简单,则安全性差;如果过滤规则复杂,则管理困难。一旦判断条件满足,防火墙内部网络的结构和运行状态便会暴露在外部。代理技术则能进行安全控制和加速访问,有效地实现防火墙内外计算机系统的隔离,安全性好,以及实施较强的数据流监控、过滤、记录和报告等功能。其缺点是对于每一种应用服务都必须为其设计一个代理软件模块来进行安全控制,而每一种网络应用服务的安全问题各不相同,分析困难,因此实现也困难。
实际应用中,防火墙很少采用单一的技术,通常是解决不同问题的多种技术的组合。在实际设计中还涉及用户的需求、用户可接受的风险等级、用户的资金和专长等因素。