基于Windows平台的个人防火墙设计资料.docx
《基于Windows平台的个人防火墙设计资料.docx》由会员分享,可在线阅读,更多相关《基于Windows平台的个人防火墙设计资料.docx(43页珍藏版)》请在冰豆网上搜索。
![基于Windows平台的个人防火墙设计资料.docx](https://file1.bdocx.com/fileroot1/2023-4/1/f4593068-9971-4f39-84ea-ed2bf8901aa2/f4593068-9971-4f39-84ea-ed2bf8901aa21.gif)
基于Windows平台的个人防火墙设计资料
分类号:
TP311.1
UDC
:
D10621-408-(2007)5914-0
密级:
公开
编号:
2003032050
成都信息工程学院
学位论文
基于Windows平台下的个人防火墙设计
论文作者姓名:
李涵
申请学位专业:
网络工程
申请学位类别:
工学学士
指导教师姓名(职称):
刘嘉勇(教授)
论文提交日期:
2007年6月5日
基于Windows平台下的个人防火墙设计
摘要
网络安全问题长期威胁着网络终端用户,需要有有效的安全工具解决这个问
题,个人防火墙就是其中的一种常用的安全工具。
为了实现个人防火墙软件,选
用VC++6.0开发工具。
软件系统主要包括两项工程,一是核心模块设计,即DLL
工程,实现了封包截获、管制动作和协议封包的解析任务,主要利用Winsock2SPI技术实现网络封包截获,之后利用控管规则对过往封包进行合法性检查和过
滤,方法是首先利用Winsock2SPI技术建立winsock钩子,用它来截获winsock的调用,然后作出相应动作处理,动作处理需通过控管规则的检查后,确定socket
连接是否允许通过,其中控管规则由用户层设置;二是用户模块设计,即EXE工程,实现用户界面和负责与DLL模块的通信,提供了3个主要界面,即封包监视、控管规则、控管规则设置。
最后通过测试和应用,基本解决了终端用户的网络连接安全问题。
关键词:
过滤;动态连接库;Winsock2SPI;网络封包;协议封包
TheDesignofthePersonalFirewallBasedonWindows
Abstract
Theterminalusersofnetworkarealwaysthreatenbytheproblemsofsecurityofnetwork,soweneedaeffectivetooltosolvethisproblem.Thepersonalfirewallisoneofthecommontoolsofsecurity.VC++isselectedtoimplementthepersonalfirewall.Thesystemhastwoprojectsmainly.OneoftheprojectsisthedesignofcoremodulewhichcanbecalledtheprojectofDLL.Thisprojectimplementsbehaviorsofmanagementandtheanalysisofpacketsofprotocols.ThetechnologyofWinsock2SPIisusedtocaptureofpakcetsofnetwork.Afterthat,thenthecheckingandfilteringofthepacketsaredoneusingtherulesofcontrolandmanagement.Atthebeginning,thecontrolrulesbuilduptheHookofwinsockwhichisusedtocapturethetranferofwinsock,andthenitimplementsrelativebehaviors.Thelinkofsocketwillbeornotgetthroughcheckingbytherulesofcontrolandmanagement.Therulesofcontrolandmanagementaresetbythelayerofuser.Then,weshoulddesignthemoduleofuserwhichcanbecalledtheprojectofexe.ItimplementstheinterfaceofuserandthemoduleofcommunicationwithDLL.Itprovidesthreemaininterfaces,theyarethewatchingoffilteringpacket,therulesofcontrolandmanagementandthesettingofrulesofcontrolandmanagement.Finally,ithassolvedtherequirementofsecurityofterminalusersafterthefinaltestingandapplication.
Keywords:
Filter;DLL;Winsock2SPI;Networkpackets;Protocolpackets
论文总页数:
25页
1
引言
...........................................................................................................................................
1
1.1
课题背景与意义...............................................................................................................
1
1.2
设计实现的主体功能.......................................................................................................
1
1.3
本课题的研究方法...........................................................................................................
1
2WINSOCK2SPI编程技术........................................................................................................
2
2.1
WINSOCK2SPI基础.........................................................................................................
2
2.2
传输服务提供者...............................................................................................................
2
3
开发平台与开发工具...............................................................................................................
2
4
系统设计与模块划分...............................................................................................................
3
4.1
本课题要实现的具体功能...............................................................................................
3
4.2
程序工作流程图...............................................................................................................
3
4.3
模块划分...........................................................................................................................
4
4.3.1
模块划分原则...........................................................................................................
4
4.3.2
模块结构...................................................................................................................
4
4.3.3
模块接口定义...........................................................................................................
5
4.4
控管规则文件结构设计...................................................................................................
6
4.4.1
控管规则文件需要存储的内容...............................................................................
7
4.4.2
控管规则文件结构...................................................................................................
8
4.5
界面设计...........................................................................................................................
8
4.5.1
制定界面风格...........................................................................................................
8
4.5.2
界面设计文档...........................................................................................................
8
4.6
编码规则.........................................................................................................................
12
5
核心功能的代码实现.............................................................................................................
12
5.1
DLL的封包截获..............................................................................................................
12
5.2
DLL的访问控管..............................................................................................................
16
5.2.1
对服务提供者函数做管制的函数
.........................................................................16
5.2.2
封包处理函数.........................................................................................................
17
5.2.3
管制函数.................................................................................................................
17
5.2.4
设置函数.................................................................................................................
20
6
测试
.........................................................................................................................................
21
结
论
.........................................................................................................................................
22
参考文献
.........................................................................................................................................
22
致谢24
声明25
1引言
1.1课题背景与意义
目前,随着网络向各个领域的扩展,网络安全的重要性日益被人们所认知。
ISP提供商担心网络被攻击,因为这种事情发生太频繁;使用网上交易的用户担
心帐户密码被盗,因为窃取密码的工具比比皆是;软件公司担心源代码泄露,就连微软也没逃脱厄运。
种种现象都表明网络安全越来越重要,这种事情随时都可能发生在我们自己身上。
这也正是网络安全快速发展的原因。
所以防火墙和防病毒软件格外的重要,也被现在的人们强烈的需要。
1.2设计实现的主体功能
现在防火墙的花样与种类繁多,让人眼花缭乱。
但是防火墙的主要功能是防
止外部网络的攻击以达到保护主机的目的。
我认为哪些未知的网络IP可能对主机产生攻击可能我们都不知道。
只要试验过才知道。
所以现在防火墙一般与防病毒软件配合使用。
这样才能安全的保护主机。
实现的主要的核心功能如下定义:
1.根据应用程序访问规则可对应用程序连网动作进行过滤;
2.对应用程序访问规则具有自学习功能;
3.可实时监控、监视网络活动。
1.3本课题的研究方法
本课题由两大模块构成,分别为DLL模块和EXE模块。
首先利用Winsock2SPI技术建立winsock钩子用来截获winsock调用从而拦截TCP/IP封包,并做相应处理。
然后设置控管规则访问控制,通过控管规则
的检查认证,确定socket连接是否允许通过。
最后是TCP/IP的封包分析,利用
TIP/IP的封包结构分析截获的数据,提取需要的数据。
这些封装在DLL里面。
EXE模块主要是用户页面的制作。
这里介绍与DLL通信的地方。
EXE中与DLL
直接通信的小模块主要有两个。
一个是完成应用程序初始化的类CPropertyApp,
它继承自CWinApp,是EXE的入口,其实里面封装了WinMain函数;另一个是主
窗口模块CMainFrame,这个主窗口并不是EXE显示出来的那个属性页窗口,而
是一个隐藏的窗口,它继承自CMrameWnd,是一个无模式窗口,他隐藏显示,充
当接受机,用来接受DLL及其他模块发送过来的消息,然后对消息进行相应的处
理。
每一个连网的程序连网之前都会建立一个Socket连接。
这时钩子程序就会起作用,把截获的底层服务进行“过滤”。
及先调用自定义的函数再转给下层服
务提供者函数。
我就是在这一层实现封包过滤的。
把规则与功能写到这一层。
这
第1页共25页
一层的实现是本课题的核心。
2WINSOCK2SPI编程技术
Winsock2是WindowsSockets的2.0版本,在此之前的版本是1.1。
与1.1
版本相比,2.0版本引入了一种新的叫做SPI的编程接口。
利用这种技术可以在
Socket中插入一曾层,从而可以完成诸如扩展TCP/IP协议栈,网络安全控制等
功能,所以这是一个非常强大而且有用的接口,下面介绍这种编程技术。
2.1WINSOCK2SPI基础
Winsock是为上层应用程序提供的一种标准网络接口,上层应用程序不用关
心Winsock实现的细节,它为上层应用程序提供透明的服务。
Winsock2引入的一个新的功能就是打破服务提供者的透明,让开发者可以
编写自己的服务提供者接口程序,即SPI程序。
SPI以动态链接库的形式存在,它工作在应用层,为上层API调用接口函数。
Winsock2是一个接口,不是一个协议。
作为接口,它只能发现和利用底层传输协议完成通信。
自己编写的SPI程序安装到系统之后,所有的Winsock请求都会发送到这个程序并由它完成网络调用。
由于系统提供的SPI已经可以完成网络传输功能,所以自己编写的SPI没有必要重新编写这部分功能。
一般可以直接调用系统函数完成网络传输,这样工作的效果就是“钩子程序。
Winsock2SPI除了有完成网络传输的传输服务提供者,还有提供友好名称
服务的名字空间服务提供者。
传输服务提供者能够提供建立通信、传输数据、流
量控制和错误控制等服务。
名字空间服务提供者把一个网络协议的地址属性和一个或多个用户友好名称关联起来,这样可以起用与协议无关的名字解析方案。
2.2传输服务提供者
传输服务提供者又分为基础服务提供者和分层服务提供者。
基础服务提供者和分层服务提供者都开放相同的SPI接口,所不同的是基础服务提供者位于提供者的最底层。
所以编写基础服务提供者和分层服务提供者基本相同。
但安装是却需要将基础服务提供者安装在服务提供者加载顺序链的最底端,而分层服务提供者则根据需要分布在顺序链的中间。
3开发平台与开发工具
开发平台如题说明,以Windows平台为主,重点讨论开发工具的选择。
根据不同的工程选择不同的开发工具,可以有效地提高工作效率。
不同的开
发工具各有各的优点同时又各有各的不足,在开发中要扬长避短。
目前常用的Windows开发工具有VS5.0/6.0、VS.net(包括VB、BC、VFP、
VJ、C#等一组开发工具)、delphi、C++Builder,JBuilder、PB等。
在这些开发工具里面,VFP和PB一般用来专门开发数据库系统,它们具有
第2页共25页
灵活的数据库接口。
VB和Delphi既可以方便地做出复杂的数据库管理系统,又能轻松地完成操
作系统级的任务。
最优秀的是很容易做出漂亮的界面。
VC和BorlandC++着重于系统编程,它们开放接口较多,也最为灵活,而且编译出的程序体积较小,所以比较适合做系统工具类软件。
缺点是短时间不容易掌握。
其中Borland使用的VCL类库是为Delphi准备的,并不是真正用C++实现的。
VJ、Jbuilder和Java语言主要面向互联网应用。
最大的优势是跨平台。
本课题为防火墙软件,较多的使用系统接口,而且界面简单。
另外,防火墙
主要传播渠道是互联网,这就要求体积应尽量的小,安装尽量方便。
所以选择
VC为开发工具。
4系统设计与模块划分
4.1本课题要实现的具体功能
本设计实现的具体功能如下:
1.封包监视
(1)提供封包监视页面。
(2)提供清空监视列表,停止/开始监视及停止/开始滚动功能。
2.控管规则设置
(1)手工添加,删除及修改控管规则。
(2)自学习添加控管规则。
(3)控管规则中目的网络IP地址段的设置。
(4)提供控管规则设置页面。
3.封包过滤
(1)DLL给出设置工作模式和设置控管规则的接口函数。
工作模式分为3
种形式:
放行所有,拒绝所有和过滤。
(2)DLL根据工作模式和控管规则对过往封包进行过滤。
(3)DLL将通过的网络封包通知EXE取走。
4.2程序工作流程图
Winsock2SPI是一个DLL程序,它工作在API和DRIVER之间,为上层应用程序提供服务。
EXE与DLL构成软件的主题,也是编写软件的主要工作。
流程图如图1所示。
第3页共25页
用户界面(EXE)
模块1.1
户界面接口
模块1.2安装
模块1.1
用户界面接口
模块1.1.1控管规则
模块1.3
读写控管
控管规则文件
输入界面接口
规则
(.cfg)
Winsock2SPI
模块1.1.2封包监
(DLL)
模块1.4
设置控管
模块2.2控
模块
视界面接口
规则
管规则
2.1
封
包
模块1.5
设置工作
模块2.3工
过
模式
作模式
滤
图1防火墙工作流程图
4.3模块划分
4.3.1模块划分原则
模块划分是系统分析中非常