防火墙包过滤技术分析[摘要] 随着计算机网络技术的突飞猛进,网络安全的问题已经日益突出地摆在各类用户的面前。
而防火墙已经成为一般企业用来保护自身网络安全的主要机制,因此对防火墙技术进行深入探讨是非常必要的。
防火墙技术主要分为包过滤和应用代理两类。
从数据包结构出发,分析包过滤技术,首先提出包过滤技术的核心问题;然后在分析传统包过滤技术缺陷的基础上,详细论述了包过滤技术的两种发展趋势。
[关键词] 防火墙包过滤动态包过滤深度包检测一、引言随着internet的迅速发展,网络应用涉及到越来越多的领域,网络中各类重要的、敏感的数据逐渐增多;同时由于黑客入侵以及网络病毒的问题,使得网络安全问题越来越突出。
因此,保护网络资源不被非授权访问,阻止病毒的传播感染显得尤为重要。
就目前而言,对于局部网络的保护,防火墙仍然不失为一种有效的手段。
防火墙技术主要分为包过滤和应用代理两类。
其中包过滤作为最早发展起来的一种技术,其应用非常广泛。
所谓包过滤,就是对流经网络防火墙的所有数据包逐个检查,并依据所制定的安全策略来决定数据包是通过还是不通过。
包过滤最主要的优点在于其速度与透明性。
也正是由于此,包过滤技术历经发展演变而未被淘汰。
考虑包过滤技术的发展过程,可以认为包过滤的核心问题就是如何充分利用数据包中各个字段的信息,并结合安全策略来完成防火墙的功能。
二、包过滤防火墙工作原理包过滤防火墙工作在osi网络参考模型的网络层和传输层,它根据数据包头源地址,目的地址、端口号和协议类型等标志确定是否允许通过。
只有满足过滤条件的数据包才被转发到相应的目的地,其余数据包则被从数据流中丢弃。
包过滤方式是一种通用、廉价和有效的安全手段。
之所以通用,是因为它不是针对各个具体的网络服务采取特殊的处理方式,适用于所有网络服务;之所以廉价,是因为大多数路由器都提供数据包过滤功能,所以这类防火墙多数是由路由器集成的;之所以有效,是因为它能很大程度上满足了绝大多数企业安全要求。
在整个防火墙技术的发展过程中,包过滤技术出现了两种不同版本,称为“第一代静态包过滤”和“第二代动态包过滤”。
(一)第一代静态包过滤静态包过滤的防火墙根据定义好的过滤规则审查每个数据包,以便确定其是否与某一条包过滤规则匹配。
过滤规则基于数据包的报头信息进行制订。
报头信息中包括ip源地址、ip目标地址、传输协议(tcp、udp、icmp等等)、tcp/udp目标端口、icmp消息类型等。
包过滤类型的防火墙要遵循的一条基本原则是“最小特权原则”,即明确允许那些管理员希望通过的数据包,禁止其他的数据包。
(二)第二代动态包过滤动态包过滤的防火墙采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。
这种技术后来发展成为包状态监测技术。
采用这种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在过滤规则中增加或更新条目。
三、传统包过滤技术缺点传统包过滤技术,大多是在ip层实现,它只是简单的对当前正在通过的单一数据包进行检测,查看源/目的ip地址、端口号以及协议类型等,结合访问控制规则对数据包实施有选择的通过。
这种技术实现简单,处理速度快,对应用透明,但是它存在的问题也很多,主要表现有:1、所有可能会用到的端口都必须静态放开。
若允许建立http连接,就需要开放1024以上所有端口,这无疑增加了被攻击的可能性。
2、不能对数据传输状态进行判断。
如接收到一个ack数据包,就认为这是一个已建立的连接,这就导致许多安全隐患,一些恶意扫描和拒绝服务攻击就是利用了这个缺陷。
3、无法过滤审核数据包上层的内容。
即使通过防火墙的数据包有攻击性或包含病毒代码,也无法进行控制和阻断。
综合上述问题,传统包过滤技术的缺陷在于:(1)缺乏状态检测能力;(2)缺乏应用防御能力。
而问题的根本原因在于:(1)只对当前正在通过的单一数据包进行检测,而没有考虑前后数据包之间的联系;(2)只检查包头信息,而没有深入检测数据包的有效载荷。
四、包过滤防火墙工作过程(一)截获网络封装包截获数据包是实现一个防火墙的第一步,截获数据包的方法有很多种,既可以在用户态下拦截网络数据包,又可以在核心状态下进行数据包截获。
在用户态下进行网络数据包拦截有以下几种方法:1、winsock layered serviceprovider(lsp)。
2、windows2000包过滤接口。
3、替换系统自带的winsock动态连接库。
很显然,在用户态下可以很简单的进行数据包拦截,但其最致命的缺点就是只能在winsock层次上进行,而对于网络协议栈中底层协议的数据包无法进行处理。
对于一些木马和病毒来说很容易避开这个层次的防火墙。
因此大多数的个人防火墙选择利用网络驱动程序来实现的。
例如用中间层驱动程序来截获数据包。
中间层驱动介于协议层驱动和小端口驱动之间,它能够截获所有的网络数据包(如果是以太网那就是以太帧)。
ndis中间层驱动的应用很广泛,不仅仅是个人防火墙,还可以用来实现vpn,nat,pppoverethernet以及vlan。
中间层驱动的概念是在windowntsp4之后才有的,因此对于windows9x来说无法直接利用中间层驱动的功能。
windowsddk提供了两个著名的中间层驱动例子:passthru以及mux。
开发人员可以在passthru的基础上进行开发,mux则实现了vlan功能。
目前个人防火墙的产品还很少用到这种技术,主要的原因在于中间层驱动的安装过于复杂,尤其是在windowsnt下。
windows2000下可以通过程序实现自动安装,但是如果驱动没有经过数字签名的话,系统会提示用户是否继续安装。
中层层驱动功能强大,应该是今后个人防火墙技术的趋势所在,特别是一些附加功能的实现。
(二)驱动程序和应用程序间的通讯当驱动程序截获网络数据包后,驱动程序要和应用程序进行通讯,通知应用程序对数据包进行判断,如果符合过滤规则,则接受数据包,否则,则放弃该数据包,其步骤大致如下:1、应用程序创建一事件event;2、应用程序通过createfile创建驱动程序实例;3、把该事件的句柄传给驱动程序;4、驱动程序通过devicecontrol函数接受event的句柄;5、应用程序通过deviceiocontrol函数传递控制驱动程序的消息;6、驱动程序通过dispatch历程得到应用程序传来的消息,然后根据消息类型进行不同的服务;7、把结果数据放入共享内存区,设置event事件通知应用程序所请求的事情已经办完;8、应用程序通过waitforsingleobject来获知事件发生;9、应用程序在共享内存区获得数据,并重置该事件。
(三)过滤规则设置包过滤防火墙的过滤规则集由若干条规则组成,它应涵盖对所有出入防火墙的数据包的处理方法,对于没有明确定义的数据包,应该有一个缺省处理方法;过滤规则应易于理解,易于编辑修改;同时应具备一致性检测机制,防止冲突。
ip包过滤的依据主要是根据ip包头部信息如源地址和目的地址进行过滤,如果ip头中的协议字段表明封装协议为icmp、tcp或udp,那么再根据icmp头信息(类型和代码值)、tcp头信息(源端口和目的端口)或udp头信息(源端口和目的端口)执行过滤,其他的还有mac地址过滤。
应用层协议过滤要求主要包括ftp过滤、基于rpc的应用服务过滤、基于udp 的应用服务过滤要求以及动态包过滤技术等。
在一般情况下,我们可以从以下几个方面来进行访问规则的设置:1、禁止一切源路由寻径的ip包通过;2、ip包的源地址和目的地址;3、ip包中tcp与udp的源端口和目的端口;4、运行协议;5、ip包的选择。
(四)记录和报警防火墙处理完整日志的方法:防火墙规定了对于符合条件的报文做日志,应该提供日志信息管理和存储方法。
提供自动日志扫描:指防火墙是否具有日志的自动分析和扫描功能,这可以获得更详细的统计结果,达到事后分析、亡羊补牢的目的。
提供自动报表、日志报告书写器:防火墙实现的一种输出方式,提供自动报表和日志报告功能。
动作警告通知机制:防火墙应提供告警机制,在检测到入侵网络以及设备运转异常情况时,通过告警来通知管理员采取必要的措施,包括e-mail、呼机、手机等。
提供简要报表(按照用户id或ip地址):防火墙实现的一种输出方式,按要求提供报表分类打印。
提供实时统计:防火墙实现的一种输出方式,日志分析后所获得的智能统计结果,一般是图表显示。
五、结束语本文从分析数据包结构出发,提出包过滤技术的核心问题是选取哪些字段信息,以及如何有效地利用这些字段信息并结合访问控制列表来执行包过滤操作,并尽可能地提高安全控制力度。
今后防火墙的发展会朝着简单化、安全化方向迈进,综合包过滤和应用代理的功能,达到两者的有效结合,实现新型加密算法的设计,使数据的传输更加安全,会和ids、病毒检测等相关安全产品联合起来,充分发挥各自的长处,协同配合,共同建立一个有效的安全防范体系。
参考文献:[1] 林瑶著,用tcp/ip进行网际互连[m],北京:电子工业出版社,2006.[2] 黎连业,张维著.防火墙及其应用技术[m],北京:清华大学出版社,2007.[3] 王睿著,网络安全及防火墙技术[m],北京:清华大学出版社,2006.[4] 陈天洲,陈纯著,计算机安全策略[m],杭州:浙江大学出版社,2004.8.。