• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 作文范文 > 正文

    【内部网络用户非法外联监控系统的设计与实现】用户币监控系统

    时间:2019-04-13 04:22:45 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘 要 用户的非法外联行为一直是企业内部网络安全的一个重大隐患。通过对NDIS协议驱动开发技术和Winsock2 SPI技术的研究,设计一套基于网络接口设备信息和端口探测的非法外联监控系统。在该系统中使用LSP技术来实现网络阻断,并防止系统被用户强行关闭,从而阻止内部网络用户的非法外联行为,确保内部网络安全。目前已经在校园网中进行应用。
      关键词 非法外联;NDIS;端口探测;LSP
      中图分类号TP39 文献标识码A 文章编号 1674-6708(2012)69-0203-03
      0 引言
      随着互联网的不断发展以及内部网络广泛使用,网络安全问题愈发严重。为了防范病毒及保证网络安全,很多单位开始限制内部网网络与Internet的连接,具体可分为两种情形:1)禁止内部网络与Internet连接;2)内部网络的主机只允许通过指定网关和防火墙连接Internet。如果这些内部网络的用户通过其他途径与Internet连接,则视为非法外联行为[1]。非法外联的方式包括通过各种调制解调器(VPN、ISDN、DDN、XDSL、电话拔号等)、计算机双网卡和无线(IEEE802.11b、GPRS、WAP)等手段[2]。如何监控非法外联行为,成为内部网络的管理者必须解决的问题,相关研究也相继展开。
      目前,非法外联监控系统主要有两种实现方式:一种采用C/S(客户端/服务器)架构[2-4];另一种采用双机架构[5]。双机架构模式的实现原理是监控中心发送探测包,诱导非法外联主机把探测包发送至外部网络中的报警中心。双机架构模式的监控系统有三大不足之处:一是不能监控到离线非法外联行为,即用户断开与内部网络的连接而直接接入外网中;二是探测包可能无法穿越非法外联接入网络中部署的设备防火墙、VPN设备或加密设备等;三是用户端的阻断软件(如各种类型的个人防火墙)可能会屏蔽监控中心的探测包[4]。而由监控中心和安装在各台主机上的监控代理组成的监控系统(C/S架构)则没有这方面的缺陷。目前,这种模式下对非法外联行为的判断方法主要有拦截拨号函数[5,6]和基于路由表查找[2,3,7,8]。对于前者,由于不能监控其他途径进行非法外联的行为,则无法满足实际的需要。而后者,在受控主机多于一块活动网卡的时候就判断用户进行非法外联,当用户的多块网卡都接入内部网络的时候就会存在误判,从而影响监控系统的效率。
      目前,由于绝大部分用户都是采用微软的Windows作为计算机的操作系统,所以本文通过对Windows的NDIS协议驱动和Winsock2 SPI开发技术的研究,提出一种基于网卡状态监视和端口探测的非法外联监控方法,并使用LSP实现网络阻断和防止监控系统被用户强行关闭。与传统方法相比,本方法具有能监控各种途径的非法外联行为、判断准确、很强的抗查杀能力三大特点,因此,更具有实用性。
      1 NDIS协议驱动 和 SPI概述
      1.1 NDIS协议驱动
      NDIS是Network Driver Interface Specification,即网络驱动接口规范。NDIS的目的是为网卡制定标准的API接口。横跨传输层、网络层和数据链路层,定义了网卡或网卡驱动程序与上层协议驱动程序之间的通信接口规范,屏蔽了底层物理硬件的不同,使上层的协议驱动程序可以和底层任何型号的网卡通信。NDIS包括微端口驱动、中间层驱动和协议驱动3种类型的驱动。如图1所示:
      本文主要是在协议驱动上进行编程的,所以简单介绍一下协议驱动。协议驱动就是指网络协议,它执行具体的网络协议,如IPX/SPX、TCP/IP等。协议驱动程序为应用层客户程序提供服务,接收来自网卡或中间驱动程序发送过来的数据。
      1.2 Winsock2 SPI
      Winsock2 SPI(Service Provider Interface)服务提供者接口建立在WOSA(Windows Open System Architecture,Windows开放系统架构)上面的,它是Winsock系统组件提供的面向系统底层的API。SPI包括传输服务提供者和命名空间提供者两个部分。其中传输服务提供者提供建立连接、行使流控制、传输数据、出错控制的服务;命名空间提供者和传输服务提供者类似,只是它截获的是名称解析的API调用 [9]。
      Winsock2 SPI包括了基础服务提供者和分层服务提供者(Layered Service Provider,缩写为LSP)两个类型,两者有相同的SPI接口。基础服务提供者公开一个Winsock接口,直接执行一种网络传输协议,如TCP/IP协议,当然也提供在网络上收发数据之类的核心网络协议功能。分层服务提供者只负责执行高级的自定义通信功能,并依靠下面的基础服务提供者,在网络上进行真正的数据交换。分层服务提供者将自己安装到Winsock编录里,位于基础服务提供者之上,也可能位于其它分层提供者之间,并截获应用程序对Winsock API调用[10]。其体系结构如图2所示:
      2 监控系统总体设计及框架
      本文的监视系统基于C/S模式进行设计的,由监控中心和监控代理两部分组成。监控中心运行在服务器上,而监控代理需要安装到内部网络的各台主机上。系统实现的基本原理是:首先监控中心把服务器的80端口打开;然后,安装在各个受控主机上的监控代理分别在其宿主主机中各个网卡上发送探测包,该探测包根据TCP三次握手原理,探测服务器的80端口是否打,若该网卡连接的是外部网络,系统自然收不到服务器返回的应答包,相反自然可以收到,进而可以判断该系统是否在非法外联。
      系统中,监控中心主要负责保存监控代理发送过来的有关用户非法外联的记录,以及在用户非法外联的时候向管理人员报警。监控代理是进行非法外联监控的具体实施者。主要实现三方面的功能:一是判断非法外联行为;二是在用户进行非法外联的时候阻断用户的网络访问;三是确保监控系统不被用户强行关闭。   按照监控系统的设计,本系统实现后,总体框架如图3所示:
      本监控系统采用成熟的C/S架构模式,系统的框架分为两大部分,包括运行在服务器上的监控中心和安装在受控主机上的监控代理。监控中心由下面的两个功能模块组成:
      1)通信:在监控代理向监控中心报告宿主主机的非法外联行为的时候,监控中心与监控代理之间进行通信;
      2)保存记录:保存监控代理发送过来的内部网络主机进行非法外联的记录。
      在受监控的内部网络主机上,监控代理方由下面的5个子模块组成:
      (1)NDIS协议驱动:负责绑定可用的网卡,利用绑定的网卡收发数据;
      (2)探测包收发器:构造端口探测包;负责在系统中的每一块网卡上发送此包;接收服务器返回的应答包;
      (3)网卡状态监视:监视系统中网卡状态的变化;并判断网卡是否非法外联;在有非法外联情况时,通知LSP阻断用户的网络访问;
      (4)通信:实现与监控中心的通信;也应答来自LSP的询问;
      (5)记录保存:当用户离线非法外联的时候,保存非法外联的时间、用户名等信息,在取得与监控中心联系的时候向监控中心报告。
      3具体技术的实现方法
      本系统使用NDIS协议驱动程序来实现在受控主机上的各个网卡上发送数据;同时,为了使探测速度更快,本文采用半开扫描技术;本文也通过使用LSP来实现网络阻断(用户非法外联时)和防止监控系统被用户强行关闭。下面就对这些关键技术的实现进行介绍。
      3.1协议驱动开发及数据收发
      协议驱动的是由一系列的例程(程序或函数)组成的。本文设计的驱动程序是通过与NDIS通信来发送、处理以及接收网络封包的。首先将协议驱动绑定到下层微端口驱动或中间层驱动,然后使用MinportXxx接口来进行编程。本文的开发步骤有三步:
      1)协议驱动中的DriverEntry函数通过调用NdisRegisterProtocol注册一个协议驱动,从而与NDIS库建立了通信;然后将强制性的ProtocolXxx函数注册至NDIS;最后调用BindAdapterHandler和OpenAdapterCompleteHandler函数将协议驱动绑定至下层或者虚拟的NIC上;
      2)实现第一个步骤后,下层或者虚拟网卡变得可用了,这时可以调用ProtocolBindAdapter函数从注册表中读出网络适配器相关的配置信息,并且调用NdisOpenAdapter函数建立到该网络适配器的绑定;
      3)最好一步,通过编程实现对绑定网卡收发数据的处理。其中可以调用ProtocolRecieve函数进行接收数据,调用NdisSend函数进行数据发送。在接收和发送数据之前都可以对相关的网络数据进行进一步的处理和修改。
      至此,完成协议驱动的开发,把它安装到受控主机系统中即可使用。打开协议驱动提供的服务,调用系统函数DeviceIoControl枚举驱动程序绑定的适配器,得到下层适配器对象的符号连接名称后,便可以调用CreateFile函数获取这个对象的句柄,然后使用WriteFile和ReadFile函数发送和接收原始的网络数据。
      3.2 端口探测
      为了判断受控主机中的活动网卡连接的是内部网络还是外部网络,本文通过端口探测来实现。我们知道任何两台想要通信的主机必须首先建立连接。使用TCP时,任何通信之前都要进行3次握手。这称为完整连接,这个过程如下所述:
      1)主机A向主机B发送一个SYN封包(设置SYN标志的TCP封包);
      2)如果端口打开,主机B发送SYN + ACK封包进行响应,否则向主机A发送RST + ACK封包;
      3)如果主机A接收到SYN + ACK封包,就再向主机B发送一个ACK封包,双方连接初始化完毕。
      所谓的半开扫描技术的实现原理就是在3次握手时,主机A不再发送额外的ACK封包。也正是如此,由于没有完整的握手,它比完整的端口探测方法要快很多。系统中,当监控代理发现系统的网卡状态有变化,如有新网卡在系统中变得可用,监控代理则使用NDIS协议驱动程序在该网卡上发送探测包,通过能否收到监控中心返回的应答包来判断该网卡连接的网络是否为外部网络,进而判断宿主主机是否在进行非法外联。
      3.3 网络阻断与系统保护
      在本系统中使用LSP来实现网络阻断和防止系统被用户强行关闭。LSP是作为一个标准的DLL(动态连接库),可以将函数WSPStartup作为单一条目导入到这个链接库中。当本系统调用函数WSPStartup时,它通过一个函数派遣表来公布30个附加的SPI函数,LSP就由这30个SPI函数组成[6]。所有的SPI函数都是由LSP的分派表(lpProcTable)来导出。本文把LSP的分派表保存为g_NextProcTable,然后调用系统的lpWSPSocket函数,使其分别指向自己编写的WSPSocket函数,这个函数先访问非法外联监控系统以确定是否需要提供服务,并调用被截获的函数来实现网络数据传输功能。
      WSPSocket函数在执行时,需要询问监控系统,在监控系统允许后再调用lpWSPSocket函数实现网络传输。在用户进行非法外联时,监控系统则通过LSP阻断用户的网络访问,使得他虽然可以实现物理上的连接,但是却无法实现网络传输功能。同时,如果用户试图强行关闭监控系统然后进行非法外联,LSP也会由于得不到监控系统的允许而阻断用户的网络访问,这样就防止了用户强行关闭监控系统。由于LSP是作为动态连接库安装到系统中,因此它很好的实现了隐藏,从而使得系统具有很强的抗查杀能力。
      4 结论
      本文研究NDIS协议驱动开发技术和Winsock2 SPI技术,通过网卡状态监视和端口探测,以及构建LSP,实现对内部网络用户非法外联行为的监视和控制。本文所设计的系统已经在校园网上投入使用,效果良好,不但可以监视内部网络用户通过各种途径进行非法外联的行为,也能很好的阻断非法外联用户的网络访问。
      参考文献
      [1]张友坤,虞淑瑶.一种内网主机拨号上网监测系统的实现[J].计算机应用,2004,2(24):53-54.
      [2]田成.非法外联检测系统的设计与实现[D].吉林:吉林大学,2009:1-51.
      [3]张杰.基于路由欺骗的非法外联监控系统的设计及其主要模块的实现[D].北京:北京邮电大学,2010:1-72.
      [4]赵永胜,谷利泽.基于路由表的主机非法外联监控技术研究与分析[D].北京:2009通信理论与技术新发展,2009:297-300.
      [5]刘跃.基于双机结构的网络非法外联监管系统研究[D].合肥:安徽大学,2006:1-55.
      [6]兰昆.内部网主机非法拨号外联检测技术研究与实现[D].成都:四川大学,2005:1-68.
      [7]陈德军.基于企业内部网络的监控系统研究[D].南京:南京理工大学,2005:1-67.
      [8]朱睿琳.面向网络安全监管的主机代理技术研究与实现[D].长沙:国防科学技术大学,2005:1-66.
      [9]王艳平,张越.Windows网络与通信程序设计[M].北京:北京人民邮电出版社,2006:166-248.
      [10]Anthony Jones,Jim Ohlund.Network Programming For Microsoft(Second Edition)[M].北京:清华大学出版社,2006:320-340.

    推荐访问:外联 监控系统 用户 设计

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章