欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于Windows平台的个人防火墙设计Word格式文档下载.doc

    • 资源ID:1451474       资源大小:282.50KB        全文页数:30页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Windows平台的个人防火墙设计Word格式文档下载.doc

    1、DLL;Winsock 2 SPI;Network packets; Protocol packets目录论文总页数:25页1引言11.1课题背景与意义11.2设计实现的主体功能11.3本课题的研究方法12WINSOCK 2 SPI编程技术22.1WINSOCK 2 SPI基础22.2传输服务提供者23开发平台与开发工具24系统设计与模块划分34.1本课题要实现的具体功能34.2程序工作流程图34.3模块划分44.3.1模块划分原则44.3.2模块结构44.3.3模块接口定义54.4控管规则文件结构设计64.4.1控管规则文件需要存储的内容74.4.2控管规则文件结构84.5界面设计84.5.

    2、1制定界面风格84.5.2界面设计文档84.6编码规则125核心功能的代码实现125.1DLL的封包截获125.2DLL的访问控管165.2.1对服务提供者函数做管制的函数165.2.2封包处理函数175.2.3管制函数175.2.4设置函数206测试21结 论22参考文献22致 谢24声 明251 引言1.1 课题背景与意义目前,随着网络向各个领域的扩展,网络安全的重要性日益被人们所认知。ISP提供商担心网络被攻击,因为这种事情发生太频繁;使用网上交易的用户担心帐户密码被盗,因为窃取密码的工具比比皆是;软件公司担心源代码泄露,就连微软也没逃脱厄运。种种现象都表明网络安全越来越重要,这种事情随

    3、时都可能发生在我们自己身上。这也正是网络安全快速发展的原因。所以防火墙和防病毒软件格外的重要,也被现在的人们强烈的需要。1.2 设计实现的主体功能现在防火墙的花样与种类繁多,让人眼花缭乱。但是防火墙的主要功能是防止外部网络的攻击以达到保护主机的目的。我认为哪些未知的网络IP可能对主机产生攻击可能我们都不知道。只要试验过才知道。所以现在防火墙一般与防病毒软件配合使用。这样才能安全的保护主机。实现的主要的核心功能如下定义:1. 根据应用程序访问规则可对应用程序连网动作进行过滤;2. 对应用程序访问规则具有自学习功能;3. 可实时监控、监视网络活动。1.3 本课题的研究方法本课题由两大模块构成,分别

    4、为DLL模块和EXE模块。首先利用Winsock 2 SPI技术建立winsock钩子用来截获winsock调用从而拦截TCP/IP封包,并做相应处理。然后设置控管规则访问控制,通过控管规则的检查认证,确定socket连接是否允许通过。最后是TCP/IP的封包分析,利用TIP/IP的封包结构分析截获的数据,提取需要的数据。这些封装在DLL里面。EXE模块主要是用户页面的制作。这里介绍与DLL通信的地方。EXE中与DLL直接通信的小模块主要有两个。一个是完成应用程序初始化的类CPropertyApp,它继承自CWinApp,是EXE的入口,其实里面封装了WinMain函数;另一个是主窗口模块CM

    5、ainFrame,这个主窗口并不是EXE显示出来的那个属性页窗口,而是一个隐藏的窗口,它继承自CMrameWnd,是一个无模式窗口,他隐藏显示,充当接受机,用来接受DLL及其他模块发送过来的消息,然后对消息进行相应的处理。每一个连网的程序连网之前都会建立一个Socket连接。这时钩子程序就会起作用,把截获的底层服务进行“过滤”。及先调用自定义的函数再转给下层服务提供者函数。我就是在这一层实现封包过滤的。把规则与功能写到这一层。这一层的实现是本课题的核心。2 WINSOCK 2 SPI编程技术Winsock 2是Windows Sockets的2.0版本,在此之前的版本是1.1。与1.1版本相比

    6、,2.0版本引入了一种新的叫做SPI的编程接口。利用这种技术可以在Socket中插入一曾层,从而可以完成诸如扩展TCP/IP协议栈,网络安全控制等功能,所以这是一个非常强大而且有用的接口,下面介绍这种编程技术。2.1 WINSOCK 2 SPI基础Winsock是为上层应用程序提供的一种标准网络接口,上层应用程序不用关心Winsock实现的细节,它为上层应用程序提供透明的服务。Winsock 2 引入的一个新的功能就是打破服务提供者的透明,让开发者可以编写自己的服务提供者接口程序,即SPI程序。SPI以动态链接库的形式存在,它工作在应用层,为上层API调用接口函数。Winsock 2是一个接口

    7、,不是一个协议。作为接口,它只能发现和利用底层传输协议完成通信。自己编写的SPI程序安装到系统之后,所有的Winsock请求都会发送到这个程序并由它完成网络调用。由于系统提供的SPI已经可以完成网络传输功能,所以自己编写的SPI没有必要重新编写这部分功能。一般可以直接调用系统函数完成网络传输,这样工作的效果就是“钩子程序。Winsock 2 SPI除了有完成网络传输的传输服务提供者,还有提供友好名称服务的名字空间服务提供者。传输服务提供者能够提供建立通信、传输数据、流量控制和错误控制等服务。名字空间服务提供者把一个网络协议的地址属性和一个或多个用户友好名称关联起来,这样可以起用与协议无关的名字

    8、解析方案。2.2 传输服务提供者传输服务提供者又分为基础服务提供者和分层服务提供者。基础服务提供者和分层服务提供者都开放相同的SPI接口,所不同的是基础服务提供者位于提供者的最底层。所以编写基础服务提供者和分层服务提供者基本相同。但安装是却需要将基础服务提供者安装在服务提供者加载顺序链的最底端,而分层服务提供者则根据需要分布在顺序链的中间。3 开发平台与开发工具开发平台如题说明,以Windows平台为主,重点讨论开发工具的选择。根据不同的工程选择不同的开发工具,可以有效地提高工作效率。不同的开发工具各有各的优点同时又各有各的不足,在开发中要扬长避短。目前常用的Windows开发工具有VS 5.

    9、0/6.0、VS.net(包括VB、BC、VFP、VJ、C#等一组开发工具)、delphi、C+ Builder,JBuilder、PB等。在这些开发工具里面,VFP和PB一般用来专门开发数据库系统,它们具有灵活的数据库接口。VB和Delphi既可以方便地做出复杂的数据库管理系统,又能轻松地完成操作系统级的任务。最优秀的是很容易做出漂亮的界面。VC和Borland C+着重于系统编程,它们开放接口较多,也最为灵活,而且编译出的程序体积较小,所以比较适合做系统工具类软件。缺点是短时间不容易掌握。其中Borland 使用的VCL类库是为Delphi准备的,并不是真正用C+实现的。VJ、Jbuild

    10、er和Java语言主要面向互联网应用。最大的优势是跨平台。本课题为防火墙软件,较多的使用系统接口,而且界面简单。另外,防火墙主要传播渠道是互联网,这就要求体积应尽量的小,安装尽量方便。所以选择VC为开发工具。4 系统设计与模块划分4.1 本课题要实现的具体功能本设计实现的具体功能如下:1. 封包监视(1) 提供封包监视页面。(2) 提供清空监视列表,停止/开始监视及停止/开始滚动功能。2. 控管规则设置(1) 手工添加,删除及修改控管规则。(2) 自学习添加控管规则。(3) 控管规则中目的网络IP地址段的设置。(4) 提供控管规则设置页面。3. 封包过滤(1) DLL给出设置工作模式和设置控管

    11、规则的接口函数。工作模式分为3种形式:放行所有,拒绝所有和过滤。(2) DLL根据工作模式和控管规则对过往封包进行过滤。(3) DLL将通过的网络封包通知EXE取走 。4.2 程序工作流程图Winsock 2 SPI是一个DLL程序,它工作在API和DRIVER之间,为上层应用程序提供服务。EXE与DLL构成软件的主题,也是编写软件的主要工作。流程图如图1所示。模块1.1用户界面接口图1防火墙工作流程图4.3 模块划分4.3.1 模块划分原则模块划分是系统分析中非常重要的一部分,下面是模块划分时的基本原则。1. 独立性:让模块直接内的关系减到最少。理想的状态就是模块之间没有关系,但这种情况不符

    12、合现实。既然是同一个工程,模块之间自然都会存在一定的联系,只要想办法让模块之间的关系尽量简单就可以了。2. 接口简单化:让模块之间的接口尽量单纯、简单、易用。即让公用函数和公用变量尽量地少。3. 分层处理:吸取Windows操作系统对模块做分层处理的经验。建立一些中间模块,让两端的模块来完成相互调用的透明化。4. 容易合并:容易将划分的模块进行合并。例如将一个工程的各个功能模块分别设计成可执行文件,然后用一个总模块将这些模块关联起来组成一个工程。这种情况下,对模块独立性要求较高,模块之间几乎没有任何关系。5. 可测试性:尽量使每个模块都可以单独进行测试2。上面的5条是参考原则,既然是参考原则就

    13、不会完全执行,完全按照一个教条去执行真的很困难。只要在做模块划分的时候能经常记起这些原则,然后稍加注意就OK了。另外,在这5条原则中,第一条是根本,能把这一条做好,下面的一些就容易实现了。在做模块划分时一定要始终贯穿独立性的思想。4.3.2 模块结构根据4.1节的功能定义和4.2节的工作流程图,需要对模块做进一步细化,得出更详细的模块结构。这些模块结构是编程的蓝本,在编写代码的过程中,就要以这些结构为指导。1. 模块1.1:用户界面,4.5节详细说明。2. 模块1.2:EXE的安装模块,。建立CXInstall类,C+源文件Install.h和Install.cpp。安装函数InstallPr

    14、ovider和卸载函数RemoveProvider3. 模块1.3:EXE读写控管规则模块,建立CAclFile类,C+源文件File.h和File.cpp。读控管规则文件ReadAcl,保存控管规则文件SaveAcl,增加一条控管规则AddAcl和删除一条控管规则DelAcl。4. 模块1.4:EXE设置DLL的控管规则模块,设置控管规则单独的函数,调用模块1.3读写控管规则模块得到控管规则数据,调用DLL的函数FloControl设置DLL的控管规则。5. 模块1.5:EXE设置DLL的工作模式,设置工作模式单独的函数,调用模块1.3读写控管规则模块得到控管规则数据,调用DLL的函数Flo

    15、Control设置DLL的工作模式。6. 模块2.1:DLL封包过滤模块,有分为3块,2.1.1一组Winsock 2SPI钩子函数C+源文件TcpipDog.h和TcpipDog.cpp;模块2.1.2根据控管规则判断是否可以通行的类CCheckAcl,C+源文件CheckAcl.h和CheckAcl.cpp;模块2.1.3对网络数据包进行分析的类CProtocolInfo,C+源文件ProtocolInfo.h和ProtocolInfo.cpp。l 模块2.1.1:服务提供者函数模块,入口函数WSPSartup,发送询问消息到EXE,由EXE提供询问界面函数QueryAccess。截获的8

    16、个服务提供者函数。设置工作模式、控管规则等设备工作接口函数FloControl。l 模块2.1.2:访问控管模块,通过检查工作模式和控管规则得到是否放行的函数GerAccessInfo。l 模块2.1.3:协议解析模块,得到协议信息处理函数GetProtocolInfo 7. 模块2.2:DLL更改控管规则模块,设置DLL控管规则数据SetAcl,设置控管规则m_Aclfile,设置工作模式m_iWorkMode。8. 模块2.3:DLL更改工作模式模块,设置DLL工作模式函数SetWorkMode。4.3.3 模块接口定义模块之间接口有3种方式:1. 函数接口函数接口是最常用而且独立性和封装

    17、性最好的接口方式。函数之间通过参数传递进行模块之间的通信,处理过程保持相互独立,函数处理完成把处理结果返回到调用模块。如果每个函数都有单独的接口,那么,函数多了,接口也就多了,也就越来越复杂了。C+利用类的饿概念解决这个问题。类可以将一组函数和变量封装起来,这样就将许许多多的函数转化成一个对象的形式。外部模块使用这个类的实例来引用封装在里面的成员函数个变量。把功能相似、相关的函数分成一组,然后封装在一起,使接口间的关系清晰了很多。类的成员函数和成员变量有公有和私有之分。对于公有函数和变量,外部模块可以直接调用;对于私有函数和变量,外部模块则不能直接调用。利用这种特性,可以把一些只在类里面使用的

    18、函数定义为私有函数;把外部模块需要直接调用的函数定义为公有函数。类似于DLL的导出函数(Export),这样,模块之间的直接接触就会进一步减小,独立性更进一步增加。2. 全局变量接口全局变量接口是一种不提倡的方式。虽然它使用起来确实很过瘾。全局变量多了非常容易出问题。任何地方都可能会对全局变量进行赋值,变量的可控性大大降低,不知道什么时候变量的值就被莫名其妙地改掉了。当然,只要不被那些模块执行的先后顺序和循环语句弄昏头,还是可以使用全局变量的。虽然不提倡使用,但是有些地方使用全局变量与是不可避免的,而且有时候可以减少很多麻烦。使用全局变量的时候需要注意一点,读取变量的多少和位置对程序稳定性的影

    19、响并不很大,关键是尽量让赋值的地方单一,改变变量的次数和位置应尽量得到控制。3. Windows消息接口Windows消息接口是一种特殊的接口形式,它是基于Windows操作系统的消息机制。这种接口形式适合于应用程序之间。应用程序是相对独立的模块,如果这两个模块需要通信,则消息接口就是一种理想型的选择。这种接口类似于函数接口,只不过通过操作系统的消息机制来中转一下。Windows消息接口也是一种接口方式,特别是DLL和EXE之间经常用到。在DLL与EXE之间通信使用消息是一种优势,多个应用程序虽然调用同一个DLL,但是它们都拥有独立的模块副本。这时候如果这些模块副本都需要让同一个应用程序做一件

    20、事时,就不好处理,因为DLL的重要性和应用程序保护机制导致这些模块副本无法直接调用同一个应用程序的执行模块。这时候就可以通过消息的方式来解决。发送消息是基于窗口句柄的,只要得到这个窗口句柄,不同的DLL副本都向同一个窗口句柄发送消息,自然所有的消息都可以被同一个应用程序接收。以上3种接口方式以函数接口为优先进行考虑,以增强模块的独立性和可读性。4.4 控管规则文件结构设计控管规则文件用来存储控管规则数据,命名为acl.cfg;该数据文件为二进制文件。4.4.1 控管规则文件需要存储的内容控管规则文件需要存储的内容如下:(1) 系统设置(2) 控管设置(3) 控管规则附加数据,授权访问的远端网络

    21、IP地址记录1. 控管规则记录结构控管规则记录结构说明(1) 规则编号字段是控管规则的唯一性编号。保留字段,没有使用。(2) 应用程序名称及路径字段用来保持应用程序的名称和路径。(3) 远端网络类型,数值的含义如下。0:表示所有网络1:局域网2:约束的网络(自定义)3:信任的网络(自定义)4:自定义的网络(自定义)(4) 管制动作,数值的含义如下。放行拒绝(5) 进出方向,数值的含义如下。出入双向(6) 服务类型,数值的含义如下。全部TCP(端口为任意,可编辑)UDP(端口为任意,可编辑)FTP(端口为21,不可编辑)TELNET(端口为23,不可编辑)5:HTTP(端口为任意,可编辑)6:N

    22、NTP(端口为119,不可编辑)7:POP3(端口为110,不可编辑)8:SMTP(端口为25,不可编辑)(7) 服务端口,数值的含义如下。表示全部其他值:表示端口值2. 授权访问的远端IP地址记录结构授权访问的远端网络IP地址结构如表1所示。表1 授权访问的远端网络IP地址段记录结构 字段 类型 长度 开始IP 无符号长整型 4 结束IP无符号长整型4.4.2 控管规则文件结构根据需要存储的内容将控管规则文件划分为3段。文件头用来存储系统设置,IP地址范围记录和控管规则记录的地址偏移量及其他信息;IP地址范围记录存储区用来存储IP地址范围记录;控管规则记录存储区用来存储控管规则记录。1. 控

    23、管规则结构控管规则结构如表2所示。表2 控管规则记录结构表8162432404856控管规则编号应用程序路径和名称远端网络动作方向服务类型端口2. IP地址结构IP地址段记录结构如表3所示。表3 IP地址段记录结构表开始IP地址结束IP地址4.5 界面设计4.5.1 制定界面风格界面上反映的功能有:封包监视、控管规则设置。这是两个平行的功能,所以选用Windows的属性页。4.5.2 界面设计文档界面设计如下所示。1. 封包监视界面封包监视界面用来显示截获的网络封包。每个网络封包的具体内容根据实际需要而定。如图2。图2 封包监视界面封包的字段有:(1) 应用程序路径和名称(2) 管制动作(放行或拒绝)(3) 访问起始/结束时间(4) 使用网络协议(5) 进/出流量(6) 本地和远端IP地址/端口(7) 备注信息封包监视界面实时接收DLL发送过来的网络封包并立刻显示。在封包监视界面上设计了几个附加按钮。“停止/开始滚动”用来设置监视列表是否自动滚动;“开始/停止监视”用来设置是否实时监视;“清除”按钮用来清除当前列表。这些功能按钮方面操作。 2. 控管规则界面控管规则界面用来显示和设置控管规则(如图3)。需要说明的是,应用程序设置的优先级高于控管规则设


    注意事项

    本文(基于Windows平台的个人防火墙设计Word格式文档下载.doc)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开