windows平台下个人防火墙的设计与实现毕业论文.doc_第1页
windows平台下个人防火墙的设计与实现毕业论文.doc_第2页
windows平台下个人防火墙的设计与实现毕业论文.doc_第3页
windows平台下个人防火墙的设计与实现毕业论文.doc_第4页
windows平台下个人防火墙的设计与实现毕业论文.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要随着互联网的普及,安全问题越来越受到大家的重视。一个安全良好的网络环境能很好的保护好人们的计算机不受木马和病毒的侵扰,给人们的财产和隐私提供必要的保护。个人防火墙作为最早出现和最多使用的网络安全产品,以软件的形式存在于计算机与其所连接的网络之间,对流经计算机的未经授权的网络数据包进行监控和阻止,以起到对系统的保护作用。因此,开发有效的个人防火墙具重要意义。本文根据个人防火墙的实际需求,首先分析了目前市场上各类防火墙所采用的不同核心过滤技术,结合其优缺点和实现的难易程度,确定了本课题实现所采用的技术并做出相应的阐述。其次对本课题实现的功能和核心技术进行了详细的介绍,接着对个人防火墙的相关功能进行了介绍和展示,最后对完成本论文中获得的心得体会和经验进行了系统的总结。矚慫润厲钐瘗睞枥庑赖。本课题中实现个人防火墙所采用的核心过滤技术为Filter-Hook Driver。核心过滤驱动的开发采用Visual Studio 2010和Windows下的驱动开发工具WDK进行编码和编译,用户层采用C语言进行编写。用户界面用MFC实现。本个人防火墙实现了对网络数据包的过滤,管控规则设置和日志功能。充分考虑了个人防火墙所需的基本功能,操作方便,界面简单友好。聞創沟燴鐺險爱氇谴净。关键词个人防火墙;数据包过滤;Filter-Hook Driver;网络安全Abstract With the popularity of the Internet, security issues are attention by more and more people. A secure network environment can protect personal computer from Trojans and viruses, and provide necessary protection to peoples property and privacy. Personal firewall as the earliest and the most used Network Security toolkit, it exists as software, between a computer and its network. In order to protect the system, personal firewall monitors and prevents network packets which are flowing through the compute and unauthorized. Therefore, the development of an effective personal firewall has the important meaning.残骛楼諍锩瀨濟溆塹籟。According to the actual needs of personal firewall, this paper first analyzes different core filtering technologies adopted by all kinds of firewall used in the current market, combined with the ease of their implementation and relative merits. This topic determined how to achieve this system and made the corresponding elaboration. Secondly the function and the core technology of this project is introduced in detail, then introduces and displays the related functions of a personal firewall, and finally summarizes the feelings and experiences in completing this paper.酽锕极額閉镇桧猪訣锥。In this topic, the core filtering technology in realization of personal firewall is adopted by the Filter-Hook Driver. Filter-Hook Driver using Visual Studio 2010 and WDK to development which is a driver development tool under the Windows, Using C language to write user layer. The user interface use MFC to achieve. This personal firewall achieved those functions: network packet filtering, control rules set and logging. Fully considering the basic functions of a personal firewall, this system is easy to operate and has friendly interfaces.彈贸摄尔霁毙攬砖卤庑。Key wordsPersonal Firewall; Packet filtering; Filter-Hook Driver; Network security謀荞抟箧飆鐸怼类蒋薔。II目录摘要I厦礴恳蹒骈時盡继價骚。AbstractII茕桢广鳓鯡选块网羈泪。第一章 前言1鹅娅尽損鹌惨歷茏鴛賴。1.1 课题的开发背景与意义1籟丛妈羥为贍偾蛏练淨。1.1.1 开发背景1預頌圣鉉儐歲龈讶骅籴。1.1.2 研究意义2渗釤呛俨匀谔鱉调硯錦。1.2 国内外研究现状2铙誅卧泻噦圣骋贶頂廡。1.3 课题研究内容与结构4擁締凤袜备訊顎轮烂蔷。第二章 相关理论简介5贓熱俣阃歲匱阊邺镓騷。2.1 防火墙核心过滤技术5坛摶乡囂忏蒌鍥铃氈淚。2.1.1 用户态数据包拦截技术5蜡變黲癟報伥铉锚鈰赘。2.1.2 内核态数据包拦截技术5買鲷鴯譖昙膚遙闫撷凄。2.1.3 Filter-Hook Driver6綾镝鯛駕櫬鹕踪韦辚糴。2.2 TCPIP网络通信协议7驅踬髏彦浃绥譎饴憂锦。2.2.1 IP网际协议8猫虿驢绘燈鮒诛髅貺庑。2.2.2 TCP传输控制协议8锹籁饗迳琐筆襖鸥娅薔。2.2.3 UDP用户数据报协议8構氽頑黉碩饨荠龈话骛。2.3 内核模式驱动程序开发9輒峄陽檉簖疖網儂號泶。第三章 开发工具与环境简介10尧侧閆繭絳闕绚勵蜆贅。3.1 Microsoft Visual Studio 201010识饒鎂錕缢灩筧嚌俨淒。3.2 C语言简介10凍鈹鋨劳臘锴痫婦胫籴。3.3 驱动开发工具10恥諤銪灭萦欢煬鞏鹜錦。3.3.1 WDK内核编程工具11鯊腎鑰诎褳鉀沩懼統庫。3.3.2 编译驱动程序源文件11硕癘鄴颃诌攆檸攜驤蔹。3.3.3 安装运行驱动程序12阌擻輳嬪諫迁择楨秘騖。3.4 MFC简介12氬嚕躑竄贸恳彈瀘颔澩。第四章 个人防火墙的总体设计13釷鹆資贏車贖孙滅獅赘。4.1 防火墙整体结构13怂阐譜鯪迳導嘯畫長凉。4.1.1 用户层14谚辞調担鈧谄动禪泻類。4.1.2 驱动层14嘰觐詿缧铴嗫偽純铪锩。4.2 防火墙系统流程图14熒绐譏钲鏌觶鷹緇機库。4.3 防火墙实现的功能16鶼渍螻偉阅劍鲰腎邏蘞。第五章 个人防火墙的详细设计与实现17纣忧蔣氳頑莶驅藥悯骛。5.1 驱动层Filter-Hook Driver17颖刍莖蛺饽亿顿裊赔泷。5.1.1 初始化17濫驂膽閉驟羥闈詔寢賻。5.1.2 请求分发18銚銻縵哜鳗鸿锓謎諏涼。5.2 驱动控制模块的实现22挤貼綬电麥结鈺贖哓类。5.2.1 驱动服务安装23赔荊紳谘侖驟辽輩袜錈。5.2.2 打开驱动设备24塤礙籟馐决穩賽釙冊庫。5.2.3 对驱动设备进行控制24裊樣祕廬廂颤谚鍘羋蔺。5.3 用户界面25仓嫗盤紲嘱珑詁鍬齊驁。5.4 系统测试25绽萬璉轆娛閬蛏鬮绾瀧。5.4.1 测试环境与工具26骁顾燁鶚巯瀆蕪領鲡赙。5.4.2 功能测试26瑣钋濺暧惲锟缟馭篩凉。结论29鎦诗涇艳损楼紲鯗餳類。参考文献30栉缏歐锄棗鈕种鵑瑶锬。致谢31辔烨棟剛殓攬瑤丽阄应。windows平台下个人防火墙的设计与实现第一章 前言本章主要阐述windows平台下个人防火墙开发的相关背景和课题研究意义,对个人防火墙在国内外的发展现状作简要介绍。并对本文的结构和内容进行简单的概括。峴扬斕滾澗辐滠兴渙藺。1.1 课题的开发背景与意义1.1.1 开发背景随着网络技术的飞速发展和互联网在全世界范围内的普及,人们的生活越来越离不开互联网学习,娱乐,通信,信息获取等等,互联网大大提高了我们的效率,丰富了我们的生活。但随着互联网用户越来越多,互联网在给人们生活带来便利的同时,也给不少人提供了一条攻击其他用户计算机或窃取用户资料的途径,这就导致了普通用户在网络上收到攻击的现象越来越严重,各种入侵攻击层出不穷,导致人们因网络安全而导致的损失越来越大。因此,为了给用户提供一个良好的网络环境,需要一种方法来为用户抵御这类来自网络的攻击。而个人防火墙作为一种隔离控制技术,把用户和公共网络分隔开来,通过对流经它的网络信息进行监控过滤,抵御外部攻击以实现安全防护的安全工具,可以对流经它的数据包进行过滤对用户“允许”的合法数据访问放行并对用户“不允许”的非法数据进行拦截过滤,以起到保护个人计算机的目的。因此,个人防火墙在保护用户个人计算机的网络安全方面起到重要作用。詩叁撻訥烬忧毀厉鋨骜。另一方面,Windows操作系统凭借其简单易用的操作和强大的技术支持,几乎占据了整个桌面操作系统市场,市场占有率超过90%。但我们知道,世界上没有绝对安全的操作系统,Windows也存在很多漏洞,给骇客通过网络和系统漏洞对用户进行攻击留下了后门,这无疑会给用户的财产和隐私带来巨大的损失。而防火墙作为保护用户上网环境安全的工具,可以有效避免用户因遭到网络攻击造成的损失,因此,在Windows系统下构建个人防火墙是十分必要的。则鯤愜韋瘓賈晖园栋泷。考虑到各种防火墙的优缺点及其实现的难易程度,并结合个人能力。本文最终采用Filter-Hook Driver数据包拦截技术实现个人防火墙。胀鏝彈奥秘孫戶孪钇賻。1.1.2 研究意义个人防火墙作为作为最常用的网络安全工具,其实现所用到的很多技术跟企业级防火墙和硬件防火墙的基本原理是相同的,可以从研究个人防火墙开始,由浅入深,进而理解企业级防火墙和硬件防火墙的原理和实现方法。从而研究个人防火墙也能极大的推动网络安全技术的进步,具有重大的工程意义。鳃躋峽祷紉诵帮废掃減。Windows作为国内外主要的桌面操作系统,其平台下的个人防火墙为用户的网络安全起到了很好的防护作用。但目前市场上基于不同包截获技术的防火墙的综合性能参差不齐,故在该平台下的防火墙的研究对于推动个人防火墙技术的发展具有现实意义。本文采用的通过Filter-Hook Driver实现数据包拦截的防火墙技术虽然不是开发防火墙最好的方法,但对于对这个领域感兴趣的个人是一个具实际意义的好的开始。稟虛嬪赈维哜妝扩踴粜。1.2 国内外研究现状防火墙作为最早出现的网络安全产品,受到了广大用户和机构的青睐,应用十分广泛,自1986年美国Digital公司提出防火墙概念并安装第一个商用防火墙以来,防火墙技术已经获得了飞速的发展,基于功能划分,可分为以下阶段:陽簍埡鲑罷規呜旧岿錟。 第一代防火墙技术几乎与路由器同时出现,采用包过滤技术。这类防火墙根据数据包头信息和过滤规则来控制数据包的过滤,一般用于对安全性要求不是很高,偏重数据处理速度的网络路由器上。沩氣嘮戇苌鑿鑿槠谔應。 第二代防火墙由贝尔实验室的Dave Presotto和Howard Trickey最早于于1989年推出,即电路层防火墙。并同时提出了第三代防火墙应用层防火墙的概念(或者叫做代理防火墙)。钡嵐縣緱虜荣产涛團蔺。 1992年,USC信息科学院的BobBraden开发出了基于动态包过滤(Dynamic packet filter)技术后来演变为现在所说的状态监视(Stateful inspection)技术的第四代防火墙。它根据过去的通信信息和应用程序状态信息动态生成过滤规则。1994年,以色列的CheckPoint公司开发出了第一个采用这种技术的商业化的防火墙产品。懨俠劑鈍触乐鹇烬觶騮。 1998年,NAI公司推出了一种自适应代理(Adaptive proxy)技术,并在其产品Gauntlet Firewall for NT中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。该类型的防火墙整合了动态包过滤技术和应用代理技术,本质上也可认为仍属于状态检测防火墙。謾饱兗争詣繚鮐癞别瀘。另外,基于实现划分,防火墙又可分基于路由器的防火墙、用户花的防火墙、建立在通用操作系统上的防火墙和具有安全操作系统的防火墙四个阶段:呙铉們欤谦鸪饺竞荡赚。 基于路由器的防火墙即第一代防火墙,上面已做简单介绍。 用户化的防火墙即把过滤功能从路由器中独立出来加上日志和警告功能,并针对用户需求提供相应功能,使得防火墙的安全性和性价比相对第一代防火墙有所提高。莹谐龌蕲賞组靄绉嚴减。 建立在通用操作系统上的防火墙,顾名思义,就是将防火墙以软件或硬件的实现方式独立出来,并配有专用的代理系统,以监控所有协议的数据和指令,并能保护用户的编程空间和可配置内核参数的设置,这使得防火墙的安全性和速度得到大幅提高。麸肃鹏镟轿騍镣缚縟糶。 具有安全操作系统的防火墙本身就是一个操作系统,在安全性上较前几种防火墙有本质的提高,这也是目前防火墙产品的主要发展趋势,这类防火墙的开发厂商有操作系统的源代码,可实现安全内核并对其加固,甚至对每个服务器和子系统都做安全处理,一旦骇客攻破了一个服务器,防火墙就将它隔离在此服务器内,不会对其他部分构成威胁,且透明性良好,易于使用。納畴鳗吶鄖禎銣腻鰲锬。windows操作系统作为全球使用者最多的操作系统,其平台下开发出了许多优秀的个人防火墙。国外的如Symantec公司的Norton、Network ice公司的BlackIce Defender、Mcafee公司的Cisco、卡巴斯基互联网安全套装个人版以及Zone Lab公司的Free ZoneAlarm等都是比较著名的个人防火墙。国内市场上个人用户较多的有天网防火墙个人版、金山网镖、瑞星、费尔等常见个人防火墙。風撵鲔貓铁频钙蓟纠庙。所有这些基于windows的个人防火墙的区别主要在于它们所采用的对网络数据包拦截的核心技术不同。总的来说,可分为用户态和内核态数据包拦截两大类 孙卫, 荆霞, 王诚. Windows平台个人防火墙技术的研究J. 南京审计学院学报, 2010, 7(2):84-92.。用户态下的个人防火墙主要为基于winsock2 SPI技术的个人防火墙(如费尔个人防火墙等);和内核态下的个人防火墙主要有:基于TDI过滤驱动的个人防火墙(如国内的天网防火墙和金山网镖等),基于NDIS中间层驱动(如冰盾防火墙等)的个人防火墙,基于NDIS-HOOK的个人防火墙(如卡巴斯基互联网套装个人版)和基于Win2K Filter-Hook Driver的个人防火墙。灭嗳骇諗鋅猎輛觏馊藹。目前很多比较优秀著名的个人防火墙多采用复合型数据包过滤技术进行开发,即采用两种或多种封包截获技术进行数据包的过滤,以达到全面、强大、平台兼容的效果。本课题将采用Filter-Hook Driver过滤技术,Filter-Hook Driver是从Windows 2000开始提供的一种机制,利用ipfiltdrv.sys所提供的功能来拦截网络数据包,其结构简单,相对易于实现,且能截获所有的IP包。铹鸝饷飾镡閌赀诨癱骝。1.3 课题研究内容与结构本文主要研究通过实现Filter-Hook Driver的方式来操控ipfiltdrv.sys对网络数据包的过滤,本课题主要分为核心层驱动和用户层调用函数及界面两个模块,通过用户层操作控制核心层驱动程序,从而实现个人防火墙。简单来说,实现Filter-Hook就是对系统ipfiltdrv.sys的接口的实现。本文的整体结构如下:攙閿频嵘陣澇諗谴隴泸。 第一章主要阐述系统开发的背景和研究意义、国内外研究现状以及本文总体概述。 第二章主要针对本文所涉及的技术的相关知识理论进行简单的介绍。 第三章将介绍本防火墙系统开发中所用到的开发环境和工具。 第四章详细介绍本文个人防火墙的系统设计和各个功能模块。 第五章主要阐述核心功能的具体实现和详细分析以及系统测试等。 最后是总结,致谢等。第二章 相关理论简介本章将对课题实现中所用到的技术和开发工具进行介绍。将对各种主流防火墙核心过滤技术、TCPIP和驱动开发相关基础知识再做简单介绍。另将主要介绍如Filter-Hook Driver、IP过滤驱动(IP Filter Driver)等所用到的技术。趕輾雏纨颗锊讨跃满賺。2.1 防火墙核心过滤技术网络防火墙的核心过滤都是基于数据包的拦截技术之上的。在Windows下数据包的拦截方式可分为用户态和内核态数据包拦截两大类 Chiong R, Dhakal S. On the Insecurity of Personal FirewallJ. Information Technology,2008,(8):1-10.。夹覡闾辁駁档驀迁锬減。2.1.1 用户态数据包拦截技术用户态下的数据包拦截技术主要为Winsock2 SPI(Service Provider Interface)。视絀镘鸸鲚鐘脑钧欖粝。Winsock2是Windows Sockets的2.0版本,SPI是Winsock2提供的一个可编程接口。SPI以动态链接库(DLL)的形式工作在应用层,开发者通过安装自己编写的SPI程序(服务提供者接口程序)来处理截获的基于Socket的网络数据包以完成过滤。偽澀锟攢鴛擋緬铹鈞錠。Winsock2 SPI以DLL形式存在,编程简单,调试方便。并且数据封包比较完整,便于内容过滤。但无法拦截核心层或不用Socket的网络通讯(如ICMP)的数据包,容易被木马或病毒绕过 朱雁辉. Windows防火墙与网络封包截获技术M. 北京:电子工业出版社,2002:77-90.。緦徑铫膾龋轿级镗挢廟。2.1.2 内核态数据包拦截技术内核态下的数据包拦截方式有多种:TDI过滤驱动程序、NDIS中间层驱动程序、NDIS-Hook Driver和Filter-Hook Driver。目前很多大型防火墙都是采用复合型的数据包过滤技术。下面简单介绍各包拦截技术。Filter-Hook Driver将在后边进行单独的介绍。騅憑钶銘侥张礫阵轸蔼。1. TDI(Transport Driver Interface)过滤驱动:TDI-Filter Driver程序通过将创建的一个或者多个设备对象挂载到一个现有的驱动程序(tcpip.sys)之上,当有应用程序或其他驱动程序调用这一个或多个设备对象时,会首先映射到过滤驱动程序上,然后再由过滤驱动程序传递给原来的设备对象 方飞, 李兵. Windows系统TDI驱动关键技术的研究J. 通信技术, 2010, 43(7):89-91.。这就完成了数据包的过滤。其优点是可以获取到当前进程的详细信息。缺点是该驱动位于tcpip.sys上,不能获取由tcpip.sys直接处理的数据包,且TDI驱动需重启系统才能生效。另外Windows 2000之前的系统不支持。疠骐錾农剎貯狱颢幗騮。2. NDIS中间层驱动:位于协议驱动和小端口驱动之间。主要在网络层和数据链路层对数据包进行过滤。NDIS由于是在网卡驱动程序和传输驱动程序间插入了一层,其优点是过滤功能强大,能截获所有的数据包,安全系数高 刘鹏远. Windows下个人防火墙实现技术路线分析J. 计算机工程与设计, 2008, 29(21):65-68.。缺点是编程规范要求苛刻复杂,难度较大;不容易安装,安装出错容易导致系统错误;也不支持Windows 2000之前的系统。镞锊过润启婭澗骆讕瀘。3. NDIS-Hook Driver:NDIS-Hook Driver是目前大多数网络防火墙采用的方法。NDIS(Network Driver Interface Specification)是微软和3COM公司定制的一套开发Windows下网络驱动程序的标准,为网络驱动的开发提供一套标准接口,使得网络驱动程序的跨平台性更好。该技术的实现方法是安装Hook钩子到ndis.sys中,替换其中某些关键函数,从而达到截获网络数据包的目的 Chris Ries. Defeating Windows Personal Firewalls: Filtering Methodologies, Attacks, and DefenseR. VigilantMinds Inc, 2005:3-15.。具有安装简单,截包完整全面,安全性高等优点,但无法获得应用程序进程信息。榿贰轲誊壟该槛鲻垲赛。以上几种方法对于团队开发而言,NDIS-Hook是最佳选择,TDI-Filter Driver次之。但对个人而言,工作量较大。邁茑赚陉宾呗擷鹪讼凑。2.1.3 Filter-Hook Driver国内关于TDI和NDIS驱动的资料比较多,但有关Filter-Hook Driver 的书籍资料就相对少很多。本文所采用的Filter-Hook Driver数据包拦截过滤驱动技术在Microsoft 微软相关文档里也只有Windows 2000 DDK中有一些介绍,实际上它只是扩展了IP过滤驱动(IP Filter Driver)的功能,是一种内核模式驱动(Kernel Mode Driver)。IP Filter Driver对应ipfltdrv.sys文件,该文件在Windows XP中的System32drivers目录下,它允许用户注册自己的IP数据包处理函数。这个驱动文件默认未加载,但可以手动加载。Filter-Hook Driver主要利用IpFilterDriver(ipfiltdrv.sys)所提供的功能来拦截网络数据包,可应用与TCPIP协议 潘瑜. 基于Filter-Hook技术的防火墙软件设计与实现J. 江苏技术师范学院学报, 2010, 16(9):18-23.。其工作方式如下:在Filter-Hook Driver中提供我们自己编写的回调(callback)函数,然后用IP 过滤驱动注册回调函数。实现步骤如下:嵝硖贪塒廩袞悯倉華糲。1. 建立Filter-Hook Driver。2. 得到指向IP Filter Driver的指针。3. 获得指针后,通过发送特殊的IRP请求安装过滤函数,该请求传递的数据包含了过滤函数的指针。4. 过滤数据包。5. 结束过滤,撤销过滤函数(通过传递NULL指针作为过滤函数指针来实现)。另外,最多只能注册一个Filter-Hook Driver。只有当Filter-Hook回调函数为空时,Filter-Hook Driver才能向IP Filter Driver注册自己提供的回调函数,后者调用提供的回调函数来实现Filter-Hook Driver控制数据包过滤。该技术的优点是结构简单,易于实现,且能截获所有的IP数据包(包括ICMP包)。但无法获取当前应用程序进程信息,也无法取得数据包的以太帧,也不支持Windows 2000之前的系统。本文采用Filter-Hook Driver控制数据包过滤,故不支持Windows 2000以前的系统。该栎谖碼戆沖巋鳧薩锭。2.2 TCPIP网络通信协议TCPIP协议指因特网整个TCPIP协议族,而不是表面上的TCP和IP协议的合称。TCPIP协议族用于各平台下计算机之间的通信,是当今互联网通信的基础。与OSI七层参考模型不完全相同,TCPIP协议族通常被认为是一个四层协议系统。TCPIP协议族的四个层次与OSI七层参考模型间的对应关系如图2-1所示:劇妆诨貰攖苹埘呂仑庙。图 2-1 TCPIP协议族与OSI模型对应关系应用层表示层数据链路层网络层传输层会话层物理层应用层传输层网络层链路层臠龍讹驄桠业變墊罗蘄。如上图所示,人们通常(由于对于TCPIP协议族与OSI七层模型不能精确的匹配,故也没有一个完全正确的说法来说明他们之间的对应关系)认为OSI模型的应用层、表示层和会话层这上三层在TCPIP协议族中是应用层,而其最底两层在TCPIP协议族中是链路层。防火墙系统的过滤驱动模块工作在Windows TCPIP协议模型的传输层。下文将对本文用到的协议做简单介绍。鰻順褛悦漚縫冁屜鸭骞。2.2.1 IP网际协议IP是TCPIP协议族中最为核心的协议。所有的TCP、UDP和ICMP数据都以IP数据报格式传输。IP数据报由IP首部和数据组成。IP首部一般长度为20Byte,除非包含有选项字段 (美)W Richard Stevens. TCP/IP详解 卷1:协议M.【译者】范建华,张涛等.北京:机械工业出版社, 2000:24-36.。其首部的固定部分的字段为:版本(4bit)、首部长度(4bit)、服务类型(8bit)、总长度(16bit)、标识(16bit)、标志(3bit)、片偏移(13bit)、生存时间TTL(8bit)、协议(8bit)、首部检验和(16bit)、源地址(32bit)、目的地址(32bit)。本文中对数据报的处理时所需注意的主要为版本、服务类型、协议、源地址和目的地址字段。穑釓虚绺滟鳗絲懷紓泺。2.2.2 TCP传输控制协议TCP协议属于运输层,向应用层提供面向连接的,可靠的字节流服务。TCP数据被封装在IP数据报中,如图2-2所示:隶誆荧鉴獫纲鴣攣駘賽。IP首部TCP首部TCP数据图 2-2 TCP数据在IP数据报中的封装浹繢腻叢着駕骠構砀湊。TCP首部包含源端口和目的端口的端口号字段、序号字段、确认序号字段、首部长度字段、检验和字段等。源端口和目的端口号用于需找发送端和接收端的应用进程,这两个值加上IP首部中的源地址和目的地址可以唯一确定一个TCP链接。序号用来标识源目端之间的数据字节流。许多应用程序都使用TCP,如FTP、Telnet和SMTP。鈀燭罚櫝箋礱颼畢韫粝。2.2.3 UDP用户数据报协议UDP是一个简单的面向数据的运输层协议。与TCP协议同属运输层,但与TCP协议不同,它是一种非连接导向协议,不提供可靠性。UDP首部字段包含源端口号、目的端口号、UDP长度、UDP检验和以及数据(可无)几个字段。源、目端口号指明发送进程和接收进程;UDP长度表示UDP首部和UDP数据的字节长度,最小值为8byte。UDP的检验和可选,其覆盖UDP首部和UDP数据。惬執缉蘿绅颀阳灣熗鍵。2.3 内核模式驱动程序开发内核模式驱动是Windows系统中两种基本驱动程序之一。设备驱动程序的功能就是Windows操作系统给的一个扩展。内核模式驱动程序可执行某些受保护的操作,并可访问用户模式驱动程序无法访问的系统结构。但随着访问权的增加,调试难度和系统损害几率也随之增大。本个人防火墙的核心Filter-Hook驱动就是内核模式驱动程序,它利用Microsoft在Windows的网络协议层上提供的接口在系统中实现过滤驱动 Zwicky E. D, Cooper S, Chapman D. B. Building the Internet FirewallM. 2nd ed.S. 1: McGraw-Hill, 2003:90-95.。贞廈给鏌綞牵鎮獵鎦龐。驱动程序由一系列例程组成,加载驱动或处理IO请求时就会调用特定的例程。每个驱动程序都至少实现三个例程:入口例程(DriverEntry)、卸载例程和打开关闭例程。驱动编程属于内核编程的范畴,内核开发中会经常的创建、打开和操作内核对象,但内核对象不允许用户直接访问,它是系统提供的用户模式下代码与内核模式下代码进行交互的基本接口 王艳平, 张铮. Windows程序设计M. 北京:人民邮电出版社, 2008:9-12.。嚌鲭级厨胀鑲铟礦毁蕲。当驱动被加载到内存中时,DriverEntry例程将被调用。DriverEntry例程负责执行驱动程序初始化工作。I/O管理器为每个加载到内存的驱动程序创建一个驱动程序对象,并将这个对象指针传递给驱动程序,驱动程序就可以在需要的时候调用这个设备对象。薊镔竖牍熒浹醬籬铃騫。卸载例程负责做清理工作,IO管理器调用这个例程时,将清除当前驱动创建的设备对象和符号链接名称,以释放资源。齡践砚语蜗铸转絹攤濼。打开关闭例程,当应用程序需要打开或关闭到驱动的句柄时,IO管理器调用这个例程,以做出相应处理。一般接收到关闭请求表明设备对象的文件对象句柄已经被释放。绅薮疮颧訝标販繯轅赛。第三章 开发工具与环境简介本章主要介绍本课题的开发环境和所用到的开发工具,平台如题所述,是Windows平台,版本为Windows XP。开发工具用到Microsoft Visual Studio 2010,驱动开发工具WDK等,编程语言采用C语言,编程的系统环境为虚拟机下的Windows XP环境。另外,由于本文涉及驱动编程,为了避免调试过程中驱动程序错误引起的系统错误等不必要的麻烦,本文所述系统的开发将在VMware Workstation虚拟机内的操作系统上完成开发和测试。饪箩狞屬诺釙诬苧径凛。3.1 Microsoft Visual Studio 2010Microsoft Visual Studio 2010是微软公司于2010年推出的最新的Windows平台应用程序集成开发环境,是一款非常流行的IDE。Visual Studio功能强大,可以用以创建Windows应用程序、网络应用程序、网络服务、android应用程序等,里边包含了Visual Studio C+开发工具,可进行CC+相关程序开发,且引入了MFC库。该版本做了重大修改并引入了很多新的特性,如对最新的C+标准的支持等。能切实提高开发人员的开发效率。烴毙潜籬賢擔視蠶贲粵。3.2 C语言简介C程序设计语言是由Dennis Ritchie于1973年设计并实现的。经历标准制定和多次修订(现在最新标准为C99),发展至今,已成为全球使用者最多的程序设计语言之一。同样著名的C+和Java也由它衍生而来。鋝岂涛軌跃轮莳講嫗键。C语言是一种通用的程序设计语言,他不受限于操作系统或机器。C语言是一种低级语言,适合系统编程。此外,该语言还有高效性、可移植性、功能强大、灵活性、提供标准库等优点 (美)K. N. King. C语言程序设计:现代方法M. 【译者】吕秀锋. 北京:人民邮电出版社, 2007:2-4.,这也是本文所述系统采用C语言编写的主要原因。撷伪氢鱧轍幂聹諛詼庞。3.3 驱动开发工具本文所要编写的Filter-Hook Driver即为一个Windows内核模式驱动,故需要相应的内核开发工具WDK。接下来对驱动开发工具和驱动程序的编译执行做简单介绍。踪飯梦掺钓貞绫賁发蘄。3.3.1 WDK内核编程工具就像应用程序使用开发包SDK一样,内核编程使用“Windows Driver Kit”,简称WDK。WDK已经自带所有需要的头文件、库、C/C+语言及汇编语言的编译器与连接器,所以可以在不安装Visual Studio等SDK的环境下编程。WDK的获得可通过微软官方网站下载。婭鑠机职銦夾簣軒蚀骞。WDK是Windows内核开发工具,驱动程序属于内核编程而非应用程序编程,故用WDK编译的驱动程序源文件中不能调用Win32 API函数,另外,部分的C Runtime函数也不能使用,编写程序可以参考说明文档,文档中说明的函数都可使用。譽諶掺铒锭试监鄺儕泻。3.3.2 编译驱动程序源文件编译器在编译驱动内核驱动程序源文件时把中DriverEntry当做每个内核模块的入口点历程(就是一个函数,相当于普通C源文件中的main函数),在加载这个模块时被系统进程System调用一次。另外附加说明一点,为了方便驱动被加载后能够被卸载,我们需要在编写程序的时候设置DriverUnload函数指针 谭文, 杨潇等. 寒江独钓Windows内核安全编程M. 北京:电子工业出版社, 2009:2-14.。俦聹执償閏号燴鈿膽賾。WDK在编译工程的时候,必须在工程目录下增加两个文件,以便WDK可以成功的build。这两个文件分别是makefile和source,且文件名必须如此。makefile文件几乎都一样,不用更改,如本文所用的makefile文件内容如下:缜電怅淺靓蠐浅錒鵬凜。!INCLUDE $(NTMAKEENV)makefile.def另外一个source文件的内容则关系到这个驱动模块要编译的文件,以及编译出来的.sys文件的名字。如本文总所用source文件内容实例如下:骥擯帜褸饜兗椏長绛粤。TARGETNAME=DrvFltIpTARGETPATH=objTARGETTYPE=DRIVERSOURCES= DrvFltIp.c其中TARGETNAME表示编译后得到的文件的名字,如本实例编译后得到的为DrvFltIp.sys;TARGETPATH 表示文件所在路径;TARGETTYPE表示编译的目标类型;SOURCES则为所要编译的.c文件(多个文件间用空格分开)。癱噴导閽骋艳捣靨骢鍵。这样我们在选择相应的系统版本后打开WDK,进入控制台编译环境后就可以进入文件所在目录进行编译了,编译命令为build,编译后的.sys文件保存在文件所在目录下自动生成的文件夹内的子文件夹内。鑣鸽夺圆鯢齙慫餞離龐。3.3.3 安装运行驱动程序安装驱动程序的工具有很多,本文采用InstDrv.exe这个软件。使用方法简单,打开软件,找到.sys文件路径,然后点击所需操作即可完成驱动的安装、卸载、开启和停止。安装好驱动程序后,就可以通过我们的方式查看它的运行情况。榄阈团皱鹏緦寿驏頦蕴。3.4 MFC简介本文个人防火墙的用户界面采用MFC实现。微软提供的MFC是放置Windows API的面向对象的包装的C+类库。是应用程序编程的框架结构。MFC封装了许多类,其中一些可以直接使用,另一些则主要作为自己的类的基础。在MFC程序中,并不经常直接调用Windows API;而是从MFC类创建对象并调用属于这些对象的成员函数 (美)Jeff Prosise. MFC Windows程序设计M. 【译者】北京博彦科技发张有限责任公司. 北京:清华大学出版社, 2007:6-30.。在类库中定义的成员函数有几百个,其中许多事Windows API的简单封装,有的甚至与相应API同名,这使得MFC程序更加简单易懂。逊输吴贝义鲽國鳩犹騸。MFC也是一个应用程序的框架结构,其目的是可以让程序员直接在此基础上来建立Windows下的应用程序,使得实现方式相对SDK来实现更加简单。MFC框架定义了程序的轮廓,提供了一套用户接口的标准实现方法,程序员用MFC编写Windows应用程序所需要做的就是通过这些接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C+中提供了相应的MFC工具来帮助程序员完成应用程序的编写:AppWizard可用来生成初步的框架文件,如代码和资源;资源编辑器用于直观的设计用户接口;ClassWizard用于协助添加代码到框架文件;然后经过编译就可以通过类库来实现应用程序特定的逻辑。幘觇匮骇儺红卤齡镰瀉。第四章 个人防火墙的总体设计本章主要介绍本文windows平台下个人防火墙系统的总体设计、工作流程和功能模块。Filter-Hook Driver与IP Filter Driver配合实现的数据包过滤的个人防火墙实际上就是利用自己写的Hook来修改底层函数的入口地址,以达到截取需要过滤的特定数据包并按编写的函数进行过滤来实现个人防火墙的数据包过滤功能 谭丹, 鲜继清. 基于hook的Windows防火墙驱动程序研究与设计J. 计算机应用, 2005, 25(7):1530.。本个人防火墙系统采用结构化设计的方法来实现系统的总体功能,实现的防火墙界面直观,操作简单。能起到对管控规则内的网络数据访问进行放行,管控规则之外的则进行拦截,并能够修改过滤规则以及查看日志,适合个人用户使用。誦终决懷区馱倆侧澩赜。4.1 防火墙整体结构本文个人防火墙主要分为用户层和驱动层两个模块,其整体结果如图4-1所示:图 4-1 防火墙整体结构用户层界面驱动控制驱动层Filter-Hook Driver接口IP Filter Driver (ipfltdrv.sys)网络数据包医涤侣綃噲睞齒办銩凛。4.1.1 用户层用户层里又包含界面模块和驱动控制模块两个模块:1. 驱动控制模块驱动控制模块主要通过自己编写的控制函数来实现用户层与驱动层之间的数据交流,通过这个模块,实现用户层与底层驱动之间的交互,包括安装服务,打开设备和设备控制。舻当为遙头韪鳍哕晕糞。2. 界面模块该模块负责与用户交互。用户通过界面模块可以实现对个人防火墙的各项操作,如启动、停止、添加移除过滤规则等。鸪凑鸛齏嶇烛罵奖选锯。4.1.2 驱动层如上图4-1所示,驱动层内也分为Filter-Hook Driver和IP Filter Driver两块。驱动层模块是整个防火墙的核心模块。筧驪鴨栌怀鏇颐嵘悅废。1. IP Filter DriverIP Filter Driver是Windows2000,Windows XP系统自带的一个驱动,系统默认情况下并不加载,这个驱动可以实现对数据包的过滤。这个驱动本身提供一个接口,接口是通过回调函数来实现的,接口负责对驱动进行操控。韋鋯鯖荣擬滄閡悬贖蘊。2. Filter-Hook DriverFilter-Hook Driver就是本文防火墙中自己所写的驱动程序,这就是用来过滤网络封包的内核模式驱动,该驱动程序实现了IP Filter Driver(对应系统中ipfltdrv.sys,上文已述)提供的接口,通过向IP Filter Driver注册回调函数,并实现这个回调函数,在这个回调函数中我们可以根据需要定义自己的规则。当IP Filter Driver接受到数据包后,就会调用这个回调函数,然后根据函数中已定义的规则就可以实现对数据包的处理。涛貶騸锬晋铩锩揿宪骟。4.2 防火墙系统流程图本文个人防火墙流程图如图4-2所示:图 4-2 防火墙工作流程图开始载入Filter-Hook Driver显示过滤结果开始过滤启动防火墙启动驱动服务添加过滤规则是否已载入驱动是否已载入结束NNYY钿蘇饌華檻杩鐵样说泻。4.3 防火墙实现的功能本文所诉个人防火墙实现了如下功能:1. 网络数据过滤:这也是防火墙应该实现的主要功能,该功能由本防火墙的过滤钩子驱动(Filter-Hook Driver)和IP过滤驱动来实现,过滤钩子驱动通过向Windows XP系统自带的IP过滤驱动注册它,然后IP过滤驱动使用这个过滤钩子根据过滤钩子驱动的过滤规则对可以对流经计算机的IP数据包、TCP数据包、UDP数据包进行相应处理,以实现对网络数据包的拦截过滤。戧礱風熗浇鄖适泞嚀贗。2. 自定义过滤规则:添加过滤规则时,可以输入协议类型,源、目端口号,源IP地址、目的IP地址、源、目掩码。根据这些用户手动输入的一组信息产生一条规则,启动防火墙后规则生效。購櫛頁詩燦戶踐澜襯鳳。3. 提供界面显示用户已经设置的所有规则,以方便用户查看和修改。4. 日志:防火墙可根据过滤日志生成日志文件一共用户查看。5. 提供用户接口实现防火墙的启动、关闭等相关功能。当启动防火墙后,防火墙就开始根据用户定义的规则进行数据过滤,用户也可以根据需要进行添加或修改过滤规则。嗫奐闃頜瑷踯谫瓒兽粪。第五章 个人防火墙的详细设计与实现实现本个人防火墙的关键首先就是实现驱动层的Filter-Hook Driver,其次是驱动控制的实现。本章将对个人防火墙的详细实现进行阐述。虚龉鐮宠確嵝誄祷舻鋸。5.1 驱动层Filter-Hook Driver本防火墙驱动层Filter-Hook Driver属于内核模块,实现后整体结构如下图5-1所示:图 5-1 Filter-Hook Driver整体结构初始化工作请求分发卸载驱动與顶鍔笋类謾蝾纪黾廢。5.1.1 初始化Filter-Hook驱动通过入口函数DriverEntry开始运行,DriverEntry也是所有内核模块的入口函数名。进入入口函数后的时候需要进行初始化工作,包括创建、初始化设备对象。結释鏈跄絞塒繭绽綹蕴。创建对象时调用了内核API:IoCreateDevice,其函数原型如下:NTSTATUS IoCreate

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论