{$cfg_webname}
主页 > 计算机 > C++ >

Windows简单防火墙的设计与实现

来源:wenku163.com  资料编号:WK1638220 资料等级:★★★★★ %E8%B5%84%E6%96%99%E7%BC%96%E5%8F%B7%EF%BC%9AWK1638220
资料介绍

Windows简单防火墙的设计与实现
摘  要
随着互连网的高速发展,网络给我们带来了极大的方便。人们的学习、工作以及生活越来越依赖于计算机网络,随之也出现了许多网络安全问题,因此当前网络安全产品备受人们的重视。防火墙是保障系统安全的一种有效手段,它可以将个人电脑与不完全的网络隔离开,按照预先设定的规则决定是否允许数据包通过,以此保障了个人电脑的安全。
本毕业设计是基于Windows 2000操作系统、DDK for Windows2000工具开发包及Visual C++6.0平台开发的简单防火墙系统。系统主要分为两个模块:过滤钩子驱动模块和用户操作界面模块。过滤钩子驱动模块主要功能是注册过滤钩子回调函数,并按照用户提供的过滤规则进行数据包的过滤;用户操作界面模块的主要功能是实现用户添加、删除过滤规则,同时允许用户以文件的形式保存所添加的过滤规则。

关键词:防火墙;包过滤;钩子;回调函数

 
The Design and Realization of Simple Firewall for Windows
Abstract
With the rapid development of Internet, it brings us great convenience. We become more and more dependent on the Internet, but it brought a lot of questions of network security, thereby the products of network security attract much attention. Firewall is an effective means to secure the system. It can separate personal computer from unsafe network, according to the preset rules to decide whether to let the packet through. It guarantees the safety of personal computer.
This paper is based on Windows 2000, DDK for Windows 2000 and Visual C++6.0 platform to develop simple firewall system. There are two parts in the system, which are hook filter driver module and the module of user interface. The main function of hook filter driver module is to register hook callback function and filter packet according to rules. The main function of user interface module is to add or delete filter rules, and save filter rules as file.

Key words: firewall; packet-filtering; hook; callback function

 
目  录
论文总页数:20页
1    引言    1
1.1    课题背景    1
1.2    国内外研究现状    1
1.3    本课题研究的意义    1
1.4    本课题的研究方法    2
2    相关理论技术基础    2
2.1    防火墙技术简介    2
2.1.1 防火墙简介    2
2.1.2防火墙分类    2
2.1.3 防火墙的局限性    3
2.2    VISUAL C++6.0相关技术简介    3
3    总体设计方案    4
3.1    设计过程    4
3.2    设计方案    4
4    过滤钩子驱动的实现    5
4.1    FILTER_HOOK DRIVER概述    5
4.2    过滤钩子驱动的实现    6
4.2.1 创建内核模式驱动    6
4.2.2 设置和清除过滤钩子    8
4.2.3 过滤器钩子的I/O控制    10
4.2.4过滤函数实现    11
5    客户端应用程序    12
5.1    界面设计    12
5.2    编码规则    14
5.3    主要的类    14
5.4    核心代码    14
5.4.1开始过滤和停止过滤    15
5.4.2安装和卸载过滤条件    16
5.4.3文件存储    17
结    论    18
参考文献    18
致    谢    19
声    明    20
 
1    引言
1.1     课题背景
Internet的出现及迅速发展给现代人们的生产和生活都带来了前所未有的飞跃。互连网已经成为扩展个人和企业发展的重要工具,人们已经进入了信息时代。互连网将整个人类社会缩小成了一个村落——“地球村”,促进了信息的交流,提高了人们的工作效率,丰富了人们的生活。人们享受着信息时代带来的种种便利,体验着互联网带来的生活上的全新感受。但凡事有利必有一弊,随着对网络的依赖越来越大,网络安全问题也越来越明显。由于黑客攻击和信息泄露并不是直接对系统造成损害,所以往往不能引起人们的注意。人们总是在网络安全问题发生带来严重后果后,才意识到网络安全的重要。随着网络的进一步普及,网络安全产品逐渐地进入人们的视野,而防火墙作为把守用户安全大门的重要工具,越来越受到人们的重视。
1.2     国内外研究现状
自从1986年美国Digital公司在Internet上安装了全球第一个商用防火墙系统,提出了防火墙概念后,防火墙技术得到了飞速的发展。国内外已有数家公司推出了功能各不相同的防火墙产品系列。目前的防火墙产品主要有堡垒主机、包过滤路由器、应用层网关(代理服务器)以及电路层网关、屏蔽主机防火墙、双宿主机等类型。作为内部网络与外部公共网络之间的第一道屏障,防火墙是最先受到人们重视的网络安全产品之一。虽然从理论上看,防火墙处于网络安全的最底层,负责网络间的安全认证与传输,但随着网络安全技术的整体发展和网络应用的不断变化,现代防火墙技术已经逐步走向网络层之外的其他安全层次,不仅要完成传统防火墙的过滤任务,同时还能为各种网络应用提供相应的安全服务。另外还有多种防火墙产品正朝着数据安全与用户认证、防止病毒与黑客侵入等方向发展。
虽然防火墙是目前保护网络免遭黑客袭击的有效手段,但也有明显不足:无法防范通过防火墙以外的其它途径的攻击,不能防止来自内部变节者和不经心的用户们带来的威胁,也不能完全防止传送已感染病毒的软件或文件,以及无法防范数据驱动型的攻击。
1.3     本课题研究的意义
目前市场上大多数的防火墙产品仅仅是网关型的,虽然它们的功能相当强大,但由于它们基于下述的假设:内部网是安全可靠的,所有的威胁都来自网外。因此,他们防外不防内,难以实现对企业内部局域网内主机之间的安全通信,也不能很好的解决每一个拨号用户所在主机的安全问题,而大多数个人上网之时,并没有置身于得到防护的安全网络内部。
个人上网用户多使用Windows操作系统,而Windows操作系统本身的安全性就不高。各种Windows漏洞不断被公布,对主机的攻击也越来越多。一般都是利用操作系统设计的安全漏洞和通信协议的安全漏洞来实现攻击。如假冒IP包对通信双方进行欺骗;对主机大量发送IP数据包进行轰炸攻击,使之崩溃;以及蓝屏攻击等。因此,为了保护主机的安全通信,研究有效的个人防火墙技术很有必要。
1.4     本课题的研究方法
本设计是使用Win2000 DDK中提供的Filter-Hook Driver来实现数据包的过滤。过滤钩子驱动程序是一个用于过滤网络包的核心模式驱动程序,它扩展了系统提供的IP过滤驱动程序的功能。
过滤钩子驱动程序完成一个过滤钩子回调函数并在系统提供的IP过滤驱动程序中注册这个回调函数。这个回调函数被看作一个过滤钩子。当有数据包需要通过时,IP过滤驱动程序会调用这个过滤钩子以决定怎样处理到达和输出的包。
2    相关理论技术基础
2.1    防火墙技术简介
2.1.1 防火墙简介
Internet的发展给政府,企事业单位带来了革命性的改革和开放,也给个人的工作和生活带了前所未有的改变。人们享受着互连网带来的种种方便,同时也面临着Internet的开放带来的关于数据安全的新挑战和新危险:企事业单位商业机密的泄露,个人隐私以及私秘信息的窃取。这就需要人们给网络加一道安全之门,而这道门的重要守护者就是防火墙。
防火墙是指设置在不同网络或者网络安全域之间的一系列部件的组合。它是不同网络或者网络安全域之间的唯一出口,所有进出这出口的访问都得经过它的审核。用户可以根据自己的情况来设置访问规则实现对所有访问的控制,用来达到对安全的保证。
在逻辑上,防火墙是一个分离器,一个限制器,也是一个分析器。它有效地监控了内部网络与外部网络之间的所有活动,其基本目的是阻止未被邀请的客户进入内部网络,保证了内部网络的安全。
2.1.2防火墙分类
根据对限制传输机制的不同,把防火墙大致分成以下三种:封包过滤、代理服务器和应用程序网关:
1.包过滤防火墙截获网络上的所有传输信息,这些信息都是以包的形式进行传输的,数据包中包含发送方的IP地址,接收方的IP地址,端口,链路状态等信息。防火墙的工作就是把这些信息读取出来,再根据用户自定义的规则来进行过滤。那些不符合规则的数据包将被过滤掉,以保证网络的安全。
2.代理服务器接收客户请求后会检查验证其合法性,如果合法,代理服务器向一台客户机取回所需的信息在转发给客户。它将内部系统与外界隔离开来,从外面只能看到代理服务器而看不到任何内部资源。代理服务器只允许有代理的服务通过,而其他所有服务都完全被封锁住。这一点对系统安全是非常重要的,只有那些被认为“可信赖的”服务才允许通过防火墙。另外代理服务还可以过滤协议,如可以过滤FTP连接,拒绝使用FTP put(放置)命令,以保证用户不能将文件写到匿名服务器。代理服务器具有信息隐藏,保证有效的认证和登陆,简化了过滤规则等优点。网络地址转换服务可以屏蔽内部网络的IP地址,使网络结构对外部来讲是不可见的。
3.应用程序网关本质上是另一种类型的代理服务器。通信时,内部客户首先和应用程序网关建立连接,应用程序网关确定这个连接是否被允许,如果允许的话再和目的计算机建立连接。因此,所有的通讯都需要经过两个连接——客户到网关的连接和网关到目的主机的连接。应用程序网关会监视所有的传输,根据规则决定是否转发他们。和代理服务器一样,外面的世界看到的只是应用网关的IP地址,这就有效地保护了内部网络。
2.1.3 防火墙的局限性
虽然防火墙按照我们的要求严格地把守着网络安全的大门,但它也不是万能的,也存在着一些局限性。比如它不能防范不经过它的攻击,也就是可以寻找一条小路绕开防火墙把守的大门。例如,如果允许从受保护的网络内部向外拨号,一些用户就可能形成与Internet的直接连接。另外,防火墙很难防范来自于网络内部的攻击以及病毒的威胁。它更不可能防止靠欺骗来获得某些可以破坏安全的信息的社会工程的攻击。
2.2    Visual C++6.0相关技术简介
Visual C++ 6.0是Microsoft公司推出的功能强大的软件开发平台,是"真正的程序员"首选的开发工具之一。Visual C++不仅仅是一个编译器,它是一个全面的应用程序开发环境,使用它你可以充分利用具有面向对象特性的C++来开发出专业级的Windows应用程序。它是一个C++实现,提供了一个功能强大的集成开发环境;另一方面,它提供了一些C++类库,其中最具影响力的是MFC。此外,Visual C++还融合了大量的开发工具,特别是与Internet相关的开发支持。Visual C++ 6.0以ANSIC++为基础,并在此基础上进行了大量的扩展,以适应开发各种Windows应用程序的需要。到目前为止,绝大多数Windows应用程序都是用Visual C++ 6.0或其早期版本开发而成的,Visual C++ 6.0已成为在Windows环境下进行大型软件开发的首选。
MFC是一个很大的、扩展了的C++类层次结构,它能使开发Windows应用程序变得更加容易。MFC在整个Windows家族中都是兼容的,也就是说,无论是Windows3.x、Windows95还是Windows NT,所使用的MFC是兼容的。每当新的Windows版本出现时,MFC也会得到修改以便使旧的编译器和代码能在新的系统中工作。MFC也会得到扩展,添加新的特性,变得更加容易建立应用程序。
与传统上使用C语言直接访问Windows API相反,使用MFC和C++的优点是MFC已经包含和压缩了所有标准的“样板文件”代码,这些代码是所有用C编写的Windows程序所必需的。因此用MFC编写的程序要比用C语言编写的程序小得多。另外,MFC所编写的程序的性能也毫无损失。必要时,可以直接调用标准C函数,因为MFC不修改也不隐藏Windows程序的基本结构。
使用MFC的最大优点是它为你做了所有最难做的事。MFC中包含了上成千上万行正确、优化和功能强大的Windows代码。你所调用的很多成员函数完成了你自己可能很难完成的工作。从这点上讲,MFC极大地加快了程序开发速度。

推荐资料