ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:1.22MB ,
资源ID:20072762      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20072762.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简易防火墙的设计学士学位论文Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

简易防火墙的设计学士学位论文Word格式.docx

1、本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果

2、由本人承担。 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。 日期:导师签名: 日期:摘 要在Internet应用日益广泛的今天,网络安全问题显得越来越突出。作为网络通信程序的开发人员,需要了解防火墙开发的基本过程。即使不进行专业的防火墙开发,了解防火墙开发的基本流程对于提高其它网络应用程序的安全性也是大有裨益的。此

3、次的防火墙设计是一个基于FilterHook Driver的个人防火墙,它可以自选设定过滤规则,阻止特定的IP地址和端口,并且可以选择需要阻止的协议,从而达到保护系统安全的功能。防火墙的原理是在FilterHook Driver中执行一个回调函数,然后用IP Filter Driver记录回调信息。当一个数据包被发送或接收的时候,IP Filter Driver会再调用回调函数。另外根据用户的需求防火墙添加了端口扫描功能和一些快速设定规则的快捷方式。关键词:防火墙;DDK;挂钩驱动;Quick Sys;端口扫描The Design of the Simple Fire Wall Abstrac

4、tIn the increasingly widespread application of the Internet today, network security issues become increasingly prominent .As the development of network communication programmer , need to understand the basic firewall development process .Even if the firewall is not a professional development, unders

5、tanding the basic firewall development processes for improving the application of other network security is also of great benefit.The firewall is a design based on Filter-Hook Driver of the personal firewall ,It can set filter-rules on demand to prevent a specific IP address and port, and can choose

6、 the protocol needed to stop ,to achieve the functions of security protection system. it is the principle that the firewall in Filter-Hook Driver implementing a callback function .IP Filter Driver and then use the information recorded callback .When a packet is sent or received, the time, IP Filter

7、Driver will call the callback function .Also according to the needs of users add a firewall port scanning and quickly set up some rules of the shortcut.Key words: Fire Wall; DDK; Hook Driver; Quick Sys; Port Scan论文总页数: 36页1 引言1.1 课题背景随着Internet的迅速崛起,网络信息化的发展,防火墙作为一种典型的技术也迅速的发展。后来随着信息技术的飞速发展,用户个人信息的安

8、全问题已经成为迫在眉睫的重要问题, 防火墙作为一种保护软件就这样诞生了。其中的软件防火墙更是成为了个人用户所不可缺少的信息安全软件。个人防火墙的核心是一种按照用户规定的访问规则来实现对用户的个人电脑的保护。要想成为一名专业的信息安全工程师,其最基础的就是要能掌握防火墙的使用原理,而防火墙中最简单的个人防火墙设计即是一个重要的起点。所设计的防火墙即是一种能添加访问规则功能并能进行端口扫描的防火墙软件。1.2 本课题研究内容此防火墙是一款以包过滤技术为基础的个人防火墙,其核心的研究内容为端口扫描编程和驱动编程,其中驱动编程涉及到使用DDK进行编译以及使用Quick Sys生成驱动程序框架。还有使用

9、驱动的方法,包括加载驱动,卸载驱动,添加规则这些最必要的操作。端口扫描编程涉及到WinSocket编程。1.3 本课题研究的意义经过这次的课题研究可以熟练掌握VC界面编程知识,掌握部分WinSocket编程技巧,和驱动编程的基础知识,以及如何使用DDK的编译驱动程序,还有QuickSys的使用方法。最为重要的是可以学习如何使用驱动和防火墙制作原理,即如何进行拆包分析,如何进行规则匹配。这些都是今后开发一款强大防火墙所必不可少的知识。2 简易防火墙开发的相关技术2.1 DDKDDK是Device Development KitWindows(设备驱动程序开发工具),设备开发包的意思。DDK是wi

10、ndows驱动程序开发工具包, 这个微软的窗口驱动程序开发工具包是一个整理以后的驱动程序开发包,为windows家族的操作系统提供环境的创建,工具, 驱动程序样本和文件来支持驱动程序的开发。如果想开发一个设备驱动程序,如显卡驱动程序,就必须使用DDK。本次的防火墙设计涉及到Driver-Hook的学习,Driver-Hook.sys的制作涉及到DDK开发, DDK有许多版本如windows200DDK,windows98DDK,windows xpDDK。一定要在相应的DDK版本否则会出现许多不可预料的错误。DDK没有包括在VC+中,如果想要在VC+平台进行编程一定要先安装DDK再装VC,在这

11、样的顺序下关联DDK才能正常运行。另外还有许多著名的驱动开发工具如:DriverStudio、SDKs等。2.2 内核模式驱动在Windows 2000操作系统中,有两个基本的驱动程序种类:1. 用户模式驱动程序(例如Win32 VDD,它是为MS-DOS应用程序开发的专用设备)或另一个被保护的子系统的驱动程序2. 针对逻辑、虚拟或物理设备的内核模式驱动程序有三种基本类型的内核模式驱动程序。每一种都有稍微不同的结构和完全不同的功能:1. 最高层驱动程序,例如系统支持的FAT、NTFS和CDFS文件系统驱动程序(FSD)。最高层驱动程序通常依赖于较低层的驱动程序支持。虽然特定的文件系统驱动程序可

12、能、或不可能从一个或多个中间层驱动程序获得支持,但是每个文件系统驱动程序最终依赖一个或多个下层外围设备(可能是PnP硬件总线)驱动程序的支持。2. 中间层驱动程序,例如虚拟磁盘、镜像、或指定设备类型的类驱动程序。中间层驱动程序也需要较低层驱动程序的支持。PnP功能驱动程序是中间层驱动程序,它们在一个I/O总线上控制特定的外围设备,这个I/O总线是由PnP硬件总线驱动程序来控制的。同样还有PnP过滤器驱动程序(PnP filter driver),它们在驱动程序栈(driver stack)内将它们自己插入到PnP功能驱动程序中去,以支持任何特定的外围设备。PnP功能和过滤器驱动程序的子集也是W

13、DM功能和过滤器驱动程序。任何系统支持的向外输出一个系统定义的WDM类/微类接口的类驱动程序,实际上是一个带有一个或多个链接的WDM微类驱动程序(有时称为WDM微驱动程序)的中间层驱动程序。每一对相互链接的WDM类/微类,提供与WDM功能驱动程序或WDM“软件”总线驱动程序相同的功能。PnP软件总线驱动程序表示一组子设备,较高层的类、功能和/或过滤器驱动程序能连接它们自己到这些子设备上,PnP软件总线驱动程序也是中间层驱动程序。例如,控制多功能适配器的驱动程序是一个PnP软件总线驱动程序,这样的多功能适配器是用于不同的设备的一个便携集合。根据便携设备的特性和它的驱动程序使用的接口,这样的驱动程

14、序也可能是WDM软件总线驱动程序。它似乎使得较高层驱动程序成为一个PnP/WDM总线驱动程序。对于操作系统来说,驱动程序是以PnP/WDM驱动程序的面目出现的,它服务于它自己的适配器,将它自己插入底层PnP硬件总线驱动程序之上的驱动程序堆栈中。3. 最低层驱动程序,例如PnP硬件总线驱动程序,它控制一个I/O总线,这个总线连了一些外围设备在上面。最低层驱动程序不依赖于较低层驱动程序,而是控制物理外围设备,例如总线。2.3 Filter -Hook DriverFilter-Hook Driver 是这款软件的重要组成部分,下面对Filter-Hook Driver进行介绍。在Microsoft

15、 Windows 2000 DDK中介绍了Filter-Hook Driver, 但它不是一种新的网络驱动,它只是扩展了IP过滤驱动(IP Filter Driver)的功能。 实际上,Filter-Hook Driver并不是网络驱动,它是一种内核模式驱动(Kernel Mode Driver). 大致上是这样的:在Filter-Hook Driver中提供回调函数(callback),然后使用IP Filter Driver注册回调函数。这样当数据包发送和接收时,IP Filter Driver会调用回调函数。另外对IP Filter Driver进行介绍。在Windows 2000和Wi

16、ndows XP中,System32drivers目录下的ipfltdrv.sys是Microsoft提供的ip协议过滤驱动程序。它允许用户注册自己的ip数据报处理函数。在MSDN中有关于这方面内容的简短说明,位于Filter-Hook Driver Reference章节中。这一部分说明文档论述了filter-hook驱程实现的回调函数和该驱程用以注册回调函数的I/O控制码。回调函数是这类驱程的主体部分。操作系统提供的ip过滤驱动程序使用这个过滤钩子来判断ip数据包的处理方式。所注册的过滤钩子是用PacketFilterExtensionPtr数据类型定义的。由于是使用函数的地址而不是函数的

17、名字注册过滤钩子的入口点,所以可以自由的为过滤钩子函数命名。2.4 Quick SYS这是一个像Numega QuickVXD一样可以快速创建驱动程序框架的工具,工作在Windows NT/2K/XP中。可以生成内核模式驱动的框架代码。压缩包里包含该工具的全部源代码。可以使用它进行对Filter-hook driver的制作。3 简易防火墙的规划设计3.1 需求分析简易防火墙首先应该方便用户使用、方便设定参数,同时需要该软件便于维护和添加模块。当然能一定要能够起到防火墙的基本作用。用户功能:为了方便用户使用防火墙,该防火墙应该提供以下几种用户功能。 用户能够检测到哪些IP地址、端口地址被允许还

18、是拒绝。 用户能够对访问规则进行修改。 用户能禁止ping入。 用户可以设定禁止所有访问。 用户能查看对方端口情况和自己的端口情况。 添加的规则能够保存下来以便下次使用。 能够有进度条、以及防假死响应。方便维护功能: 注释以便用户读写代码。 各个功能模块分开,结构清晰。3.2 系统设计3.3.1 系统基本结构首先通过软件界面与用户进行交流,当用户设定好所需的一切参数后,软件开启Filter Hook Driver驱动的WriteIO函数,并通过FilterHook Driver挂钩函数运行windows 自带的Ipfildrv.sys IP过滤驱动函数基本结构如图3-1,3-2所示。 图3-1

19、 系统流程图图3-2 驱动安装过滤函数在系统界面加载时进行驱动程序加载,并在之后用filterhook driver进行对windows驱动程序的操作。3.3.2 系统总体设计防火墙的操作流程如图3-3所示,防火墙加载成功后,可以进行添加规则、管理规则等操作。图3-3 系统总体流程用户功能模块设计: 添加规则:用户登陆后可以进行添加规则,其内容如下:可以添加IP地址端、端口地址端的允许或禁止操作,并且可以指定相应的协议的允许与禁止。并且可以保存规则。 禁止ping入:用户可以在界面选择禁止ping入,这样软件会自动写入相应的规则来禁止相应的数据包,但并不保存。 禁止所有访问:用户可以在界面选择

20、禁止所有访问,这样软件会自动写入相应的规则来禁止相应的数据包,但并不保存。 允许所有访问:用户可以在界面选择允许所有访问,这样软件会自动写入相应的规则来允许所有的数据包,但并不保存。 端口扫描:用户可以通过端口扫描程序来扫描自己和别人的端口。3.3.3 挂钩驱动总体设计首先介绍挂钩程序总体流程图,如下图3-4所示: 图3-4 挂钩程序总体流程FilterHook Driver是IP过滤驱动的挂钩程序,主要有以下几个制作步骤:1) 建立Filter-Hook Driver.必须建立内核模式驱动,可以选择名称,DOS名称和其它驱动特性,这些不是必须的,但建议使用描述名称。2) 如果要安装过滤函数,

21、首先必须得到指向IP Filter Driver的指针,这是第二步。3)已经取得了指针,现在可以通过发送特殊的IRP来安装过滤函数,该“消息”传递的数据包含了过滤函数的指针。4) 过滤数据包。5) 当要结束过滤,必须撤销过滤函数。这通过传递null指针作为过滤函数指针来实现。挂钩程序详细流程图如下图所示: 图3-5挂钩程序详细流程图4 防火墙开发实现4.1 用户功能模块实现用户功能模块主要包括添加规则、禁止所有访问、禁止ping入、允许所有访问、端口扫描、启动防火墙、停止防火墙这几个部分。在程序设计中,各模块部分的设计实现是重点和难点,因此论文将着重说明这些模块的编码部分,对于界面设计部分只作

22、了简单说明。但是在这之前先介绍另一个重要的环节。程序员初始化时进行的驱动加载环节。在程序初始化的时候,在PreView函数中进行了驱动的加载主要函数有如下两句:m_filterDriver.LoadDriver(IpFilterDriver,System32DriversIpFltDrv.sys, NULL, TRUE);m_ipFltDrv.LoadDriver(DrvFltIp, NULL, NULL, TRUE); 第一个函数的功能是加载系统自带的IP包过滤驱动IpFilterDriver为驱动名,这个变量的作用在后面的获取驱动文件的指针时会用到,同理DrvFltIp也是这个用处。驱动名

23、的详细介绍将在后面阐述。 运行类的LoadDriver()该函数是用于统领驱动加载的函数,在该函数中首先运行InitDriver();这个函数的作用是得到驱动的物理路径,以及驱动名称,驱动的DOS名。所谓的dosname的意思是说,当要获得驱动文件的指针的时候要使用CreateFile()函数,都知道通过CreateFile()函数获得文件指针时需要文件的物理路径,但当所需获得指针的文件是驱动文件的时候千万不能用驱动文件的物理路径,因为CreateFile()函数专门为驱动文件预留了dosname,这个dosname的值应该是.+驱动名,细心的人就会问那么这个函数怎么知道驱动文件是在哪里呢?答

24、案是这样的,在使用Createfile()前还有一些步骤。首先调用OpenSCManager()函数获得系统服务管理器的指针,再通过获得的服务管理器指针和驱动名来创建驱动服务,调用CreateService()函数。注意,驱动名不是用户可以自己随便定义的,因为在编写驱动程序的时候开发平台已经指定了相应的驱动名。例如通过quick sys编写驱动时,用户指定工程名为IpDrv,那么在工程中会自动出现这样的定义:#define NT_DEVICE_NAME LDeviceIpDrv#define DOS_DEVICE_NAME LDosDevicesIpDrv 在创建服务后使用OpenDevice

25、()打开服务,最后使用CreateFile()即可得到驱动文件指针,再通过该指针进行添加规则的操作。通过这样的过程终于实现了驱动的加载功能。 整个过程的函数调用,如图4-1所示:图4-1加载驱动模块流程图图4-2InitDriver获取DriverPath,DriverName,DriverDosName4.1.1 用户添加规则模块添加规则模块是防火墙的重要组成部分。注册模块的主要功能是把用户的注册的规则写入filter-hook driver中。同时,为了减少用户输入错误,添加规则模块需要对输入的规则是否成功添加作必要的验证。在添加规则模块中,使用 Check()函数对用户输入的IP地址格式

26、进行检测,判断IP是否合法。以及使用UpdateData()获取其它控件的值后判断控件是否进行了输入。这样检查了用户是否在输入框中填写了必要的文字,确保用户不跳过输入。部分代码如下:UpdateData(); BOOL bresult1 = Verify(m_sip); BOOL bresult2 = Verify(m_dip); if(bresult1=FALSE|bresult2=FALSE|m_deal.GetCurSel()!=0|m_deal.GetCurSel()!=1|m_protocol.GetCurSel()!=0|m_protocol.GetCurSel()!=2) Afx

27、MessageBox(请完整输入); 该模块的流程图如下所示: 图 4-3 添加规则模块流程图图 4-4 调用WriteIO函数示意图用户添加规则的界面如图4-5所示。图4-5 添加规则界面用户输入相应信息后,单击“添加”按钮,可将用户信息插入Drvfltip.sys中。该功能由单击事件处理函数OnAdd( )来实现,部分程序代码如下: int action = m_action.GetCurSel(); if(action = 0 ) setact = FALSE; else setact = TRUE; int proto = m_protocol.GetCurSel(); if(prot

28、o = 0) setproto = 1;/TCP协议 if(proto = 1) setproto = 17;/IP协议 if(proto = 2) setproto = 6;/ICMP协议 ip.destinationIp = inet_addr(LPCTSTR)m_sdadd);/inet_add把字符型转化成数字型 ip.destinationMask = inet_addr(255.255.255.255 ip.destinationPort = htons(atoi(LPCTSTR)m_sdport);/htons从主机字节顺序变成网络字节顺序;atoi字符串转换成整型数 ip.so

29、urceIp = inet_addr(LPCTSTR)m_ssadd); ip.sourceMask = inet_addr( ip.sourcePort = htons(atoi(LPCTSTR)m_ssport); ip.protocol = setproto; ip.drop = setact; DWORD result = AddFilter(ip);程序中还调用了使用驱动的AddFilter( )方法,并在其中通过writeIO()函数对hook驱动进行读写。AddFilter( )的部分代码如下: AddFilter(IPFilter pf) /发送添加过滤规则到驱动程序 DWORD result = ipFltDrv.WriteIo(ADD_FILTER, &pf, sizeof(pf);writeIO()的部分代码如下:BOOL returnCode = DeviceIoControl(driverHandle,/添加规则 code, buffer, count, NULL, 0, &bytesReturned, NULL);4.1.2 禁止所有访问模块在主界面中可以直接设定禁止所有访问的功能。主界面如图4-6所示。图4-6 主

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1