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