频道栏目
首页 > 资讯 > 杀毒防毒 > 正文

解析Windows下个人防火墙实现技术路线

11-01-17        来源:[db:作者]  
收藏   我要投稿

防火墙技术在网络安全领域是数据加密与签名外的另一个核心要点。基于Windows平台上的个人防火墙系统的实现需要理解Windows的网络编程的一些独特底层接口和网络协议底层,难度极大。另外,个人防火墙系统实现所用到的很多软件技术和企业级的网络防火墙、硬件防火墙原理基本是相同的,因此对个人防火墙系统的研究能极大地推动网络安全技术进步和人才涌现,具有重大工程意义。

国外在该领域发展得比较快,国内主要有天网防火墙和许多原来是开发杀病毒软件的开发商的个人防火墙,如KV系列、KILL系列、金山系列等,而且在实用性能上并不比国外知名品牌逊色。由于网络安全领域涉及机密多,无法得到商业个人防火墙的技术实现细节上的区别联系。

1个人防火墙功能分析

(1)实时监控,根据安全规则对进出本机的网络封包进行过滤;

(2)受到攻击时向用户报警指示;

(3)日志记录网络访问动作的详细信息;

(4)电子邮件监控,可以根据自定义的过滤规则对邮件实施过滤;

(5)根据特征库进行入侵检测;

(6)在线升级特征库;

(7)将防毒、杀毒和个人防火墙集成在一起。

这里进一步继续分析。取并集可以得到一种功能强大的方案,但很多功能不完全属于防火墙技术领域的研究范围,如入侵检测和防毒杀毒和邮件监控功能,而在线升级是~种技术支持的手段。入侵检测是项复杂的技术,有许多实现方法,最常用的是借鉴杀毒软件的工作原理定义一个入侵的特征库,根据这个特征库里的数据用包过滤技术对入侵进行拦截,也就是基于特征库进行数据包截获分析,其难点是特征库的建立完善和自学习(关于特征库的建立和自学习不是本项目的研究内容),但本质仍然是以包过滤为核心。

入侵检测和各种规则过滤(包括应用程序规则和电子邮件规则)都是基于数据包截获分析技术基础上的,可以在不同的网络体系结构层次截获网络通信数据包,然后结合自定义控管规则进行分析判断是拦截还是放行。因此,防火墙软件技术的核心是数据包封包截获——对网络上流动的数据包截获并分析,通过控管规则来决定放行或者禁止出/入。因此,这里定义个人防火墙软件系统应该具有的功能点有:

(1)根据应用程序控制访问规则对应用程序的联网动作进行过滤检查;

(2)对应用程序控制访问规则具有自学习功能;

(3)可实时监控,监视网络活动;

(4)具有日志,以记录网络访问动作的详细信息;

(5)被截获时通过声音或闪烁的图标向用户报警提示。其中(1)是个人防火墙的基本功能,(4)、(5)是一个实用的个入防火墙系统应具备的辅助功能,(2)的要求比较高,要求个人防火墙系统在找不到完全符合的控管规则定义时具备一定的智能学习能力来决定放行或拒绝的管制动作。

2 Windows网络体系结构分析

OSI/RM(OSI参考模型)是ISO最早给出的网络体系结构参考模型嘲,它首先提出了协议分层和对等层通信,已成为描述和理解各种网络协议和网络通信过程的标准术语。本节将使用OSI参考模型尽可能准确地描述Windows操作系统的网络体系结构,进而分析得到数据包截获可能发生的网络层次与方法。

给出了OSI七层参考模型与Window的网络驱动分层结构,因此包截获可以发生在网卡驱动程序所在的数据链路层及其以上直至应用层的各层中,这给我们提供了拦截网络数据包的基本思路。MicrosoR在Windows的各个网络协议层次上都提供了一些公开规范或者未公开非常规的方法方便开发者来插入一层,因此可以利用这些规范或者非常规的方法在插入的一层处理中进行数据包截获。

在用户态下进行网络数据包拦截就是指会话层和表示层的包截获,利用WinsockSPl(serviceproviderinterface,服务提供程序接口)或直接替换系统自带的Winsock动态链接库来截获包,注意这里指的WinsockSPI编程并不是指Windows上的套接字编程Winsock网络编程。另一个难点是对各种网络坍议的解析,可以使用一些嗅探器软件工具(如著名的Sniffer)来学习各种TCP/IP协议。

TDI层及以下底层的操作必须借助它提供的一些接口和开发规范进行,操作系统工作在系统态保护模式下。在系统态下的截获要使用到WindowsDDK(windowsdevicedevelopingkit)和TDI(transport layer device interface filter driver)、NDIS接口规范(networkdriverinterfacespecification)。DDK是Windows下驱动开发的开发包,可以通过学习W/NDDK中的一些简单范例找到解决方法。

在系统态下首先看最底层,从网络体系结构来看截获可发生在网卡驱动程序所在的数据链路层。但防火墙系统需要从数据包截获中得到的主要是IP地址、协议服务类型和应用程序信息,在网络层进行截获已经足够可以获得这些信息,无必要对网卡MAC帧进行截获分析。而且在网卡截获适应各种各样的网卡硬件环境,实际上也就是开发一个网卡驱动程序,这与防火墙系统的开发目标不太吻合。

从上向下看系统态下的方案还可以利用TDI层上的过滤驱动程序或网络层上的NDIS中间层驱动程序来做文章,前者是TDI接口规范后者是NDIS接口规范。系统态的方法就是开发驱动程序的方法,只不过这里是软件驱动程序而不是直接和硬件打交道的硬件驱动程序。

微软和3Com公司在1989年制定了一套开发Windows下底层驱动程序的标准,称为NDIS,是开发网络驱动及网卡驱动的接口规范,所有的网络通信都最终要通过NDIS。N-DIS为网络驱动的开发提供了一套标准的接口,从OSI网络体系结构来看横跨了三层(数据链路层、网络层和传输层),使得网络驱动程序的跨平台性更好。NDlS提供以下几个层次的接口:

①NDIS小端口驱动,开放Miniport接口给上层驱动程序调用。可以用Miniport驱动实现网卡驱动;

②中间驱动,它兼有Miniport和Protocol接口分别与上层的协议驱动程序和底层小端口驱动程序对接通信;

③协议驱动,例如传输驱动程序Tcpip.sys。

3技术路线选择

个人防火墙的工作是监控网络进出的数据流,对用户认为危险或者有害的数据流向进行禁止或者监控,其核心功能是网络数据包的监控于分析过滤。从底层看,NDIS的中间驱动由于是在网卡驱动程序和传输驱动程序之间插入了一层,所以可以截获较为底层的封包,可以完成更为低级(最底层的是在网卡驱动程序层截获,但前面阐述过在网卡驱动程序层做网络数据包截获没有实现价值)的操作,不会有网络数据包从这里旁路,因此其最大的优点是安全系数高,但需要指出的是,NDIS层次上的网络操作不采用标准的I/O模式(IRP)形式,因此不能确定某个网络操作是由哪个进程引起的。个人用户看不到网络数据是源于哪个进程,就不容易让用户自定义过滤包规则,这是个非常大的遗憾和缺陷。当然。越靠近底层的驱动程序编写可移植性和健壮性越难保证,编码复杂也是其一个缺点
对于TDI过滤驱动程序,由于采用标准的Windows I/O请求(IRP),它没有NDIS中间层驱动的不能得到进程信息的缺点,但由于它工作在传输驱动程序Tcpip.sys之上,由Tepip.sys接收后直接处理的数据包是不会传递到上层TDI过滤驱动程序的,如ICMP协议的应答包。Ping和Traeert就是利用ICMP来探测网络的可达性和跟踪路由。NDIS中间驱动和TDI过滤驱动,都是32位Windows平台上才提供的方法。整个NDIS规范和TDI的概念,是在Win.dows NT平台上提出和得到发展的,以后的Windows 2000,Windows XP都支持,但以前的Windows 98和WindOWS Me都不支持。因此如果要开发一个通用的Windows平台下的个人防火墙软件,这两种方法是不适合的。

对于用户态下的SPI方法,它使用DLL监控使用Winsock调用进行网络通信的网络数据包。它工作在TDI客户之上,所有的用户进程之下,因此对于用户进程交给它的网络请求和意图非常清楚——在经过底层的分段(IP分段)之前,对用户进程的行为,目的可以更直观的了解,非常适合做内容过滤。并且其截获的所有Winsock调用广泛地被所有Windows平台支持。另外编程相对简单,平台适应性好。其最大的缺点是有的网络程序使用TDI接口提供的一些函数例程直接发起通信的发送和接收,用户态的数据包截获技术对此类程序无能为力。另外,和TDI方法一样,对那些由Tcpip.sys接收后直接处理的数据包,如利用ICMP协议的应答包进行探测网络可达性的Ping和Tracert等,由于它位于TDI的更上层,用户态的数据包截获技术对此旁路无能为力。

结合项目目标,要实现通用于Windows平台的个人防火墙系统只有采用SPI包过滤技术路线进行开发。另外,个人防火墙系统应能详细记录各种进程的访问网络信息,而应用层截获能最早得到应用层进程的发送数据包信息,能得到最完整的接收方发送的数据包信息,因而能实现记录最丰富网络访问信息的个人防火墙系统。或者可以认为,若须记录最详细的进程访网信息,必须使用SPI包过滤技术。

4结束语

个人防火墙的核心是数据包过滤,本文从个人防火墙的功能分析出发,对比OSI七层参考模型与Window的网络驱动分层结构,详尽分析给出了进行网络数据包过滤的各种可能的技术路线。并结合本项目目标,给出了使用SPI进行数据包截获过滤的初步结论。SPI截获能够得到最为丰富的进程访网信息,因此将特别有助于用户进行ACL控管规则干预。但SPI也有自身的缺陷,即数据包有可能被“旁路”。可以展望,使用复合型的数据包过滤技术进行个人防火墙开发将成为趋势。

相关TAG标签
上一篇:从百度英文官方博客被入侵看网络安全
下一篇:仿照newmm.asp用stream对象写的一个webshell
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站