Windows XP包过滤防火墙的设计与实现文档格式.docx
《Windows XP包过滤防火墙的设计与实现文档格式.docx》由会员分享,可在线阅读,更多相关《Windows XP包过滤防火墙的设计与实现文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
Firewall,filterhook,FilterDriver,packetfiltering
1引言
1.1课题背景....................................................................................5
1.2本课题研究意义.........................................................................5
1.3本课题研究方法.........................................................................5
2防火墙概述
2.1防火墙的定义............................................................................6
2.2防火墙的基本策略.....................................................................6
2.3包过滤防火墙............................................................................6
2.3.1数据包...............................................................................6
2.3.2包过滤防火墙的工作原理..................................................7
3开发工具
3.1VisualC++6.0..........................................................................7
3.2VisualSourceSafe......................................................................8
4防火墙系统构成
4.1需求分析....................................................................................8
4.2设计思路....................................................................................8
4.3功能模块构成.............................................................................9
4.4功能模块介绍.............................................................................9
4.4.1过滤规则添加删除功能模块...............................................9
4.4.2过滤规则显示功能模块......................................................9
4.4.3过滤规则存储功能模块......................................................10
4.4.4文件存储功能模块.............................................................10
4.4.5文件载入功能模块.............................................................10
4.4.6安装卸载功能模块.............................................................10
4.4.7IP封包过滤驱动功能模块..................................................10
5防火墙设计
5.1程序关键类
5.1.1应用程序类CFireWallAPP................................................10
5.1.2主框架类CMainFrame.....................................................10
5.1.3文档类CFireWallDoc.......................................................12
5.1.4视图类CFireWallView......................................................12
5.1.5_RuleInfo类.....................................................................13
5.2详细设计
5.2.1主界面..............................................................................13
5.2.2添加过滤规则...................................................................14
5.2.3删除过滤规则...................................................................15
5.3驱动程序设计
5.3.1简介.................................................................................15
5.3.2结构图..............................................................................16
5.3.3该驱动的优点...................................................................16
5.3.4本程序的驱动设计............................................................16
结论...............................................................................................17
参考文献..........................................................................................................17
致谢..........................................................................................................18
1.1课题背景
防火墙是一种隔离技术,是一类防范措施的总称,利用踏实的内部网络与Internet或者其他外部网络之间相互隔离,通过限制网络互访来保护内部网络。
防火墙是建立在内部网络与外部网络之间的唯一安全通道,简单的可以只用路由器实现,复杂的可以用主机甚至一个子网来实现,它可以在IP层设置屏障,也可以用应用软件来阻止外来攻击。
通过制定相应的安全规则,可以允许符合条件的数据进入,同时将不符合条件的数据拒之门外,这样就可以阻止非法用户的侵入,保证内部网络的安全。
1.2本课题研究意义
随着计算机技术和网络技术的发展,计算机网络给人们带来了很多便利,与此同时网络安全的问题也伴随着网络技术的发展而日趋严重。
使用防火墙能很好的提高系统的安全性,减少系统收到网络安全方面的威胁。
本毕业设计选择开发一个Windows下的防火墙,它能够对网络IP数据包按照用户的设置进行过滤。
通过此防火墙的开发锻炼了学生的实际动手能力,对以后的学习和工作能力的培养具有重要意义。
1.3本课题研究方法
本设计使用VS2010开发,运用IP过滤钩子驱动技术设计和实现的。
本次毕业设计应首先分析防火墙的相关功能,结合本次毕业设计的相关要求写出需求分析;
其次,综合运用以前所学的相关知识,在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;
同时,在开发设计与视线中,要保存好相关的设计文档。
2.1防火墙的定义
防火墙是指设置在不同网络(如可信的企业内部网和不可信的公开网)或网络安全域之间的一系列部件的组合。
它可通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来实现网络的安全保护。
在逻辑上,防火墙是一个分离器,一个限制器,也是一个分析器,有效地监控了内部网和Internet之间的任何活动,保证了内部网络的安全。
防火墙是设置在被保护网络和外部网络之间的一道屏障,实现网络的安全保护,以防止发生不可预测的、潜在破坏性的侵入。
防火墙本身具有较强的抗攻击能力,它是提供信息安全服务、实现网络和信息安全的基础设施。
2.2防火墙的基本策略
按照美国国家计算机安全协会(NCSA)的建议,制定安全计划必须包括服务访问策略和防火墙设计策略。
服务访问策略应包括控制用户对某些Internet服务的访问。
另外,用户也需要限制访问的方式,如PPP或SLIP。
在建立服务访问政策时,需要注意两个方式:
1.不允许从Internet上访问到用户的网络,但是允许个别用户(设定得到)的网络访问有限Internet站点。
但必须进行地址伪装;
2.允许有限的从Internet上访问到公司网络,如从Internet上只能访问公司的WWW和FTP服务器。
作为防火墙策略,就是定义实现服务访问策略的具体规则。
在实现防火墙策略时,用户可以采用以下两个原则之一:
1.除了允许的事件之外,拒绝其他所有的事件。
2.除了拒绝的事件之外,允许其他的任何事件。
制定的策略是由一条条规则构成的,防火墙的规则可分为三条链:
输入链、输出链和转发链。
2.3包过滤防火墙
2.3.1数据包
数据包是指IP网络消息。
IP标准定义了在网上两台计算机之间大宋的消息的结构,结构上,一个包包含了一个信息头和应被传送数据的一段消息体。
Linux中包含的IP防火墙机制3种IP消息类型:
ICMP(Internet控制消息协议)、UDP(用户数据报协议)和TCP(传输控制协议)。
所有的IP包头包含了源、目的IP地址、IP协议消息类型。
包头里根据协议类型还包括了不同的字段。
ICMP数据包包含了一个类型字段,用来标识控制或状态消息类型。
UDP和TCP包包含了源和目的服务端口号。
2.3.2包过滤防火墙的工作原理
采用这种技术的防火墙产品,通过在网络中的适当位置对数据包进行过滤,根据检查数据流中每个数据包的源地址、目的地址、所有TCP端口号和TCP链路状态等要素,然后依据一组预定义的规则,以允许合乎逻辑的数据包通过防火墙进入到内部网络,而将不合乎逻辑的数据包加以删除。
因为路由器通常分布在有不同安全需求和安全策略的网络的交界处,因此可以通过在路由器上使用包过滤在可能的情况下实现只允许授权网络的数据进入。
在这些路由器上使用包过滤一种比较经济的在现有路由基础结构上增加防火墙功能的机制。
顾名思义,包过滤在路由过程中对指定包进行过滤(丢弃)。
对过滤的判断通常基于单个包的头部所包含的内容(例如源地址,目的地址,协议,端口等)。
包过滤防火墙通常在操作系统内部实现,并且操作在IP网络和传输协议层。
它在对基于IP包头信息实施过滤后,通常对包的路由作决策来保护系统。
包过滤防火墙由一组接受或禁止规则列表组成。
这些规则明确定义了哪个包将被允许或不允许通过网络接口。
防火墙规则使用在上面描述的包头字段来决定是否允许路由一个包通过,以达到它的目的,或无声息的将包丢弃掉,或阻止包并向它的发送机器返回一个错误状态。
这些规则是基于特定的网络接口卡和主机IP地址、网络层源和目的IP地址、传输层TCP和UDP服务端口、TCP链接标志、网络层ICMP消息类型及这些包是进入的还是发出的。
包过滤功能是所有的防火墙都具备的一个基本功能,实际上防火墙要完成的功能从根本上来说,就是要按照用户的要求来控制网络所流通的数据包,屏蔽那些无益的连接。
3.1VisualC++6.0
VisualC++6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。
VisualC++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。
虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用有很大的局限性,只适用于Windows2000、WindowsXP和WindowsNT4.0。
所以实际中,更多的是以VisualC++6.0为平台。
3.2VisualSourceSafe
版本控制是工作组软件开发中的重要方面,它能防止意外的文件丢失、允许反追踪到早期版本、并能对版本进行分支、合并和管理。
在软件开发和您需要比较两种版本的文件或找回早起版本的文件时,源代码的控制是非常有用的。
VisualSourceSafe可以同VisualBasic、VisualC++、VisualJ++、VisualInterDev、VisualFoxPro开发环境以及MicrosoftOffice应用程序集成在一起,提供了方便易用、面向项目的版本控制功能。
VisualSourceSafe可以处理有各种开发语言、创作工具或应用程序所创建的任何文件类型。
在提倡文件再使用的今天,用户可以同时在文件和项目级进行工作。
VisualSourceSafe面向项目的特性能更有效地管理工作组应用程序开发工作中的日常任务。
4.1需求分析
该防火墙的主要功能是实现包过滤,其他功能主要包括以下几个方面。
1.能设置过滤规则,包括:
IP地址、子网掩码、端口号、协议。
2.能添加删除规则。
3.能将过滤规则保存。
4.能对过滤规则进行安装和卸载操作,即:
将规则发送给IP过滤驱动或从IP过滤驱动中删除规则。
4.2设计思路
根据程序的需求来完成功能和模块化设计的思想,总体设计思路如下:
任何程序都必须具有和用户进行信息交互的功能,因此用户接口部必须考虑,根据功能要求,该部分应具备:
用户操作的功能菜单、能对过滤规则进行设置、显示规则界面、添加规则界面。
这样程序的功能米块应该有:
过滤规则添加删除功能模块,过滤规则显示功能模块,过滤规则存储功能模块,文件储存功能模块,安装卸载规则功能模块。
4.3功能模块构成
功能模块构成如图1。
4.4功能模块介绍
4.4.1过滤规则添加删除功能模块
包过滤防火墙要进行数据包过滤就需要按照用户定义的规则进行包过滤,该功能模块就是使用户能够添加或删除过滤规则。
过滤规则主要包括:
源IP地址、子网掩码、端口号,目的IP地址、子网掩码、端口号、协议,以及对符合该规则的数据包是放行还是阻止进行设置,然后将设置好的规则添加到存储功能模块。
4.4.2过滤规则显示功能模块
该功能用于显示用户添加的规则,能够对每一条规则进行删除、安装、卸载的操作,使防火墙过滤规则能够很详细的显示给用户。
4.4.3过滤规则存储功能模块
该功能用于存储用户添加的过滤规则,接受用户对每一条规则的操作,并按照用户的操作将规则进行处理。
如:
安装规则,则把用户选择的规则安装到IP过滤驱动,IP接受到此规则后按照此规则进行数据包过滤。
4.4.4文件存储功能模块
使用户添加的过滤规则能够保存成文件的形式方便储存,在用户添加规则后可以选择某一条规则进行保存,防火墙会将该规则保存为后缀名为.rul的文件,在下次打开防火墙的时候可以直接加载该规则。
4.4.5文件载入功能模块
相对于文件储存功能模块,该功能是实现用户可以导入一个后缀名为.rul的并且保存了有效规则的文件。
4.4.6安装卸载功能模块
防火墙要过滤数据包,就需要将IP过滤驱动按照定义的规则进行过滤。
用户通过添加规则将规则存储于防火墙的存储功能模块中,想要将规则发给IP过滤驱动,就需要对该规则进行安装。
安装和卸载的功能就是将过滤规则传给IP过滤驱动或是将已安装的规则从过滤驱动中删除。
4.4.7IP封包过滤驱动功能模块
该功能模块是整个包过滤防火墙的核心部分,IP封包过滤驱动能按照用户定义的规则对数据包做出阻止或是放行的选择。
5.1.1应用程序类CFireWallAPP.
每个MFC应用程序都必须包括一个从CWinApp派生的应用程序类,在本程序中的应用程序累就是CFireWallApp。
应用程序类构成了应用程序的主执行线程,它封装了一个Windows应用程序的初始化、运行和终止。
5.1.2主框架类CMainFrame
主框架类CMainFrame构成整个程序的框架,包括菜单、工具、按钮等。
它构成了程序功能的主框架。
下面列出了CMainFrame类中的主要方法和变量。
ClassCMainFrame:
publicCFrameWnd
{
protected;
BOOLInstalled;
//规则安装标志TRUE-已安装,FALSE-未安装
BOOLstarted;
//开始过滤的标志,TRUE-已开始,FALSE-未开始
TDriverfilterDriver;
//定义一个TDriver类的变量,
TDriveripFltDrv;
//
BOOLAddFilterToFw();
//AddFilterToFw完成将过滤钩子安装到防火墙的功能。
//{{AFX_MSG(CMainFrame)
afx_msgvoidOnAppExit();
//退出程序
afx_msgvoidOnButtonadd();
//添加规则按钮
afx_msgvoidOnButtondel();
//删除规则按钮
afx_msgvoidOnButtonstart();
//开始过滤按钮
afx_msgvoidOnButtonstop();
//停止过滤按钮
afx_msgvoidOnButtonInstall();
//安装规则
afx_msgvoidOnButtonuninstall();
//卸载规则
afx_msgvoidOnMenuAddRule();
//添加规则菜单
afx_msgvoidOnMenuDelRule();
//删除规则菜单
afx_msgvoidOnMenuInstallRules();
//安装菜单
afx_msgvoidOnMenuUninstallRules();
/