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

上传人:b****6 文档编号:7047386 上传时间:2023-01-16 格式:DOCX 页数:40 大小:1.22MB
下载 相关 举报
简易防火墙的设计学士学位论文.docx_第1页
第1页 / 共40页
简易防火墙的设计学士学位论文.docx_第2页
第2页 / 共40页
简易防火墙的设计学士学位论文.docx_第3页
第3页 / 共40页
简易防火墙的设计学士学位论文.docx_第4页
第4页 / 共40页
简易防火墙的设计学士学位论文.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

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

《简易防火墙的设计学士学位论文.docx》由会员分享,可在线阅读,更多相关《简易防火墙的设计学士学位论文.docx(40页珍藏版)》请在冰豆网上搜索。

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

简易防火墙的设计学士学位论文

分类号:

TP309.5UDC:

D10621-408-(2008)2668-0

密级:

公开编号:

2004033073

 

成都信息工程学院

学位论文

 

简易防火墙的设计

 

论文作者姓名:

申请学位专业:

信息安全

申请学位类别:

工学学士

指导教师姓名(职称):

论文提交日期:

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:

所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:

     日 期:

     

指导教师签名:

     日  期:

     

使用授权说明

本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:

按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:

     日 期:

     

学位论文原创性声明

本人郑重声明:

所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:

日期:

年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:

日期:

年月日

导师签名:

日期:

年月日

简易防火墙的设计

摘要

在Internet应用日益广泛的今天,网络安全问题显得越来越突出。

作为网络通信程序的开发人员,需要了解防火墙开发的基本过程。

即使不进行专业的防火墙开发,了解防火墙开发的基本流程对于提高其它网络应用程序的安全性也是大有裨益的。

此次的防火墙设计是一个基于Filter—HookDriver的个人防火墙,它可以自选设定过滤规则,阻止特定的IP地址和端口,并且可以选择需要阻止的协议,从而达到保护系统安全的功能。

防火墙的原理是在Filter—HookDriver中执行一个回调函数,然后用IPFilterDriver记录回调信息。

当一个数据包被发送或接收的时候,IPFilterDriver会再调用回调函数。

另外根据用户的需求防火墙添加了端口扫描功能和一些快速设定规则的快捷方式。

关键词:

防火墙;DDK;挂钩驱动;QuickSys;端口扫描

TheDesignoftheSimpleFireWall

Abstract

IntheincreasinglywidespreadapplicationoftheInternettoday,networksecurityissuesbecomeincreasinglyprominent.Asthedevelopmentofnetworkcommunicationprogrammer,needtounderstandthebasicfirewalldevelopmentprocess.Evenifthefirewallisnotaprofessionaldevelopment,understandingthebasicfirewalldevelopmentprocessesforimprovingtheapplicationofothernetworksecurityisalsoofgreatbenefit.

ThefirewallisadesignbasedonFilter-HookDriverofthepersonalfirewall,Itcansetfilter-rulesondemandtopreventaspecificIPaddressandport,andcanchoosetheprotocolneededtostop,toachievethefunctionsofsecurityprotectionsystem.itistheprinciplethatthefirewallinFilter-HookDriverimplementingacallbackfunction.IPFilterDriverandthenusetheinformationrecordedcallback.Whenapacketissentorreceived,thetime,IPFilterDriverwillcallthecallbackfunction.Alsoaccordingtotheneedsofusersaddafirewallportscanningandquicklysetupsomerulesoftheshortcut.

Keywords:

FireWall;DDK;HookDriver;QuickSys;PortScan

论文总页数:

36页

1引言

1.1课题背景

随着Internet的迅速崛起,网络信息化的发展,防火墙作为一种典型的技术也迅速的发展。

后来随着信息技术的飞速发展,用户个人信息的安全问题已经成为迫在眉睫的重要问题,防火墙作为一种保护软件就这样诞生了。

其中的软件防火墙更是成为了个人用户所不可缺少的信息安全软件。

个人防火墙的核心是一种按照用户规定的访问规则来实现对用户的个人电脑的保护。

要想成为一名专业的信息安全工程师,其最基础的就是要能掌握防火墙的使用原理,而防火墙中最简单的个人防火墙设计即是一个重要的起点。

所设计的防火墙即是一种能添加访问规则功能并能进行端口扫描的防火墙软件。

1.2本课题研究内容

此防火墙是一款以包过滤技术为基础的个人防火墙,其核心的研究内容为端口扫描编程和驱动编程,其中驱动编程涉及到使用DDK进行编译以及使用QuickSys生成驱动程序框架。

还有使用驱动的方法,包括加载驱动,卸载驱动,添加规则这些最必要的操作。

端口扫描编程涉及到WinSocket编程。

1.3本课题研究的意义

经过这次的课题研究可以熟练掌握VC界面编程知识,掌握部分WinSocket编程技巧,和驱动编程的基础知识,以及如何使用DDK的编译驱动程序,还有QuickSys的使用方法。

最为重要的是可以学习如何使用驱动和防火墙制作原理,即如何进行拆包分析,如何进行规则匹配。

这些都是今后开发一款强大防火墙所必不可少的知识。

2简易防火墙开发的相关技术

2.1DDK

DDK是DeviceDevelopmentKitWindows(设备驱动程序开发工具),设备开发包的意思。

DDK是windows驱动程序开发工具包,这个微软的窗口驱动程序开发工具包是一个整理以后的驱动程序开发包,为windows家族的操作系统提供环境的创建,工具,驱动程序样本和文件来支持驱动程序的开发。

如果想开发一个设备驱动程序,如显卡驱动程序,就必须使用DDK。

本次的防火墙设计涉及到Driver-Hook的学习,Driver-Hook.sys的制作涉及到DDK开发,DDK有许多版本如windows200DDK,windows98DDK,windowsxpDDK。

一定要在相应的DDK版本否则会出现许多不可预料的错误。

DDK没有包括在VC++中,如果想要在VC++平台进行编程一定要先安装DDK再装VC,在这样的顺序下关联DDK才能正常运行。

另外还有许多著名的驱动开发工具如:

DriverStudio、SDKs等。

2.2内核模式驱动

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

1.用户模式驱动程序(例如Win32VDD,它是为MS-DOS应用程序开发的专用设备)或另一个被保护的子系统的驱动程序

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

有三种基本类型的内核模式驱动程序。

每一种都有稍微不同的结构和完全不同的功能:

1.最高层驱动程序,例如系统支持的FAT、NTFS和CDFS文件系统驱动程序(FSD)。

最高层驱动程序通常依赖于较低层的驱动程序支持。

虽然特定的文件系统驱动程序可能、或不可能从一个或多个中间层驱动程序获得支持,但是每个文件系统驱动程序最终依赖一个或多个下层外围设备(可能是PnP硬件总线)驱动程序的支持。

2.中间层驱动程序,例如虚拟磁盘、镜像、或指定设备类型的类驱动程序。

中间层驱动程序也需要较低层驱动程序的支持。

PnP功能驱动程序是中间层驱动程序,它们在一个I/O总线上控制特定的外围设备,这个I/O总线是由PnP硬件总线驱动程序来控制的。

同样还有PnP过滤器驱动程序(PnPfilterdriver),它们在驱动程序栈(driverstack)内将它们自己插入到PnP功能驱动程序中去,以支持任何特定的外围设备。

PnP功能和过滤器驱动程序的子集也是WDM功能和过滤器驱动程序。

任何系统支持的向外输出一个系统定义的WDM类/微类接口的类驱动程序,实际上是一个带有一个或多个链接的WDM微类驱动程序(有时称为WDM微驱动程序)的中间层驱动程序。

每一对相互链接的WDM类/微类,提供与WDM功能驱动程序或WDM“软件”总线驱动程序相同的功能。

PnP软件总线驱动程序表示一组子设备,较高层的类、功能和/或过滤器驱动程序能连接它们自己到这些子设备上,PnP软件总线驱动程序也是中间层驱动程序。

例如,控制多功能适配器的驱动程序是一个PnP软件总线驱动程序,这样的多功能适配器是用于不同的设备的一个便携集合。

根据便携设备的特性和它的驱动程序使用的接口,这样的驱动程序也可能是WDM软件总线驱动程序。

它似乎使得较高层驱动程序成为一个PnP/WDM总线驱动程序。

对于操作系统来说,驱动程序是以PnP/WDM驱动程序的面目出现的,它服务于它自己的适配器,将它自己插入底层PnP硬件总线驱动程序之上的驱动程序堆栈中。

3.最低层驱动程序,例如PnP硬件总线驱动程序,它控制一个I/O总线,这个总线连了一些外围设备在上面。

最低层驱动程序不依赖于较低层驱动程序,而是控制物理外围设备,例如总线。

2.3Filter-HookDriver

Filter-HookDriver是这款软件的重要组成部分,下面对Filter-HookDriver进行介绍。

在MicrosoftWindows2000DDK中介绍了Filter-HookDriver,但它不是一种新的网络驱动,它只是扩展了IP过滤驱动(IPFilterDriver)的功能。

实际上,Filter-HookDriver并不是网络驱动,它是一种内核模式驱动(KernelModeDriver).大致上是这样的:

在Filter-HookDriver中提供回调函数(callback),然后使用IPFilterDriver注册回调函数。

这样当数据包发送和接收时,IPFilterDriver会调用回调函数。

另外对IPFilterDriver进行介绍。

在Windows2000和WindowsXP中,System32\drivers目录下的ipfltdrv.sys是Microsoft提供的ip协议过滤驱动程序。

它允许用户注册自己的ip数据报处理函数。

在MSDN中有关于这方面内容的简短说明,位于Filter-HookDriverReference章节中。

这一部分说明文档论述了filter-hook驱程实现的回调函数和该驱程用以注册回调函数的I/O控制码。

回调函数是这类驱程的主体部分。

操作系统提供的ip过滤驱动程序使用这个过滤钩子来判断ip数据包的处理方式。

所注册的过滤钩子是用PacketFilterExtensionPtr数据类型定义的。

由于是使用函数的地址而不是函数的名字注册过滤钩子的入口点,所以可以自由的为过滤钩子函数命名。

2.4QuickSYS

这是一个像NumegaQuickVXD一样可以快速创建驱动程序框架的工具,工作在WindowsNT/2K/XP中。

可以生成内核模式驱动的框架代码。

压缩包里包含该工具的全部源代码。

可以使用它进行对Filter-hookdriver的制作。

3简易防火墙的规划设计

3.1需求分析

简易防火墙首先应该方便用户使用、方便设定参数,同时需要该软件便于维护和添加模块。

当然能一定要能够起到防火墙的基本作用。

用户功能:

为了方便用户使用防火墙,该防火墙应该提供以下几种用户功能。

●用户能够检测到哪些IP地址、端口地址被允许还是拒绝。

●用户能够对访问规则进行修改。

●用户能禁止ping入。

●用户可以设定禁止所有访问。

●用户能查看对方端口情况和自己的端口情况。

●添加的规则能够保存下来以便下次使用。

●能够有进度条、以及防假死响应。

方便维护功能:

●注释以便用户读写代码。

●各个功能模块分开,结构清晰。

3.2系统设计

3.3.1系统基本结构

首先通过软件界面与用户进行交流,当用户设定好所需的一切参数后,软件开启FilterHookDriver驱动的WriteIO函数,并通过FilterHookDriver挂钩函数运行windows自带的Ipfildrv.sysIP过滤驱动函数基本结构如图3-1,3-2所示。

图3-1系统流程图

图3-2驱动安装过滤函数

在系统界面加载时进行驱动程序加载,并在之后用filter—hookdriver进行对windows驱动程序的操作。

3.3.2系统总体设计

防火墙的操作流程如图3-3所示,防火墙加载成功后,可以进行添加规则、管理规则等操作。

图3-3系统总体流程

用户功能模块设计:

●添加规则:

用户登陆后可以进行添加规则,其内容如下:

可以添加IP地址端、端口地址端的允许或禁止操作,并且可以指定相应的协议的允许与禁止。

并且可以保存规则。

●禁止ping入:

用户可以在界面选择禁止ping入,这样软件会自动写入相应的规则来禁止相应的数据包,但并不保存。

●禁止所有访问:

用户可以在界面选择禁止所有访问,这样软件会自动写入相应的规则来禁止相应的数据包,但并不保存。

●允许所有访问:

用户可以在界面选择允许所有访问,这样软件会自动写入相应的规则来允许所有的数据包,但并不保存。

●端口扫描:

用户可以通过端口扫描程序来扫描自己和别人的端口。

3.3.3挂钩驱动总体设计

首先介绍挂钩程序总体流程图,如下图3-4所示:

图3-4挂钩程序总体流程

Filter—HookDriver是IP过滤驱动的挂钩程序,主要有以下几个制作步骤:

1)建立Filter-HookDriver.必须建立内核模式驱动,可以选择名称,DOS名称和其它驱动特性,这些不是必须的,但建议使用描述名称。

2)如果要安装过滤函数,首先必须得到指向IPFilterDriver的指针,这是第二步。

3)已经取得了指针,现在可以通过发送特殊的IRP来安装过滤函数,该“消息”传递的数据包含了过滤函数的指针。

4)过滤数据包。

5)当要结束过滤,必须撤销过滤函数。

这通过传递null指针作为过滤函数指针来实现。

挂钩程序详细流程图如下图所示:

图3-5挂钩程序详细流程图

4防火墙开发实现

4.1用户功能模块实现

用户功能模块主要包括添加规则、禁止所有访问、禁止ping入、允许所有访问、端口扫描、启动防火墙、停止防火墙这几个部分。

在程序设计中,各模块部分的设计实现是重点和难点,因此论文将着重说明这些模块的编码部分,对于界面设计部分只作了简单说明。

但是在这之前先介绍另一个重要的环节。

程序员初始化时进行的驱动加载环节。

在程序初始化的时候,在PreView函数中进行了驱动的加载主要函数有如下两句:

m_filterDriver.LoadDriver("IpFilterDriver","System32\\Drivers\\IpFltDrv.sys",NULL,TRUE);

m_ipFltDrv.LoadDriver("DrvFltIp",NULL,NULL,TRUE);

第一个函数的功能是加载系统自带的IP包过滤驱动IpFilterDriver为驱动名,这个变量的作用在后面的获取驱动文件的指针时会用到,同理DrvFltIp也是这个用处。

驱动名的详细介绍将在后面阐述。

运行类的LoadDriver()该函数是用于统领驱动加载的函数,在该函数中首先运行InitDriver();这个函数的作用是得到驱动的物理路径,以及驱动名称,驱动的DOS名。

所谓的dosname的意思是说,当要获得驱动文件的指针的时候要使用CreateFile()函数,都知道通过CreateFile()函数获得文件指针时需要文件的物理路径,但当所需获得指针的文件是驱动文件的时候千万不能用驱动文件的物理路径,因为CreateFile()函数专门为驱动文件预留了dosname,这个dosname的值应该是\\.\+驱动名,细心的人就会问那么这个函数怎么知道驱动文件是在哪里呢?

答案是这样的,在使用Createfile()前还有一些步骤。

首先调用OpenSCManager()函数获得系统服务管理器的指针,再通过获得的服务管理器指针和驱动名来创建驱动服务,调用CreateService()函数。

注意,驱动名不是用户可以自己随便定义的,因为在编写驱动程序的时候开发平台已经指定了相应的驱动名。

例如通过quicksys编写驱动时,用户指定工程名为IpDrv,那么在工程中会自动出现这样的定义:

#defineNT_DEVICE_NAMEL"\\Device\\IpDrv"

#defineDOS_DEVICE_NAMEL\\DosDevices\\IpDrv

在创建服务后使用OpenDevice()打开服务,最后使用CreateFile()即可得到驱动文件指针,再通过该指针进行添加规则的操作。

通过这样的过程终于实现了驱动的加载功能。

整个过程的函数调用,如图4-1所示:

图4-1加载驱动模块流程图

图4-2InitDriver获取DriverPath,DriverName,DriverDosName

4.1.1用户添加规则模块

添加规则模块是防火墙的重要组成部分。

注册模块的主要功能是把用户的注册的规则写入filter-hookdriver中。

同时,为了减少用户输入错误,添加规则模块需要对输入的规则是否成功添加作必要的验证。

在添加规则模块中,使用Check()函数对用户输入的IP地址格式进行检测,判断IP是否合法。

以及使用UpdateData()获取其它控件的值后判断控件是否进行了输入。

这样检查了用户是否在输入框中填写了必要的文字,确保用户不跳过输入。

部分代码如下:

UpdateData();

BOOLbresult1=Verify(m_sip);

BOOLbresult2=Verify(m_dip);

if(bresult1==FALSE||bresult2==FALSE||m_deal.GetCurSel()!

=0||m_deal.GetCurSel()!

=1||m_protocol.GetCurSel()!

=0||m_protocol.GetCurSel()!

=1||m_protocol.GetCurSel()!

=2)

{

AfxMessageBox("请完整输入");

}

该模块的流程图如下所示:

图4-3添加规则模块流程图

图4-4调用WriteIO函数示意图

用户添加规则的界面如图4-5所示。

图4-5添加规则界面

用户输入相应信息后,单击“添加”按钮,可将用户信息插入Drvfltip.sys中。

该功能由单击事件处理函数OnAdd()来实现,部分程序代码如下:

{

intaction=m_action.GetCurSel();

if(action==0)

setact=FALSE;

else

setact=TRUE;

intproto=m_protocol.GetCurSel();

if(proto==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.sourceIp=inet_addr((LPCTSTR)m_ssadd);

ip.sourceMask=inet_addr("255.255.255.255");

ip.sourcePort=htons(atoi((LPCTSTR)m_ssport));

ip.protocol=setproto;

ip.drop=setact;

DWORDresult=AddFilter(ip);

}

程序中还调用了使用驱动的AddFilter()方法,并在其中通过writeIO()函数对hook驱动进行读写。

AddFilter()的部分代码如下:

AddFilter(IPFilterpf)

{

//发送添加过滤规则到驱动程序

DWORDresult=ipFltDrv.WriteIo(ADD_FILTER,&pf,sizeof(pf));

}

writeIO()的部分代码如下:

BOOLreturnCode=DeviceIoControl(driverHandle,//添加规则

code,

buffer,

count,

NULL,

0,

&bytesReturned,

NULL);

4.1.2禁止所有访问模块

在主界面中可以直接设定禁止所有访问的功能。

主界面如图4-6所示。

图4-6主

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

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

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