• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 教育教学 > 正文

    一种混合式过滤系统工作原理与用户层设计

    时间:2020-09-19 07:54:16 来源:达达文档网 本文已影响 达达文档网手机站

    [摘要]选择把内核级的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服务函数的地址,然后用自己定义的SPI函数库对其中几个比较重要的函数进行替换,从而实现对Socket数据包的捕获和过滤。如果Socket请求对服务质量很高,也就是系统支持QOS,那么数据包将直接被放行,而不需要替换系统的SPI,也不用对数据包比对过滤,这是提高系统响应速度和数据包处理速度的设计。

    在filter模块工作流程当中,最重要的步骤就是对SPI进行操作,对SPI操作的最终目的是为了得到SPI服务函数的地址,也就是被本系统替换的功能的地址。其核心是得到入口地址,即系统默认SPI的入口模块地址,通过它系统就可以获得所需要的信息。这样就完成了SPI层的整体设计。

    三、网络中间层驱动IMD设计

    在NDIS层,系统需要对上设计两个接口,一个是与应用程序的接口,一个与SPI层的接口。在NDIS层里最核心的模块是packet模块,在packet模块里将进行数据包NDIS层的过滤。由于本系统采用的是HOOK技术,因此NDIS层的与底层接口在本系统中并不用设计,而是直接调用系统的底层接口模块。

    接口模块包括两个,一个是与SPI层的接口模块,另一个是与应用程序的接口模块。根据packet实现的功能和整体模块的设计。它的功能主要是用来过滤filter模块不能过滤的数据包,比如ICMP之类的直接通过NDIS进行通信的数据包。

    在获取数据包后需要对数据包进行解析,用来判断是不是需要在NDIS层进行处理,如果需要那么就在本层进行处理。最后需要和应用程序打交道,需要隐藏底层的实现细节,所以要创建一个上层可见的设备(与应用程序通信使用的设备模块)。

    参考文献:

    [1]朱鹏,基于状态包过滤的防火墙技术[J].微计算机信息,2005.3.

    [2]黄力,混合型防火墙的研究与设计[J].微计算机信息,2006.9.

    [3]刘四清、龚建萍,计算机网络技术基础教程[M].清华大学出版社,2008.

    作者简介:

    谭宁,男,汉,淄博职业学院信息工程系,副教授,研究方向:计算机网络。

    相关热词搜索: 工作原理 过滤 用户 设计 系统

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网