中国投资咨询网 设为首页 加入收藏
站内搜索:
您当前位置:行业知识> 信息传输、计算机服务和软件业 > 软件业 > 公共软件服务 > 个人防火墙

个人防火墙

  个人防火墙 - 概况描述

  个人防火墙

  个人防火墙是防止您电脑中的信息被外部侵袭的一项技术,在您的系统中监控、阻止任何未经授权允的数据进入或发出到互联网及其他网络系统。就是一个位于计算机和它所连接的网络之间的软件。计算机与网络的所有通信均要经过此防火墙。目前在Windows操作系统下比较著名的防火墙有国外的ZoneAlarm,NortonPersonalFirewall以及SygatePersonalFirewall等,国内的有天网防火墙等产品。

  个人防火墙的优点

  个人防火墙有很多优点:它能对公共网络中的单个系统提供保护;它不需要额外的硬件资源就能增加对系统的保护;它在抵挡外来攻击的同时,还可以抵挡来自内部的攻击;另外,它的价格相对来说十分的便宜。尤其是对一个使用Modem或ISDN/ADSL上网的家庭用户来说,一个硬件防火墙实在是太昂贵了或者太麻烦了(需要烦琐的配置),而使用个人防火墙足以能够隐蔽用户暴露在网络上的信息,对其提供足够的安全保护

  个人防火墙 - 发展背景

  网络安全的需要

  Internet的出现及其迅速发展给现代人的生产和生活都带来了前所未有的飞跃,它促进了信息的广泛交流,大大提高了工作效率,丰富了人们的精神生活。然而,随着计算机网络技术的突飞猛进,网络安全的问题已经日益突出地摆在各类用户的面前,网络的安全性成为Internet上最为热门的焦点之一,它关系着Internet的进一步发展和普及,甚至关系着Internet的生存。随着网络安全问题日益严重,网络安全产品逐渐被人们重视起来。

  网络病毒的传播

  防火墙作为最早出现的和使用量最大的网络安全产品,受到了用户和许多研发机构的青睐。防火墙对网络系统具有很好的保护作用。它通过对流经它的网络信息进行监控以实现安全防护。比如用禁止特定端口的方法设置对外通信来防止木马;或者禁止来自特殊站点的访问,从而防止来自入侵者的所有通信。从应用角度来看防火墙基本上可以分为网络级的防火墙和个人防火墙两种。目前个人用户对网络安全的需要在不断增加,而Windows操作系统是使用最为广泛的PC操作系统,因此如何在Windows操作系统下开发个人防火墙变的越来越重要了。

  个人防火墙 - 理论背景

  Windows2000组件

  在Windows2000操作系统环境中,一部分组件运行在用户模式下,其他的则运行在内核模式下。文件系统、中间层和最低层驱动程序被显示在下方图,其中包含了内核模式I/O管理器。如下图所示,Windows2000操作系统包括了许多内核模式组件,它们被精心地定义为功能相互独立的组件。内核I/O管理、即插即用管理(PlugandPlayManager)、电源管理(PowerManager)、硬件抽象层(HardwareAbstractionLayer,HAL)、配置管理(ConfigurationManager)、存储管理(MemoryManager)、运行支持(ExecutiveSupport)和过程结构(ProcessStructure)组件。其他组件可包括对象管理(ObjectManager)和安全引用监控器(SecurityReferenceMonitor)。即插即用(PnP)管理和电源管理是Windows2000中的新组件。他们仅仅支持Windows2000驱动程序和WDM驱动程序。

  Windows2000中的驱动程序种类

  (1)在Windows2000操作系统中,有两个基本的驱动程序种类。

  A.用户模式驱动程序(例如Win32VDD,它是为MS-DOS应用程序开发的专用设备)或另一个被保护的子系统的驱动程序,并且用户模式驱动程序是与子系统细节相关的。

  B.针对逻辑、虚拟或物理设备的内核模式驱动程序。

  这些驱动程序作为WindowsNT执行体部分来运行:WindowsNT是基础的、基于微内核的操作系统,它支持一个或更多的保护子系统。一些Windows2000内核驱动程序也是WDM驱动程序,它们符合Windows驱动程序模型(WDM)。所有的WDM驱动程序是PnP驱动程序,并支持电源管理。

  内核模式驱动程序类型有三种基本类型的内核模式驱动程序。每一种都有稍微不同的结构和完全不同的功能。

  a. 最高层驱动程序,例如系统支持的FAT、NTFS和CDFS文件系统驱动程序(FSD)。最高层驱动程序通常依赖于较低层的驱动程序支持。虽然特定的文件系统驱动程序可能从一个或多个中间层驱动程序获得支持,但是每个文件系统驱动程序最终依赖一个或多个下层外围设备驱动程序的支持。

  b. 中间层驱动程序,例如虚拟磁盘、镜像、或指定设备类型的类驱动程序。中间层驱动程序也需要较低层驱动程序的支持。例如,PnP功能驱动程序是中间层驱动程序,它们在一个I/O总线上控制特定的外围设备,这个I/O总线是由PnP硬件总线驱动程序来控制的。

  c. 最低层驱动程序,例如PnP硬件总线驱动程序,它控制一个I/O总线,这个总线连了一些外围设备在上面。最低层驱动程序不依赖于较低层驱动程序,而是控制物理外围设备。

  内核模式驱动程序的网络结构

  微软的Windows2000支持三种基本的内核模式网络驱动程序:

  (1) 微端口NIC驱动程序。一个微端口的驱动程序直接控制一个网络接口卡(NIC),并且为高层的驱动程序提供接口。

  (2) 中间层驱动程序。一个中层协议驱动程序连接了上层协议,例如早期的传输驱动程序和一个微端口。开发中层协议驱动程序的一个普遍原因是用它在早期的传输驱动程序和一个微端口之间实现转换。一个微端口控制了一个NIC,对于传输驱动程序来说,它是一个陌生的新介质类型。

  (3) 协议驱动程序。一个上层协议驱动程序向网络用户提供服务,它实现了TDI接口,或者也许是为另一个上层的特殊应用而提供的接口。这种驱动程序在它的下边界提供了一个协议接口,用来向低层驱动程序发送和接收数据包。

  个人防火墙 - 主要功能

  网络数据包处理、安全规则和日志。

  网络数据包处理

  在Internet上,所有往来的信息都被分割成许许多多一定长度的信息包,信息包的包头包括IP源地址、IP目标地址、内装协议(TCP、UDP、ICMP、或IPTunnel)、TCP/UDP目标端口、ICMP消息类型、包的进入接口和出接口等信息。个人防火墙会检查所有通过的信息包中的包头信息,并按照用户所设定的安全过滤规则过滤信息包。如果防火墙设定某一IP为危险的话,从这个地址而来的所有信息都会被防火墙屏蔽掉。由此可见,个人防火墙核心技术是实现在Windows操作系统下的网络数据包拦截。

  安全规则设置

  防火墙的安全规则就是对计算机所使用的局域网、互联网的内制协议进行设置,使网络数据包处理模块可以根据设置对网络数据包进行处理,从而达到系统的最佳安全状态。个人防火墙软件的安全规则方式可分为两种:一种是定义好的安全规则。就是把安全规则定义成几种方案,一般分为低、中、高三种,这样不懂网络协议的用户,也可以根据自己的需要灵活的设置不同的安全方案。还有一种就是用户自定义的安全规则。这需要用户在了解了网络协议的情况下,根据自己的安全需要对某个协议进行单独设置。

  日志

  日志是每个防火墙软件必不可少的主要功能,它记录着防火墙软件监听到发生的一切事件,比如入侵者的来源、协议、端口、时间等等。日志的实现比较简单,将监听到的事件信息写入文件即可。

  个人防火墙 - 拦截数据类型

  用户态(user-mode)

  在用户态下进行网络数据包的拦截有三种方法:WinsockLayeredServiceProvider(LSP)、Windows2000包过滤接口、替换系统自带的WINSOCK动态连接库。在用户态下进行数据包拦截最致命的缺点就是只能在Winsock层次上进行,而对于网络协议栈中底层协议的数据包无法进行处理。因此,这些方法并不适合个人防火墙。

  内核态(kernel-mode)

  1、TDI过滤驱动程序(TDIFilterDriver)。

  当应用程序要发送或接收网络数据包的时候,都是通过与协议驱动所提供的接口来进行的。协议驱动提供了一套系统预定义的标准接口来和应用程序之间进行交互。因此,只需要开发一个过滤驱动来截获这些交互的接口,就可以实现网络数据包的拦截。当应用程序要发送或接收网络数据包的时候,都是通过与协议驱动所提供的接口来进行的。协议驱动提供了一套系统预定义的标准接口来和应用程序之间进行交互。在Windows2000/NT下,ip,tcp,udp是在一个驱动程序里实现的,叫做tcp.sys,这个驱动程序创建了5个设备:DeviceRawIp,DeviceUdp,DeviceTcp,DeviceIp,DeviceMULTICAST。应用程序所有的网络数据操作都是通过这些设备进行的。因此,我们只需要开发一个过滤驱动来截获这些交互的接口,就可以实现网络数据包的拦截。另外,TDI层的网络数据拦截还可以得到操作网络数据包的进程详细信息,这也是个人防火墙的一个重要功能。

  2、Win2kFilter-HookDriver。

  这是从Windows2000开始系统所提供的一种驱动程序,该驱动程序主要是利用Ipfiltdrv.sys所提供的功能来拦截网络数据包。Filter-HookDriver的结构非常简单,易于实现。但是正因为其结构过于简单,并且依赖于Ipfiltdrv.sys,Microsoft并不推荐使用Filter-HookDriver。

  3、NDISHookDriver。

  该方法在Windows2000/xp下是非公开的,因此这种方法对平台的依赖性比较大,需要在程序中判断不同的操作系统版本而使用不同的方法。

  4、NDIS中间层驱动程序(NDISIntermediateDriver)。

  NDIS(NetworkDriverInterfaceSpecification)是Microsoft和3Com公司开发的网络驱动程序接口规范的简称,它支持如下三种类型的网络驱动程序:微端口驱动程序、中间层驱动程序(IntermediateDriver)和协议驱动程序。其中中间层驱动介于协议层驱动和小端口驱动之间,其功能非常强大,可以提供多种服务,能够截获所有的网络数据包(以太帧),过滤微端口驱动程序,实现特定的协议或其他诸如数据包加密、认证等功能。综上所述,在NDIS中间层进行网络数据包截获的方法结构规范,功能强大,该技术极其适合个人防火墙所采用。

  个人防火墙 - 中间层驱动程序(NDIS)的内部结构

  结构

  NDIS支持3种驱动:微端口驱动,中间层驱动和协议驱动。如下图所示

  (1) 微端口驱动。就是网卡驱动,它负责管理网卡,包括通过网卡发送和接受数据,它也为上层驱动提供接口。

  (2) 中间层驱动。它通常位于微端口驱动和传输协议驱动之间,是基于链路层和网络层之间的驱动,由于中间层驱动在驱动层次中的中间层位置,它必须与其上层的协议和下层的微端口驱动通信,并且导出两种协议的函数。虽然中间层驱动导出MINIPORTXX函数,但它并不真正的管理物理网卡,而是导出一个或者多个虚拟适配器,上层协议可以绑定到上面。对于协议驱动来说,中间层导出的虚拟适配器看起来像一个物理网卡,当它向这个虚拟适配器发送封包或者请求时,中间层驱动将这些封包和请求传播到下层微端口驱动;当下层微端口驱动向上指示接收封包或者状态时,中间层驱动向上到绑定虚拟适配器上的协议驱动。中间层驱动的主要作用就是过滤封包,其优点是能够截获所有的网络数据包。

  (3) 协议驱动,即网络协议。它位于NDIS体系的最高层,经常用作实现传输协议堆栈的传输驱动中的最底层驱动。传输协议驱动申请封包,从发送应用程序将数据复制到封包中,通过调用NDIS函数将这些封包发送到下层驱动。协议驱动也是提供了一个协议接口来接收来自下层驱动的封包。传输协议驱动将收到的封包传递给相应的客户应用程序。在下层,协议驱动与中间层微端口驱动交互。协议驱动调用NDISXX函数发送封包,读取和设置下层驱动维护的信息,使用操作系统服务。协议驱动也要导出一系列的入口点,NDIS调用它来指示封包的接受,指示下层驱动的状态,或者是和其他协议驱动的通信。

  工作流程

  (1)中间层对数据包的管

  中间层驱动程序从高层驱动程序接收数据包描述符,并在网络上发送,该包描述符与一个或多个链式数据缓冲区相关联。中间层驱动程序能够对数据进行重新打包,并使用新的数据包描述符进行数据传输,也可以直接将数据包传递给低层驱动程序,如果驱动程序下边界面向无连接,可调用NdisSend或NdisSendPackets函数完成该功能,如果驱动程序下边界是面向连接的,可调用NdisCoSendPackets函数完成此项功能。中间层驱动程序也可以进行一些操作改变链式缓冲区的内容,或者调整内入数据包相对于其他发送任务的发送次序或发送定时。但是,即使中间层驱动程序只是向下层传递上层引入的数据报,例如,仅仅只是对数据包进行计数,也必须分配新的数据包描述符,并且要管理部分或者全部新的包结构。

  每一个中间层驱动程序都必须分配自己的包描述符来代替高层的数据包描述符。如果中间层驱动程序要把数据包从一种格式转化为另一种格式,也必须分配缓冲区描述符来映射用于复制转配数据的缓冲区,该缓冲区由中间层驱动程序进行分配。如果有与复制的包描述符相关的OOB数据,那么可以将这些数据复制到与包描述符(中间层驱动程序分配的)相关的新OOB数据块,其过程是,首先,用NDIS_OOB_DATA_FROM_PACKET宏获取OOB数据区的指针,然后,调用disMoveMemory将其内容移入与新包描述符相关的OOB数据区。该驱动程序也能够用NDIS_GET_PACKET_XXX或NDIS_SET_PACKET_XXX宏从与老的包描述符相关的OOB数据区中,读取相关的内容,并写入与新包描述符相关的OOB数据区。

  (2)包描述符通过调用以下NDIS函数进行分配

  (a)调用NdisAllocatePacketPool或者NdisAllocatePacketPoolEx,为固定尺寸包描述符(由呼叫器指定数量)分配并初始化一组非可分页池。

  (b)调用NdisAllocatePacket函数,从NdisAllocatePacketPool(Ex)已经分配的池中分配包描述符。根据中间层驱动程序目的的不同,驱动程序能够对引入包描述符连接的缓冲区进行重新打包。例如,中间层驱动程序可以在接下来的情况下分配包缓冲池、对引入包数据重新打包.如果中间层驱动程序从高层协议驱动程序接收到的数据缓冲区,比低层介质能够发送的单个缓冲区更大,那么中间层驱动程序必须将引入的数据缓冲分割成更小的、满足低层发送要求的数据缓冲。中间层驱动程序在将发送任务转交低层驱动程序之前,可以通过压缩或加密数据方式来改变内入数据包的长度。调用以下NDIS函数分配上面所要求的缓冲区:

  NdisAllocateBufferPool获取用于分配缓冲区描述符的句柄;NdisAllocateMemory或NdisAllocateMemoryWithTag分配缓冲区;

  (c)调用NdisAllocateBuffer分配和设置缓冲区描述符,映射由NdisAllocateMemory(WithTag)分配的缓冲区,并链接到NdisAllocatePacket分配的包描述符上。

  驱动程序可以通过调用NdisChainBufferAtBack或NdisChainBufferAtFront函数,将缓冲区描述符和包描述符进行链接。调用NdisAllocateMemory(WithTag)返回的虚拟地址和缓冲区长度,将被传递给NdisAllocateBuffer函数来初始化其所映射的缓冲区描述符。符合典型要求的包描述符能够在驱动程序初始化时根据要求进行分配,也可以通过ProtocolBindAdapter函数调用来实现。如果必要或者出于性能方面的考虑,中间层驱动程序开发者可以在初始化阶段,分配一定数量的包描述符和由缓冲区描述符映射的缓冲区,这样,就为ProtocolReceive复制内入数据(将向高层驱动程序指示)预先分配了资源,也为MiniportSend或MiniportSendPackets向相邻低层驱动程序传递引入的发送数据包,准备了可用的描述符和缓冲区。如果在中间层驱动程序复制接收/发送数据到一个或多个缓冲区时,最末的一个缓冲的实际数据长度比缓冲区的长度小,那么,中间层驱动程序将调用NdisAdjustBufferLength把该缓冲区描述符调节到数据的实际长度。当该包返回到中间层驱动程序时,应再次调用该函数将其长度调节到完整缓冲区的实际尺寸。

  (3)下边界面向无连接的中间层驱动程序的工作流程

  通过ProtocolReceivePacket函数,从低层NIC驱动程序以完整数据包形式接收内入数据,该数据包由NDIS_PACKET类型的包描述符指定,也能够通过将内入数据指示给ProtocolReceive函数,并将数据复制到中间层驱动程序提供的数据包中。下边界面向连接的中间层驱动程序总是用ProtocolCoReceivePacket函数,从低层NIC驱动程序接收数据作为一个完整的数据包。

  在如下情况下,中间层驱动程序能够保持对接收数据包的所有权:当下边界面向无连接的中间层驱动程序向ProtocolReceivePacket函数指示完整数据包时,当下边界面向连接的中间层驱动程序向ProtocolCoReceivePacket函数指示数据包时,其中DIS_PACKET_OOB_DATA的Status成员设置为除NDIS_STATUS_RESOURCES以外的任何值。在这些情况下,中间层驱动程序能够保持对该包描述符和其所描述的资源的所有权,直到所接收数据处理完毕,并调用NdisReturnPackets函数将这些资源返还给低层驱动程序为止。如果ProtocolReceivePacket向高层驱动程序传递其所接收的资源,那么至少应该用中间层驱动程序已经分配的包描述符替代引入包描述符。根据中间层驱动程序目的的不同,当其从低层驱动程序接收完整数据包时,将有几种不同的包管理策略。例如,以下是几种可能的包管理策略:复制缓冲区内容到中间层驱动程序分配的缓冲区中,该缓冲区被映射并链接到一个新的包描述符,向低层驱动程序返回该输入包描述符,然后可以向高层驱动程序指示新的数据包;创建新的包描述符,将缓冲区(与被指示包描述符相关联)链接到新的包描述符,然后将新的包描述符指示给高层驱动程序。当高层驱动程序返回包描述符时,中间层驱动程序必须拆除缓冲区与包描述符间的链接,并将这些缓冲区链接到最初从低层驱动程序接收到的包描述符,最后向低层驱动程序返还最初的包描述符及其所描述的资源。即使下边界面向无连接的中间层驱动程序支持ProtocolReceivePacket函数,它也提供ProtocolReceive函数。当低层驱动程序不释放包描述符所指示资源的所有权时,NDIS将调用ProtocolReceive函数,当这类情况出现时,中间层驱动程序必须复制所接收的数据到它自己的缓冲区中。对于下边界面向连接的中间层驱动程序,当低层驱动程序不释放包描述符所指示资源的所有权时,则将数据包的NDIS_PACKET_OOB_DATA的Status成员设为NDIS_STATUS_RESOURCES,然后驱动程序的ProtocolCoReceivePacket函数必须将接收到数据复制到自己的缓冲区中

  过滤数据包的原理

  NDIS中间层驱动程序在NDIS中起着转发上层驱动程序送来的数据包,并将其向下层驱动程序发送的接口功能。当中间层驱动程序从下层驱动程序接收到数据包时,它要么调用NdisMXxxIndicateReceive函数,要么调用NdisMindicateReceivePacket函数向上层指示该数据包中间层驱动程序通过调用NDIS打开和建立一个对低层NIC驱动程序或者NDIS中间层驱动程序的绑定。中间层驱动程序提供MiniportSetInformation和MiniportQueryInformation函数来处理高层驱动程序的设置和查询请求,某些情况下,可能还要将这些请求向低层NDIS驱动程序进行传递,如果其下边界是面向无连接的可通过调用NidsRequest实现这一功能,如果其下边界是面向连接的则通过调用NidsCoRequest实现该功能。中间层驱动程序通过调用NDIS提供的函数向网络低层NDIS驱动程序发送数据包。例如,下边界面向无连接的中间层驱动程序必须调用NdisSend或NdisSendPackets来发送数据包或者包数组,而在下边界面向连接的情况下就必须调用NdisCoSendPackets来发送包数组数据包。如果中间层驱动程序是基于非NDISNIC驱动程序的,那么在调用中间层驱动程序的MiniportSend或Miniport(Co)SendPackets函数之后,发送接口对NDIS将是不透明的。NDIS提供了一组隐藏低层操作系统细节的NdisXxx函数和宏。例如,中间层驱动程序可以调用NdisMInitializeTimer来创建同步时钟,可以调用NdisInitializeListHead创建链表。中间层驱动程序使用符合NDIS标准的函数,来提高其在支持Win32接口的微软操作系统上的可移植性。

  个人防火墙 - 重点和难点

  1) 需要完整的了解WINDOWS的运行原理,这包括内核部分和用户部分。

  2) 需要熟悉用DDK,完整的了解网络驱动的运行机制。

  3) 需要了解防火墙的工作原理。

  个人防火墙 - 知名产品

  蓝盾防火墙个人版

  蓝盾曾在2001年中美网络攻击事件中扬名,当时有网站报称使用该品牌的网站防火墙后,未受黑客攻击。“蓝盾防火墙个人版”使用智能防御系统,可以有效地拦截各种探测、攻击手段,支持用户自定义安全规则,具有强大的反追踪功能。当受到攻击和探测时,能追踪攻击方计算机名、用户名、MAC IP地址等。但软件的使用界面一般,设置与管理功能较少,不具备扩展性与升级能力,帮助文件和使用手册也不够详细。

  金山网镖

  金山网镖是金山公司的个人防火墙产品,主要基于安全规则,通过高、中、低三种安全级别的设定,达到不同程度地保护用户安全的目的,能够通过对已知端口的检查,防御特洛伊木马。软件占用的资源少,稳定性较高,但功能简单,设置与管理功能明显不足,扩展与升级性一般。

  瑞星个人防火墙

  “瑞星个人防火墙”是瑞星公司的个人防火墙产品。软件基于规则设置,具备防御特洛伊木马和入侵检测功能。在受到攻击时,系统会自动切断攻击连接,发出报警声音并用闪烁图标提示用户。软件占用的资源较少,但稳定性较差。使用界面一般,警报与帮助文件、使用手册比较简单。

  诺顿个人防火墙

  “诺顿个人防火墙”是“诺顿互连网特警”的一个部分,它曾在国外的评比中获得最佳个人安全防护系统的荣誉。该软件性能稳定,提供自动识别程序,帮助用户设置计算机系统上应用程序的安全规则,允许用户为不同的网络区域指定安全策略,方便的在线升级功能,可以使诺顿个人防火墙更好地检测特洛伊木马和黑客入侵。软件的设置与管理方便,警报与帮助文件以及使用手册内容详细。一旦受到某个IP地址的攻击,会在30分钟内自动禁止所有来自该地址的连接请求,使对方无法试图使用其他方式攻击。但软件占用的系统资源较大,而且由于需要对应用程序逐一指定安全规则,容易对用户造成困扰。


相关文章链接:
 ·POS [12-14]
 ·小米网 [11-30]
 ·电纸书 [11-30]
 ·淘宝网 [11-30]
 ·蹭网卡 [11-22]
 ·支付宝 [11-22]
 ·DOS [11-16]
 ·emule [11-16]
 ·个人防火墙 [11-4]
 ·卡巴斯基 [11-4]
 ·AVG[安全软件] [11-4]
 ·诺顿 [11-4]
 ·金山毒霸 [11-4]
 ·系统软件知识介绍 [7-22]
 ·软件调试的几个方法 [7-18]
相关研究报告:
 ·中国云计算第三方软件行业调研报告2011
 ·中国PLM市场调研报告2011
Copyright © 2002-2012 版权所有