H2003032050_李涵_基于Windows平台的个人防火墙设计.doc
【精品】VC++基于Windows平台的个人防火墙设计(源代码+论文)
收藏
资源目录
压缩包内文档预览:(预览前20页/共30页)
编号:1639461
类型:共享资源
大小:302.89KB
格式:RAR
上传时间:2017-08-30
上传人:机****料
认证信息
个人认证
高**(实名认证)
河南
IP属地:河南
50
积分
- 关 键 词:
-
精品
vc
基于
windows
平台
个人防火墙
设计
源代码
论文
- 资源描述:
-
【精品】VC++基于Windows平台的个人防火墙设计(源代码+论文),精品,vc,基于,windows,平台,个人防火墙,设计,源代码,论文
- 内容简介:
-
分类号: U D C: 007)5914 级:公 开 编 号: 2003032050 成 都 信 息 工 程 学 院 学 位 论 文 基于 台下的 个人防火墙设计 论 文 作 者 姓 名 : 李涵 申 请 学 位 专 业 : 网络 工程 申 请 学 位 类 别 : 工学 学士 指导教师姓名(职称): 刘嘉勇(教授) 论 文 提 交 日 期 : 2007 年 6 月 5 日 基于 台下的 个人 防火墙设计 摘 要 网络安全问题长期威胁着网络终端用户,需要有有效的安全工具解决这个问题,个人防火墙就是其中的一种常用的安全工具。为了实现个人防火墙软件,选用 件系统主要包括两项工程 ,一是核心模块设计,即 现了 封包截获、 管制动作和协议封包的解析任务 , 主要利用 后利用控管规则对过往封包进行合法性检查和过滤,方法是首先利用 它来截获 然后作出相应动作处理,动作处 理需通过控管规则的检查后,确定 中控管规则由用户层设置;二是用户模块设计,即 现用户界面和负责与 供了 3个主要界面,即封包监视、控管规则、控管规则设置。最后通过测试和应用,基本 解决 了终端用户的网络连接安全问题。 关键词: 过滤 ; 动态连接库 ; 络封包;协议封包 of he of by of of so we a to is of of is to of is of be of of of is to of of of of At up of is to of it of be or by of of by of we of be of It of of It of of of of it of of 目录 论文 总 页数: 25页 1 引言 . 1 题背景与意义 . 1 计实现的主体功能 . 1 课题的研究方法 . 1 2 . 2 础 . 2 输服务提供者 . 2 3 开发平台与开发工具 . 2 4 系统设计与模块划分 . 3 课题要实现的具体功能 . 3 序工作流程图 . 3 块划分 . 4 块划分原则 . 4 块结构 . 4 块接口定义 . 5 管规则文件结构设计 . 6 管规则文件需要存储的内容 . 7 管规则文件结构 . 8 面设计 . 8 定界面风格 . 8 面设计文档 . 8 码规则 . 12 5 核心功能的代码实现 . 12 封包截获 . 12 访问控管 . 16 服务提供者函数做管制的函数 . 16 包处理函数 . 17 制函数 . 17 置函数 . 20 6 测试 . 21 结 论 . 22 参考文献 . 22 致 谢 . 24 声 明 . 25 第 1 页 共 25 页 1 引言 题背景 与意义 目前, 随着网络向各个领域的扩展,网络安全的重要性日益被人们所认知。被攻击,因为这种事情发生太频繁;使用网上交易的用户担心帐户密码被盗,因为窃取密码的工具比比皆是;软件公司 担心源代码泄露,就连微软也没逃脱厄运。种种现象都表明网络安全越来越重要,这种事情随时都可能发生在我们自己身上。这也正是网络安全快速发展的原因。 所以防火墙和防病毒软件格外的重要 , 也被现在的人们强烈的需要。 计实现的主体功能 现在防火墙的花样与种类繁多,让人眼花缭乱。但是防火墙的主要功能是防止外部网络的攻击以达到保护主机的目的。我认为哪些未知的网络 能对主机产生攻击可能我们都不知道。只要试验过才知道。所以现在防火墙一般与防病毒软件配合使用。这样才能安全的保护主机。 实现的主要的核心功能如下定义: 1. 根据应用 程序访问规则可对应用程序连网动作进行过滤; 2. 对应用程序访问规则具有自学习功能; 3. 可实时监控、监视网络活 动 。 课题的研究方法 本课题由两大模块构成, 分别为 首先利用 术建立 子用来截获 P 封包,并做相应处理。然后设置控管规则访问控制,通过控管规则的检查认证,确定 接是否允许通过。最后是 用取需要的数据。这些封装在 面。 要是用户页面的制作。这里介绍与 个是完成应用程序初始化的类 继承自 实里面封装了 一个是主窗口模块 个主窗口并不是 示出来的那个属性页窗口,而是一个隐藏的窗口,它继承自 一个无模式窗口,他隐藏显示,充当接受机,用来接受 其他模块发送过来的消息,然后对消息进行相应的处理。 每一个连网的程序连网之前都会建立一个 接。这时钩子程序就会起作用,把截获的底层服务进行“过滤”。及先调用自定义的函数再转给下层服务提供者函数。我就是在这一层实现封包过滤的。把规则与功能写到这一层。这一层的实现是本课题的核心。 第 2 页 共 25 页 2 程技术 是 此之前的版本是 用这种技术可以在而可以完成诸如扩展 络安全控制等功能,所以这是一个非常强大而且有 用的接口,下面介绍这种编程技术。 层应用程序不用关心 为上层应用程序提供透明的服务。 引入的一个新的功能就是打破服务提供者的透明,让开发者可以编写自己的服务提供者接口程序,即 工作在应用层,为上层 是一个接口,不是一个协议。作为接口,它只能发现和利用底层传输协议完成通信。 自己编写的 序安装到 系统之后,所有的 于系统提供的 经可以完成网络传输功能,所以 自己编写的 般可以直接调用系统函数完成网络传输,这样工作的效果就是“钩子程序。 有提供友好名称服务的名字空间服务提供者。传输服务提供者能够提供建立通信、传输数据、流量控制和错误控制等服务。名字空间服务提供者把一个网络协议的地址属性和一个或多个用户友好名称关联起来,这样可以起用与协议无关的名字 解析方案。 输服务提供者 传输 服务提供者又分为基础服务提供者和分层服务提供者 。 基础服务提供者和分层服务提供者都开放相同的 所不同的是基础服务提供者位于提供者的最底层。所以编写基础服务提供者和分层服务提供者基本相同。但安装是却需要将基础服务提供者安装在服务提供者加载顺序链的最底端,而分层服务提供者则根据需要分布在顺序链的中间。 3 开发平台与 开发工具 开发平台如题 说明 , 以 主, 重点讨论开发工具的选择。 根据不同的工程选择不同的开发工具,可以有效地提高工作效率。不同的开发工具各有各的优 点同时又各有各的不足,在开发中要扬长避短。 目前常用的 发工具有 括 J、 C#等一组开发工具)、 C+ 在这些开发工具里面, 般用来专门开发数据库系统,它们具有灵活的数据库接口。 第 3 页 共 25 页 能轻松地完成操作系统级的任务。最优秀的是很容易做出漂亮的界面 。 +着重于系统编程,它们开放接口较多,也最为灵 活,而且编译出的程序体积较小,所以比较适合做系统工具类软件。缺点是短时间不容易掌握。其中 用的 库是为 备的,并不是真正用 C+实现的。 大的优势是跨平台。 本课题为防火墙软件,较多的使用系统 接口 ,而且界面简单。另外,防火墙主要传播渠道是互联网,这就要求体积应尽量的小,安装尽量 方便 。所以选择 4 系统设计与模块划分 课题要实现的具体功能 本设计实现的具体功能如下: 1. 封包监视 ( 1) 提供封包监视页面。 ( 2) 提供清空 监视列表,停止 /开始监视及停止 /开始滚动功能。 2. 控管规则设置 ( 1) 手工添加,删除及修改控管规则。 ( 2) 自学习添加控管规则。 ( 3) 控管规则中目的网络 ( 4) 提供控管规则设置页面。 3. 封包过滤 ( 1) 出设置工作模式和设置控管规则的接口函数。工作模式分为 3种形式:放行所有,拒绝所有和过滤。 ( 2) ( 3) 。 序工作流程图 一个 序,它工作在 间,为上层应用程序提供服务。 软件的主题,也是编写软件的主要工作。 流程图如图 1所示 。 第 4 页 共 25 页 模 块 1 . 1 . 1 控 管 规 则输 入 界 面 接 口模 块 1 . 1 . 2 封 包 监视 界 面 接 口模 块 1 . 3 读 写 控 管规 则模 块 1 . 4 设 置 控 管规 则模 块 1 . 5 设 置 工 作模 式控 管 规 则 文 件( . c f g )模 块 2 . 2 控管 规 则模 块 2 . 3 工作 模 式用 户 界 面 ( E X E )模 块 1 . 2 安 装W i n s o c k 2 S P I( D L L )模 块2 . 1 封包过滤模 块1 . 1 用 户 界 面 接 口图 1防火墙工作流程图 块划分 块划分原则 模块划分 是系统分析中非常重要的一部分,下面是模块划分时的基本原则。 1. 独立 性:让模块直接内的关系减到最少。理想的状态就是模块之间没有关系 ,但这种情况不符合现实。既然是同一个工程,模块之间自然都会存在一定的联系,只要想办法让模块之间的关系尽量简单就可以了。 2. 接口简单化:让模块之间的接口尽量单纯、简单、易用。即让公用函数和公用变量尽量地少。 3. 分层处理 :吸取 立一些中间模块,让两端的模块来完成相互调用的透明化。 4. 容易合并:容易将划分的模块进行合并。例如将一个工程的各个功能模块分别设计成可执行文件,然后用一个总模块将这些模块关联起来组成一个工程。这种情况下,对模块独立性要求较高,模块之间几乎没有任何关系。 5. 可测试性 :尽量使每个模块都可以单独进行测试 2。 上面的 5条是参考原则 , 既然是参考原则就不会完全执行 , 完全按照一个教条去执行真的很困难。只要在做模块划分的时候能经常记起这些原则,然后稍加注意就 。另外, 在这 5 条原则中,第一条是根本,能把这一条做好,下面的一些就容易实现了。在做模块划分时一定要始终贯穿独立性的思想。 块结构 根据 要对模块做进一步细化,得出更详细的模块结构。这些模块结构是编程的蓝本,在编写代码的过程中,就模块 户界面接口 第 5 页 共 25 页 要以这些结构 为指导。 1. 模块 户界面 , 2. 模块 安装模块 , 。建立 , C+源文件 装函数 . 模块 写控管规则模块 , 建立 C+源文件 控管规则文件 存控管规则文件 加一条控管规则 4. 模块 置 控管规则模块 , 设置控管规则单独的函数 ,调用模块 调用 5. 模块 置 工作模式 , 设置工作模式单独的函数 , 调用模块 写控管规则模块得到控 管规则数据 , 调用 函数 置 6. 模块 包过滤模块 , 有分为 3 块 , 组 +源文件 块 据控管规则判断是否可以通行的类 C+源文件 网络数据包进行分析的类 C+源文件 模块 务 提供者函数模块 , 入口函数 送询问消息到 获的 8个服务提供者函数。设置工作模式、控管规则等设备工作 接口 函数 模块 问控管模块 , 通过检查工作模式和控管规则得到是否放行的函数 模块 议解析模块 , 得到协议信息处理函数 7. 模块 改控管规则模块 , 设置 管规则数据 置控管规则 置工作模式 8. 模块 改工作模式模块 , 设置 块接口定义 模块之间接口有 3种方式: 1. 函数接口 函数接口是最常用而且独立性和封装性最好的接口方式。函数之间通过参数传递进行模块之间的通信,处理过程保持相互独立,函数处理完成把处理结果返回到调用模块。如果每个函数都有单独的 接口 ,那么,函数多了,接口也就多了,也就越来越复杂了。 C+利用类的饿概念解决这个问题。类可以将一组函数和变第 6 页 共 25 页 量封装起来,这样就将许许多多的函数转化成一个对象的形式。外部模块使用这个类的 实例来引用封装在里面的成员函数个变量。把功能相似、相关的函数分成一组,然后封装在一起,使接口间的关系清晰了很多。类的成员函数和成员变量有公有和私有之分。对于公有函数和变量,外部模块可以直接调用;对于私有函数和变量,外部模块则不能直接调用。利用这种特性,可以把一些只在类里面使用的函数定义为私有函数;把外部模块需要直接调用的函数定义为公有函数 。类似于 导出函数( 这样,模块之间的直接接触就会进一步减小,独立性更进一步增加。 2. 全局变量接口 全局变量接口是一种不提倡的方式。虽然它使用起来确实很过 瘾。全局变量多了非常容易出问题。任何地方都可能会对全局变量进行赋值,变量的可控性大大降低,不知道什么时候变量的值就被莫名其妙地改掉了。当然,只要不被那些模块执行的先后顺序和循环语句弄昏头,还是可以使用全局变量的。虽然不提倡使用,但是有些地方使用全局变量与是不可避免的,而且有时候可以减少很多麻烦。使用全局变量的时候需要注意一点,读取变量的多少和位置对程序稳定性的影响并不很大,关键是尽量让赋值的地方单一,改变变量的次数和位置应尽量得到控制。 3. 是基于 种接口形式适合于应用程序之间。应用程序是相对独立的模块,如果这两个模块需要通信,则消息接口就是一种理想型的选择。这种接口类似于函数接口,只不过通过操作系统的消息机制来中转一下 。 别是 个应用程序虽然调用同一个 是它们都拥有独立的模块副本。这时候如果这些模块副本都需要让同一个应用程序做一件事时,就不好处理,因为 重要性和应用程序保护机制导致这些 模块副本无法直接调用同一个应用程序的执行模块。这时候就可以通过消息的方式来解决。发送消息是基于窗口句柄的,只要得到这个窗口句柄,不同的 本都向同一个窗口句柄发送消息,自然所有的消息都可以被同一个应用程序接收。 以上 3种接口方式以函数接口为优先进行考虑,以增强模块的独立性和可读性。 管规则文件结构设计 控管规则文件用来存储控管规则数据 ,命名为 数据文件为二进制文件。 第 7 页 共 25 页 管规则文件需要存储的内容 控管规则文件需要存储的内容如下: ( 1) 系统设置 ( 2) 控管设置 ( 3) 控管规则附加数据,授权访问的远端网络 1. 控管规则记录结构 控管规则记录结构说明 ( 1) 规则编号字段是控管规则的唯 一性编号。保留字段,没有使用。 ( 2) 应用程序名称及路径字段用来保持应用程序的名称和路径。 ( 3) 远端网络类型,数值的含义如下 。 0:表示所有网络 1: 局域网 2:约束的网络(自定义) 3:信任的网络(自定义) 4:自定义的网络(自定义) ( 4) 管制动作,数值的含义如下。 0:放行 1:拒绝 ( 5) 进出方向,数值的含义如下。 0:出 1:入 2: 双向 ( 6) 服务类型,数值的含义如下。 0:全部 1: 口为任意,可编辑) 2: 口为任意,可编辑) 3: 口为 21,不可编辑) 4: 口为 23,不可编辑) 5: 口为任意,可编辑) 6: 口为 119,不可编辑) 7: 口为 110,不可编辑) 8: 口为 25,不可编辑) ( 7) 服务端口,数值的含义如下。 0:表示全部 第 8 页 共 25 页 其他值:表示端口值 2. 授权访问的远端 授权访问 的远端网络 所示。 表 1 授权访问的远端网络 字段 类型 长度 开始 无符号长整型 4 结束 符号长整型 4 管规则文件结构 根据需要 存储的内容将控管规则文件划分为 3段。 文件头用来存储系统设置, 址范围记录和控管规则记录的地址偏移量及其他信息; 管规则记录存储区用来存储控管规则记录。 1. 控管规则结构 控管规则结构如表 2所示。 表 2 控管规则记录结构表 0 8 16 24 32 40 48 56 控管规则编号 应用程序路径和名称 远端网络 动作 方向 服务类型 端口 2. 址结构 记录 结构如表 3所示 。 表 3 址段记录结构表 0 8 16 24 32 40 48 56 开始 址 结束 址 开始 址 结束 址 面设计 定界面风格 界面上反映的功能有: 封包监视、控管规则设置。这是两个平行的功能, 所以选 用 面设计文档 界面设计如下所示。 1. 封包监视界面 封包监视界面用来显示截获的网络封包。每个网络封包的具体内容根据实际需要而定。 如图 2。 第 9 页 共 25 页 图 2 封包监视 界面 封包的字段有: ( 1) 应用 程序路径和名称 ( 2) 管制动作(放行或拒绝) ( 3) 访问起始 /结束时间 ( 4) 使用网络协议 ( 5) 进 /出流量 ( 6) 本地和远端 端口 ( 7) 备注信息 封包监视界面实时接收 在封包监视界面上设计了几个附加按钮。“停止 /开始滚动”用来设置监视列表是否 自动滚动;“开始 /停止监视”用来设置是否实时监视;“清除”按钮用来清除当前列表。这些功能按钮方面操作。 2. 控管规则界面 控管 规则界面用来显示和设置控管规则(如图 3)。需要说明的是,应用程序设置的优先级高于控管规则设置,只是在应用程序设置为询问时,下面 的控管规则设置才有效。 第 10 页 共 25 页 图 3 控管规则界面 控管规则的设计目的是为了制订对网络访问的控制,所以控管规则的字段可以决定防火墙防范的严密性和灵活程度。控管规则的记录结构为: 应用程序 远端网络 管制动作 进出方向 协议类型 使用端口 控管规则界面给出了“增加”、“删除”、“修改” 3个功能按钮用来对控管规则进行不同的操作。其中选择增加和修改时都会弹出控管规则设置界面。 1. 控管规则设置界面 控管规则设置界面是用来设置控管规则的各个字段(如图 4)。在“应用程序” 栏输入或选择要进行控管的应用程序的完整路径和文件名。 “远端网络”用 来定义网络类型的 软件工划分为 5个类型:所有网络、局域网、受约束的网络、信任的网络和自定义网络。 “动作”用来确定符合这一条控管规则的网络访问动作是放行还是拒绝。 第 11 页 共 25 页 “方向”用来确定这一条控管规则适合于网络访问的连接方向。本机向远端服务器发出连接请求就是出;远端主机向本机发出连接请求则为进。 “类型”是控管规则约定的协议类型。 “端口”是协议所使用的端口。 图 4 控管规则设置界面 2. 网络设置界面 网络设置界面用来对各种网络类型的 图 5),在 上节有关于远端网络类型的介绍。在这个界面上提供对 址段的增加、修改和删除功能 第 12 页 共 25 页 图 5 网络设置界面 编码规则 变量命名规则如下 : 变量采用代表中文意思的英文单词或单词组合。 变量一般不用缩写,用英文单词全称。较长的更为习惯的缩写 。 自定义全局变量用 自定义过程变量不用 变量的前缀用变量类型的第一个字母标志变量类型。如,指针类型在前面多加一个字母 P。 如果是对象,前缀用对象的名称,第一个字母大写。 变量中有多个单词时,单词的第一个字母大写,其余用小写。 有了自己的编码规则后,不会出现自己的弄不清楚自己定义的函数之类的是什么意思。不知道函数是干什么的。以至于思维混乱。 5 核心功能的代码实现 本课题的核心功能实现封装在 面分析 统调用时的标准接口。做一些初始化工作。主要工作是得到调用这个程序的进程路径和名称并设置 用次数的计数器。 用程序调用 初始化函数。是服务提供者的标准入口函数。这里的 工作是根据 出已经被替换的服务提供者路径,然后加载,并利用被替换服务提供者的 0个服务函数指针。需要先保存这些函数指针,然后将 构中的 30 个第 13 页 共 25 页 服务函数指针都设置成自己的。这样,相应的函数请求会首先经过我们自己的函数,然后用这些函数可以做适当的处理,再调用原来的,将请求转发,完成整个通信。 T(.
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
2:不支持迅雷下载,请使用浏览器下载
3:不支持QQ浏览器下载,请用其他浏览器
4:下载后的文档和图纸-无水印
5:文档经过压缩,下载后原文更清晰
|