版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE 第1页 共26页数学与计算机科学学院毕业论文(设计)论文(设计)名称:防火墙的研究与设计 姓 名: 学 号: 专 业: 班 级: 指导老师: 简易Windows防火墙的设计与实现摘 要当今是网络,信息等飞速发展的时代,网络与信息处理以及硬件技术逐渐成熟。随着万维网的普遍覆盖,以及计算机技术的不断发展,网络安全问题已经逐渐浮出水面,受到广大网民的重视。防火墙就是网络安全技术在实际中的应用之一。本设计实现的防火墙运用IP过滤钩子驱动,此驱动为内核模式,它实现一个钩子过滤回调函数,并用系统提供的IP过滤驱动注册它,IP过滤驱动随后使用这个过滤钩子来决定如何处理进出系统的数据包。本防火墙由以
2、下几个模块组成:过滤规则添加模块,过滤规则显示模块,过滤规则存储模块,文件储存模块,安装卸载规则模块,IP封包过滤驱动功能模块。用户只需要通过主界面菜单和按钮就可以灵活地操作防火墙,有效地保护Windows系统的安全。关键词:防火墙;过滤钩子;数据包;IP过滤;过滤规则The Design and Implement of Simple Windows FirewallAbstractToday is the network, information, such as the rapid development of the times, network and information pro
3、cessing and hardware technology is gradually mature. With the universal coverage of the world wide web, as well as the continuous development of computer technology, network security issues have gradually surfaced, by the majority of Internet users to pay attention to. Firewall is one of the applica
4、tions of network security technology in practice. The design and implementation of firewall using IP filter hook driver, the driver is a kernel mode, it achieves a filter hook callback function, and provides the IP filter driver registered it, the IP filter driver then uses the filter hook to decide
5、 how to deal with access number of the system according to the package. The firewall is composed of the following modules: module to add filtering rules, filter rules display module, storage filter rules module, file storage module, installation and unloading rules module, IP packet driver module. U
6、sers only need through the main interface menu and button can be flexible to operate the firewall, to effectively protect the safety of the Windows system.Key words: Firewall; filter hook; data packet; IP filter; filter rule目 录论文总页数:21页 TOC o 1-3 h z u HYPERLINK l _Toc446931748 1引言 PAGEREF _Toc44693
7、1748 h 1 HYPERLINK l _Toc446931749 1.1课题背景 PAGEREF _Toc446931749 h 1 HYPERLINK l _Toc446931750 1.2本课题研究意义 PAGEREF _Toc446931750 h 1 HYPERLINK l _Toc446931751 1.3本课题研究方法 PAGEREF _Toc446931751 h 1 HYPERLINK l _Toc446931752 2防火墙概述 PAGEREF _Toc446931752 h 1 HYPERLINK l _Toc446931753 2.1防火墙的定义 PAGEREF _T
8、oc446931753 h 1 HYPERLINK l _Toc446931754 2.2防火墙的基本策略 PAGEREF _Toc446931754 h 2 HYPERLINK l _Toc446931755 2.3包过滤防火墙 PAGEREF _Toc446931755 h 2 HYPERLINK l _Toc446931756 2.3.1数据包 PAGEREF _Toc446931756 h 2 HYPERLINK l _Toc446931757 2.3.2包过滤防火墙的工作原理 PAGEREF _Toc446931757 h 2 HYPERLINK l _Toc446931758 3开
9、发工具 PAGEREF _Toc446931758 h 3 HYPERLINK l _Toc446931759 3.1Visual C+ 6.0 PAGEREF _Toc446931759 h 3 HYPERLINK l _Toc446931760 3.2VSS PAGEREF _Toc446931760 h 3 HYPERLINK l _Toc446931761 4防火墙系统构成 PAGEREF _Toc446931761 h 4 HYPERLINK l _Toc446931762 4.1需求分析 PAGEREF _Toc446931762 h 4 HYPERLINK l _Toc44693
10、1763 4.2设计思路 PAGEREF _Toc446931763 h 4 HYPERLINK l _Toc446931764 4.3功能模块构成 PAGEREF _Toc446931764 h 4 HYPERLINK l _Toc446931765 4.4功能模块介绍 PAGEREF _Toc446931765 h 5 HYPERLINK l _Toc446931766 4.4.1过滤规则添加删除模块 PAGEREF _Toc446931766 h 5 HYPERLINK l _Toc446931767 4.4.2过滤规则显示模块 PAGEREF _Toc446931767 h 5 HYP
11、ERLINK l _Toc446931768 4.4.3过滤规则存储模块 PAGEREF _Toc446931768 h 5 HYPERLINK l _Toc446931769 4.4.4文件存储模块 PAGEREF _Toc446931769 h 5 HYPERLINK l _Toc446931770 4.4.5文件载入模块 PAGEREF _Toc446931770 h 5 HYPERLINK l _Toc446931771 4.4.6安装卸载摸块 PAGEREF _Toc446931771 h 5 HYPERLINK l _Toc446931772 4.4.7IP封包过滤驱动模块 PAG
12、EREF _Toc446931772 h 5 HYPERLINK l _Toc446931773 5防火墙设计 PAGEREF _Toc446931773 h 6 HYPERLINK l _Toc446931774 5.1程序关键类 PAGEREF _Toc446931774 h 6 HYPERLINK l _Toc446931775 5.1.1派生类CFireWallAPP PAGEREF _Toc446931775 h 6 HYPERLINK l _Toc446931776 5.1.2框架类CMainFrame PAGEREF _Toc446931776 h 6 HYPERLINK l _
13、Toc446931777 5.1.3文档类CFireWallDoc PAGEREF _Toc446931777 h 7 HYPERLINK l _Toc446931778 5.1.4视图类CFireWallView PAGEREF _Toc446931778 h 7 HYPERLINK l _Toc446931779 5.1.5_RuleInfo类 PAGEREF _Toc446931779 h 8 HYPERLINK l _Toc446931780 5.2详细设计 PAGEREF _Toc446931780 h 8 HYPERLINK l _Toc446931781 5.2.1主界面 PAG
14、EREF _Toc446931781 h 8 HYPERLINK l _Toc446931782 5.2.2添加过滤规则 PAGEREF _Toc446931782 h 9 HYPERLINK l _Toc446931783 5.2.3删除过滤规则 PAGEREF _Toc446931783 h 11 HYPERLINK l _Toc446931784 5.3驱动程序设计 PAGEREF _Toc446931784 h 14 HYPERLINK l _Toc446931785 5.3.1简介 PAGEREF _Toc446931785 h 14 HYPERLINK l _Toc44693178
15、6 5.3.2结构图 PAGEREF _Toc446931786 h 14 HYPERLINK l _Toc446931787 5.3.3该驱动的优点 PAGEREF _Toc446931787 h 15 HYPERLINK l _Toc446931788 5.3.4本程序的驱动设计 PAGEREF _Toc446931788 h 15 HYPERLINK l _Toc446931789 6程序测试 PAGEREF _Toc446931789 h 16 HYPERLINK l _Toc446931790 结 论 PAGEREF _Toc446931790 h 19 HYPERLINK l _T
16、oc446931791 参考文献 PAGEREF _Toc446931791 h 20 HYPERLINK l _Toc446931792 致 谢 PAGEREF _Toc446931792 h 21 HYPERLINK l _Toc446931793 声 明 PAGEREF _Toc446931793 h 22第21页 共 21 页引言课题背景Internet的出现及迅速的发展给现代的人们带来了新的飞跃。网络不仅促进了人们之间的交流,而且提高了人们的工作效率,丰富了人们的生活。但网络的安雀问题也越来越明显。由于黑客攻击和信息泄露并不是直接对系统进行破坏。所以往往不能引起人们的注意。随着网络的
17、进一步普及,网络安全产品逐渐进入了人们的视野,而防火墙作为把手用户安全大门的重要工具,越来越受到人们的重视。所以,对防火墙的研究显得格外重要。本课题研究意义现如今,市场上的大多数的防火墙仅仅是网关型的。虽然功能很强大。但是,他们防外不防内,难以解决每一个用户所在主机的安全问题。个人用户多使用的是windows操作系统,黑客利用这种系统的漏洞来进行对用户的攻击。如:假冒IP包对通信双方进行欺骗;对主机发送大量的IP数据包进行轰炸攻击,使之崩溃,等等。所以,为了用户主机的安全,研究有效的个人防火墙技术很有必要。本课题研究方法本本设计是使用Win2000 DDK中的提供的Filter-Hook Dr
18、iver来实现数据包的过滤。过滤钩子驱动程序是一个永远过滤网络包的核心模式驱动程序,它扩展了系统提供的IP过滤驱动程序的功能。过滤钩子驱动程序完成一个过滤钩子回调函数,并在系统提供的IP过滤驱动程序中注册这个回调函数。这个回调函数被看作是一个过滤钩子。当有数据包需要通过是,IP过滤驱动程序会调用这个过滤钩子以决定怎样处理到达和输出的包。防火墙概述防火墙的定义防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网(US5606668(A)1993-12-15)。它是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护
19、系统,依照特定的规则,允许或是限制传输的数据通过。在网络中,所谓“ HYPERLINK /view/3067.htm t _blank 防火墙”,是指一种将 HYPERLINK /view/21848.htm t _blank 内部网和公众访问网(如Internet)分开的方法,它实际上是一种 HYPERLINK /view/1155408.htm t _blank 隔离技术。防火墙是在两个网络通讯时执行的一种 HYPERLINK /view/469056.htm t _blank 访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络
20、中的 HYPERLINK /view/1960.htm t _blank 黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信防火墙的基本策略按照美国国家计算机安全协会(NCSA)的建议,制定安全计划必须包括服务访问策略和防火墙设计策略。服务访问策略应包括控制用户对某些Internet服务的访问。另外,用户也需要限制访问的方式,如PPP或SLIP。在建立服务访问政策时,需要注意两个方式:1、不允许从Internet上访问到用户的网络,但是允许个别用户(设定得到)的网络访问有限Internet站点。但必须进行地
21、址伪装;2、允许有限的从Internet上访问到公司网络,如从Internet上只能访问公司的WWW和FTP服务器。作为防火墙策略,就是定义实现服务访问策略的具体规则。在实现防火墙策略时,用户可以采用以下两个原则之一:1、除了允许的事件之外,拒绝其它的任何事件。2、除了拒绝的事件之外,允许其它的任何事件。制定的策略是由一条条规则构成的,防火墙的规则可分为三条链:输入链、输出链和转发链。包过滤防火墙数据包包(Packet):在包交换网络里,单个消息被划分为多个数据块,这些数据块称为包,它包含发送者和接收者的地址信息。这些包然后沿着不同的路径在一个或多个网络中传输,并且在目的地重新组合。Linux
22、中包含的IP防火墙机制3种IP消息类型:ICMP(Internet控制消息协议)、UDP(用户数据报协议)和 TCP(传输控制协议)。所有的IP包包含了源、目的IP地址、IP协议消息类型。包头里根据协议类型还包括了不同的字段。ICMP数据包包含了一个类型字段,用来标识控制或状态消息类型。UDP和TCP包包含了源和目的服务端口号。包过滤防火墙的工作原理 HYPERLINK /view/1162820.htm t _blank 数据包过滤是通过对数据包的IP头和TCP头或UDP头的检查来实现的,主要信息有:* IP源地址* IP目标地址* 协议(TCP包、UDP包和ICMP包)* TCP或UDP包
23、的 HYPERLINK /view/4728590.htm t _blank 源端口* TCP或UDP包的目标端口* ICMP消息类型* TCP包头中的ACK位* 数据包到达的端口* 数据包出去的端口在TCP/IP中,存在着一些标准的服务 HYPERLINK /view/642103.htm t _blank 端口号,例如,HTTP的端口号为80。通过屏蔽特定的端口可以禁止特定的服务。包过滤系统可以阻塞内部主机和外部主机或另外一个网络之间的连接,例如,可以阻塞一些被视为是有敌意的或不可信的主机或网络连接到内部网络中。过滤器的实现 HYPERLINK /view/1162820.htm t _b
24、lank 数据包过滤一般使用过滤 HYPERLINK /view/1360.htm t _blank 路由器来实现,这种路由器与普通的路由器有所不同。普通的路由器只检查 HYPERLINK /view/25880.htm t _blank 数据包的目标地址,并选择一个达到目的地址的最佳路径。它处理数据包是以目标地址为基础的,存在着两种可能性:若路由器可以找到一个路径到达目标地址则发送出去;若路由器不知道如何发送数据包则通知数据包的发送者“数据包不可达”。过滤路由器会更加仔细地检查数据包,除了决定是否有到达目标地址的路径外,还要决定是否应该发送数据包。“应该与否”是由路由器的过滤策略决定并强行执
25、行的。开发工具Visual C+ 6.0Microsoft Visual C+ 6.0是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。 HYPERLINK /view/100377.htm t _blank Visual C+是一个功能强大的可视化 HYPERLINK /view/973702.htm t _blank 软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然 HYPERLINK /view/39784.htm t _blank 微软公司
26、推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0不仅是一个C+ HYPERLINK /view/487018.htm t _blank 编译器,而且是一个基于Windows操作系统的可视化 HYPERLINK /view/14867.htm t _blank 集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包
27、括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。VSS HYPERLINK /view/60376.htm t _blank 源代码 HYPERLINK /view/183136.htm t _blank 版本控制机制是现代软件开发中必不可少的管理机制之一,通常借助 HYPERLINK /view/2942399.htm t _blank 版本控制软件即Source Code Management(SCM) systems或者Version Control systems
28、来实现。版本控制在软件开发中的重要作用如下:1)作为代码仓库有效的管理软件开发中各个不同版本的源代码和文档,占用空间小并且方便各个版本代码和文档的获取。2)对开发小组中对源代码的访问进行有效的协调(不同的版本控制软件采取不同的协调策略)。常用的版本控制软件有Clearcase, CVS, PVCS和Microsoft公司的Visual SourceSafe (VSS)。防火墙系统构成需求分析该防火墙的主要功能包括以下几个方面。1、能设置过滤规则,包括:IP地址、子网掩码、端口号、协议。2、能添加删除规则。3、能保存读取规则。4、能安装卸载规则,即:将规则发送给IP过滤驱动或从IP过滤驱动中删除
29、规则。5、能正确完整的显示所添加的过滤规则。设计思路根据具体需求来进行模块分析,总体设计思路如下:每一个程序都要有与用户交流的界面,而且必须简单明了,因此可从这一步入手。根据具体需求可以知道,该程序界面需要有以下几个按键。开始过滤、停止、添加规则、删除规则、安装、卸载、保存、读取。因此该程序的功能模块应该有:规则添加删除功能模块,规则显示功能模块,规则存储功能模块,文件储存功能模块,安装卸载规则功能模块。功能模块构成功能模块构成如图1。防火墙防火墙规则添加删除模块规则显示模块规则存储模块文件储存模块文件载入模块安装卸载模块IP封包过滤驱动模块图1 功能模块图功能模块介绍过滤规则添加删除模块该防
30、火墙若要进行数据包的过滤就必须按照用户所定义的过滤规则来执行,此模块就是为用户提供添加与删除规则的职能。过滤规则主要包括:源IP地址、子网掩码、端口号,目的IP地址、子网掩码、端口号,协议,以及对符合该规则的数据包是放行还是阻止进行设置。并且将设置好的规则添加到存储功能模块并显示出来。过滤规则显示模块该功能顾名思义用来显示用户所定义的规则,能够对每一条规则进行删除、安装、卸载等操作,使过滤规则能够详细的显示给用户。过滤规则存储模块该功能用于存储用户定义的过滤规则,记录用户对每一条规则的操作,并按照用户的操作将规则进行处理。如:安装规则,则把用户选择的规则安装到IP过滤驱动,IP接收到此规则后按
31、照此规则进行数据包过滤。文件存储模块该功能使用户所定义并且添加的过滤规则以文件的形式保存起来,方便存储日后使用,防火墙会将该规则保存为后缀名为.rul的文件,在下次打开防火墙的时候可以直接加载该规则。文件载入模块该功能与文件存储功能对应,即用户可以导入一个后缀名为.rul的文件,并且添加文件中所定义的所有规则。安装卸载摸块防火墙要过滤数据包,就需要将IP过滤驱动按照用户定义的规则进行过滤。用户通过添加规则可以将过滤规则添加到存储模块中并且显示出来,但想要将这些规则发送给IP过滤驱动,就需要对这些规则进行安装。安装和卸载功能就是将过滤规则传送给IP过滤驱动或是将已安装的规则从过滤驱动中删除。IP
32、封包过滤驱动模块该功能是整个防火墙的核心模块,IP封包过滤驱动可以按照用户定义的规则执行对数据包的阻止或是放行。防火墙设计程序关键类派生类CFireWallAPP每一个MFC的程序都需要有一个CwinApp的派生类,在本程序中的派生类就是CFireWAllApp。此派生类封装了Windows应用程序的初始化、运行和终止,构成了程序的主执行线程。框架类CMainFrame主框架类CMainFrame构成了整个程序的框架,其中包括菜单、按钮、工具等。下面列出了CmainFrame类中的一些主要方法和变量。class CMainFrame:public CFrameWndprotected:BOOL
33、 Installed;规则安装TRUE-已安装,FALSE-未安装protected: BOOL started;开始过滤,TRUE-已开始,FALSE-未开始protected:BOOL AddFilterToFw();安装过滤钩子。afx_msg void OnAppExit();退出程序afx_msg void OnButtonadd();添加规则afx_msg void OnButtondel();删除规则afx_msg void OnButtonstart();开始过滤afx_msg void OnButtonstop();停止过滤afx_msg void OnButtonInsta
34、ll();安装规则afx_msg void OnButtonuninstall();卸载规则以上均为按钮。afx_msg void OnMenuAddRule();添加规则afx_msg void OnMenuDelRule();删除规则afx_msg void OnMenuInstallRules();安装规则afx_msg void OnMenuUninstallRules();卸载规则afx_msg void OnMenuStart();开始过滤afx_msg void OnMenuStop();停止过滤afx_msg void OnMenuSaveRules();保存规则afx_msg
35、 void OnMenuLoadRules();加载规则/AFX_MSG;在CMainFrame中定义了本程序的所有基本功能以及重要变量。文档类CFireWallDoc文档类是用来存储数据的。在本程序中该文档类主要用于存储用户所定义的规则。当用户想要添加或删除规则时,就要向此类中写入数据并保存起来;当视图类CFireWallView需要将用户定义的规则显示在规则列表时,或者将规则安装到驱动或从驱动中删除时,就需要从文档类中读取数据。class CFireWallDoc:public CDocumentpublic:unsigned int nRules;规则数RuleInfo rulesMAX
36、_RULES;最大规则数int AddRule();添加规则void DeleteRule(unsigned int position);删除规则void ResetRules();重置规则,即在加载规则前,需要删除规则列表中及存储在文档类中的所有规则;其中RuleInfo ruleMAX_RULES是_RuleInfo结构体的一个变量,该数组用来存储规则,_RuleInfo类详细情况见5.1.5节介绍。视图类CFireWallView视图类给用户提供显示信息,在本程序中,该类主要用于在规则列表中显示出存储在文档类CFireWallDoc的规则。class CFireWallView:publ
37、ic CFormViewpublic:CFireWallDoc* GetDocument();指向文档类,和文档类CFireWallDoc关联。public:protected:virtual void OnInitialUpdate();初始化规则列表public:void UpdateList();更新规则列表 protected:void AddRuleToList();将文档类CFireWallDoc中的规则显示出来;_RuleInfo类_RuleInfo类用于构成过滤规则的数据。typedef struct _RuleInfounsigned long sourceIp;unsign
38、ed long sourceMask;unsigned short sourcePort;unsigned long destinationIp;unsigned long destinationMask;unsigned short destinationPort;unsigned int protocol;int action;RuleInfo,*PRuleInfo;详细设计主界面程序主界面如图2。图2 程序主界面添加过滤规则用户点击添加按钮将会显示已个“添加规则”对话框,如图。 图3 添加规则添加规则功能是将用户设置好的对话框中的数据存储到文档类中。此过程分两个步骤:1、获取对话框中的数
39、据:result=inet_addr(m_ipsource,&srcIp);获取源IP地址编辑框的值赋给srcIp。result = inet_addr(m_srcMask, &srcMask);获取源IP掩码编辑框的值赋给srcMask。result=inet_addr(m_ipdestination, &dstIp);获取目的IP地址编辑框的值赋给dstIp。result = inet_addr(m_dstMask, &dstMask);获取目的IP掩码编辑框的值赋给dstMask。if(m_protocol = TCP)protocol = 6;else if(m_protocol =
40、UDP)protocol = 17;else if(m_protocol = ICMP)protocol = 1;else if(m_protocol = 所有)protocol = 0;if(m_action = 放行)cAction = 0;else if(m_action = 丢弃)cAction = 1;elsecAction = 2;srcPort = m_portsource;源端口dstPort = m_portDestination;目的端口2、将获取到的数据添加到文档类中:BOOL CFireWallDoc:AddRule(unsigned long srcIp,unsign
41、ed long srcMask,unsigned short srcPort, unsigned long dstIp,unsigned long dstMask,unsigned short dstPort,unsigned int protocol,int action)rulesnRules.sourceIp = srcIp;rulesnRules.sourceMask = srcMask;rulesnRules.sourcePort = srcPort;rulesnRules.destinationIp = dstIp;rulesnRules.destinationMask = dst
42、Mask;rulesnRules.destinationPort = dstPort;rulesnRtocol = protocol;rulesnRules.action = action;nRules+;return TRUE;添加规则功能流程图如图4。开始开始格式匹配?获取对话框中的数据将数据添加到Doc中弹出添加规则对话框结束输入正确的规则否是是图4 添加规则流程图删除过滤规则删除规则时,首先要选定想删除的规则,否则将弹出对话框提示选择,再将选定的规则从文档类中删除,同时更新规则界面中的显示。当正在进行过滤时,则要提示先停止过滤,才能删除规则。删除规则:void CMai
43、nFrame:OnButtondel()CFireWallView *view = (CFireWallView *)GetActiveView();CFireWallDoc *doc = (CFireWallDoc *)GetActiveDocument();POSITION pos = view-m_rules.GetFirstSelectedItemPosition(); if(started = TRUE) 是否正在过滤。AfxMessageBox(请先停止);return;elseif(doc-nRules m_rules.GetNextSelectedItem(pos); 选中规则
44、的下一条规则。CFireWallDoc *doco = (CFireWallDoc *)GetActiveDocument();doco-DeleteRule(position); view-UpdateList(); 删除规则功能的流程如图5。否否开始获取当前选择的规则正在过滤?调用DeleteRule()更新显示结束停止过滤是图5 删除规则流程图其中调用DeleteRule()的代码为:CFireWallDoc *doco = (CFireWallDoc *)GetActiveDocument();关联文档类doco-DeleteRule(position);调用DeleteRule()。
45、view-UpdateList();/更新显示。void CFireWallDoc:DeleteRule(unsigned int position)if(position = nRules)return;if(position != nRules - 1)如果删除的规则不是最后一条,则将它删除后,后面的规则要往前移动unsigned int i;for(i = position + 1;inRules;i+)rulesi - 1.sourceIp = rulesi.sourceIp;rulesi - 1.sourceMask = rulesi.sourceMask;rulesi - 1.so
46、urcePort = rulesi.sourcePort;rulesi - 1.destinationIp = rulesi.destinationIp;rulesi - 1.destinationMask = rulesi.destinationMask;rulesi - 1.destinationPort = rulesi.destinationPort;rulesi - 1.protocol = tocol;rulesi - 1.action = rulesi.action;nRules-;DeleteRule()调用流程图如图6。删除删除开始是最后一条规则?后面规则
47、往前移删除结束获取当前规则否是图6 DeleteRule()的调用驱动程序设计简介基于Firewall-Hook Driver的包过滤驱动程序运行效率高,主要用于IP过滤驱动中所经过的所有数据包,并且根据过滤规则对数据包进行筛选,判断是否符合要求通过,或者拦截。同时处理上级应用发来的IRP,接收程序发送的过滤规则等。安装过滤函数之前,先将IP_SET_FIREWALL_HOOK_INFO结构中的FirewallPtr指针指向过滤函数的地址,Add值为TRUE,并设置该函数的优先级Priority,然后向IP设备IOCTL IOCTL_IP_SET_FIREWALL_HOOK发送控制码,这样就完
48、成了对过滤函数的安装。卸载过滤函数的时候只需要将Add值设为FALSE,其他参数和安装时一样即可。每一个过滤函数都可以设置优先级,系统将会按照优先级的次序依次调用这些函数,直到某个函数返回“丢弃包”为止。只有所有的过滤函数都返回“允许包”时,这个包才能顺利通过防火墙。结构图驱动程序结构如图7。图7 驱动结构图该驱动的优点在 HYPERLINK /keywords/windows.html t _blank Windows中这不是开发防火墙的唯一方法,其它还有例如 NDIS防火墙,TDI防火墙,Winsock分层防火墙,包过滤API等等。而Filter-Hook Driver的优点在于:1、 该
49、驱动所具备的特性可以使防火墙过滤所有IP层(或以上)的数据。但不能过滤更低层的头部数据,例如:不能过滤以太帧数据。需要用NDIS过滤器来做。2、 这种驱动非常简单方便。安装过滤驱动和执行过滤功能非常容易。但包过滤API(Packet Filtering API)更加容易使用,尽管它缺少弹性,例如不能处理包的内容,不能用包过滤API修改内容。本程序的驱动设计本驱动的设计核心是通过TDriver类向DrvFltIp驱动发送控制代码(START_IP_HOOK、STOP_IP_HOOK、ADD_FILTER、CLEAR_FILTER),来实现过滤数据包的功能。1、程序初始化时,调用LoadDrive
50、r()加载DrvFltIp驱动:CMainFrame:OnCreate()ipFltDrv.LoadDriver(IpFilterDriver,System32DriversIpFltDrv.sys,NULL,TRUE);2、用户点击“开始”按钮,程序会发送控制代码START_IP_HOOK给驱动,并且开始过滤:CMainFrame:OnButtonstart()filterDriver.WriteIo(START_IP_HOOK,NULL,0);3、用户点击“停止”按钮,程序会发送控制代码STOP _IP_HOOK给驱动,并且停止过滤:CMainFrame:OnButtonstop()filterDriver.WriteIo(STOP_IP_HOOK,NULL,0);4、用户点击“安装规则”按钮时,程序会发送控制代码ADD_FIL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度城市轨道交通设备维护与检修合同范本3篇
- 二零二五年度房产证办理专业委托代理合同
- 2025年度私人购车二手车寄售及经纪服务合同3篇
- 2025年度环保型爬架租赁及维护合同3篇
- 二零二五年度企业孵化器项目引进与孵化合同3篇
- 2025版网络数据保管员聘用合同标准版2篇
- 二零二五年度新型纱窗材料研发与应用合同2篇
- 二零二五年度城市轨道交通招标合同管理规范6篇
- 课程设计打印图纸模板
- 二零二五年度合同担保书撰写指南与合同担保合同审查3篇
- 滞销风险管理制度内容
- 关于物业服务意识的培训
- JJF 2184-2025电子计价秤型式评价大纲(试行)
- 排污许可证办理合同1(2025年)
- GB/T 44890-2024行政许可工作规范
- 上海科目一考试题库参考资料1500题-上海市地方题库-0
- 【7地XJ期末】安徽省宣城市宁国市2023-2024学年七年级上学期期末考试地理试题(含解析)
- 设备操作、保养和维修规定(4篇)
- 2025年度日历台历黄历模板
- 医疗行业十四五规划
- 有毒有害气体岗位操作规程(3篇)
评论
0/150
提交评论