- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
一种混合式过滤系统工作原理与用户层设计
?
?
谭宁
[摘要]选择把内核级的NDIS中间层过滤和用户级SPI接口包过滤结和形成混合式过滤系统,在实现对TCP、UDP、ICMP等多种网络协议进行过滤的同时,也实现报文内容过滤,且兼顾功能和效率,并对用户层进行设计。
[关键词]混合式过滤系统工作原理用户层
:TP3:A:1671-7597(2009)0510048-01
Windows下的个人防火墙都是基于对数据报的拦截技术之上。总的来说可分为用户级和内核级数据报拦截两类。其中内核级主要是TDI过滤驱动程序,NDIS中间层过滤驱动程序,NDIS过滤钩子驱动程序等,它们都是利用网络驱动来实现的;而用户级的过滤包括SPI接口,Windows2000包过滤接口等。本文选择了把内核级的NDIS中间层过滤和用户级SPI接口包过滤结和形成混合式过滤系统,在实现对TCP、UDP、ICMP等多种网络协议进行过滤的同时,也实现报文内容过滤,且兼顾了功能和效率。
一、混合式防火墙工作原理
根据网络的分层,系统的设计可以按照不同的层次来进行设计。由于在SPI层不能过滤所有的数据包,只能过滤通过Socket进行网络通信的数据包,比如ICMP这种没有端口的包,它只到了网络层,并没有到传输层,就没有办法在SPI层过滤。而所有的数据通信都必须经过NDIS层,所以NDIS层防火墙系统可以捕获所有的数据包。SPI层过滤数据包有以下几个优点:
1.跨平台,不用进行代码的修改;
2.效率高,由于工作在应用层,所以CPU占用率低;
3.实现起来方便。
数据包的传送可以通过两种方式:一种是流经SPI层的,比如TCP包,UDP包等;数据流出的顺序是,经过SPI,然后通过传输层,网络层达到物理层;还有一种是直接通过NDIS进行通信的,数据将只达到网络层而不经过传输层,比如ICMP包。
首先是当应用程序发起一个Socket连接请求时,网络数据包将流经传输层,网络层和数据链路层的情况。
二、用户层SPI设计
本层设计的目的主要是用来过滤通过Socket发送与接收的数据包,并提供与应用程序的接口。
SPI层一共分为三个模块,与应用程序的接口,与NDIS的接口和fiiter模块,其中filter模块是SPI层的核心模块,也是本系统的核心模块,用来完成SPI层的主要功能,过滤Socket数据包。前后两个接口是用来保证数据包流程的通畅。
(一)与应用程序接口
当应用程序发送了一个流经SPI层的数据包时,与应用程序的接口将获取这个数据包并将其传送给filter模块。这个接口主要的功能是实现控管规则数据和封包数据的共享。
应用程序与SPI过滤层主要通过三个模块进行交互。控管规则处理模块是用来对控管规则进行添加或者删除的模块。在这里用户通过对控管规则的操作可以很容易添加或者实现一个过滤。封包缓冲区处理模块主要的功能是应用程序从与应用程序接口的地方得到封包缓冲区的消息。应用程序可以从这里知道数据封包在内存中的位置。工作模式是用户用来通知SPI层是放行所有,拒绝所有或者是过滤。
(二)filter模块
filter模块是本系统的核心模块,它是一个驱动过滤模块,只有在需要的时候才被加载。filter模块是放在传输层的上面,不论数据流入还是流出都需要首先经过filter模块的过滤。filter模块是在传输层完成了封包处理之后来进行过滤的,其实不管filter模块是放在传输层之上还是之下,都不会对系统的效率产生影响,放在传输层之上的话,那么filter模块将在传输层解包之后,进行过滤,这样比filter模块放在传输层之下要慢一些。但是对于流出的数据包,filter模块将比放在传输层下面要快一些,而且filter模块对应用程序的接口也要求系统设计的时候把filter过滤模块放在传输层之上。
根据filter模块完成的功能,可以对其进行模块划分和设计。为了提高数据包的处理速度,并降低系统资源的占用,只有当发生Socket连接的时候才会把filter模块放到数据流的链条当中。当filter模块被加载的时候,入口模块将会被调用,它不但完成filter模块的入口,而且完成SPI的入口。这是因为本层将采用的技术是SPIHOOK,所以需要把SPI一些重要功能进行重写。对SPI的入口的重写就放到入口模块当中。对SPI功能模块的操作是在SPI验证模块中完成,而协议解析模块将在这层对数据包进行解析,判断属于哪一种数据包,以便对其采取不同的处理。
根据filter模块的划分,对其流程进行分析将可以更好的对整个模块进行设计,特别是接口部分的设计。只有当通信发生Socket请求的时候,本模块才被加载。通过入口模块进入filter模块的处理流程,在filter的处理流程当中,通过一些函数的调用得到系统SPI
文档评论(0)