分类号:TP309.5
U D C:D10621-408-(2008)2668-0
密 级:公 开
编 号:2004033073
成 都 信 息 工 程 学 院
学 位 论 文
简易防火墙的设计
论 文 作 者 姓 名 :
王兴欣
申 请 学 位 专 业 :
信息安全
申 请 学 位 类 别 :
工学学士
指导教师姓名(职称):
王敏(讲师)
论 文 提 交 日 期 : 2008 年 06 月 05 日
简易防火墙的设计
摘 要
在 Internet 应用日益广泛的今天,网络安全问题显得越来越突出。作为网络
通信程序的开发人员,需要了解防火墙开发的基本过程。即使不进行专业的防火
墙开发,了解防火墙开发的基本流程对于提高其它网络应用程序的安全性也是
大有裨益的。
此次的防火墙设计是一个基于Filter—Hook Driver的个人防火墙,它可以自
选设定过滤规则,阻止特定的IP地址和端口,并且可以选择需要阻止的协议,从
而达到保护系统安全的功能。防火墙的原理是在Filter—Hook Driver中执行一个
回调函数,然后用IP Filter Driver记录回调信息。当一个数据包被发送或接收的
时候,IP Filter Driver会再调用回调函数。另外根据用户的需求防火墙添加了端
口扫描功能和一些快速设定规则的快捷方式。
关键词:防火墙;DDK;挂钩驱动;Quick Sys;端口扫描
The Design of the Simple Fire Wall
Abstract
In the increasingly widespread application of the Internet
today, network
security issues become increasingly prominent .As the development of network
communication programmer , need to understand the basic firewall development
process .Even if the firewall is not a professional development, understanding the
basic firewall development processes for improving the application of other network
security is also of great benefit.
The firewall is a design based on Filter-Hook Driver of the personal firewall ,It
can set filter-rules on demand to prevent a specific IP address and port, and can
choose the protocol needed to stop ,to achieve the functions of security protection
system. it is the principle that the firewall in Filter-Hook Driver implementing a
callback function .IP Filter Driver and then use the information recorded
callback .When a packet is sent or received, the time, IP Filter Driver will call the
callback function .Also according to the needs of users add a firewall port scanning
and quickly set up some rules of the shortcut.
Key words: Fire Wall; DDK; Hook Driver; Quick Sys; Port Scan
目 录
论文总页数: 36 页
2.3
2.4
2.1
1 引言...................................................................................................................................................1
1.1 课题背景.................................................................................................................................. 1
1.2 本课题研究内容...................................................................................................................... 1
1.3 本课题研究的意义.................................................................................................................. 1
2 简易防火墙开发的相关技术...........................................................................................................1
DDK..........................................................................................................................................1
2.2 内核模式驱动.......................................................................................................................... 2
FILTER -HOOK DRIVER ..............................................................................................................3
QUICK SYS ............................................................................................................................... 3
3 简易防火墙的规划设计...................................................................................................................3
3.1 需求分析.................................................................................................................................. 3
3.2 系统设计.................................................................................................................................. 4
3.3.1 系统基本结构..................................................................................................................4
3.3.2 系统总体设计..................................................................................................................5
3.3.3 挂钩驱动总体设计..........................................................................................................5
4 防火墙开发实现...............................................................................................................................8
4.1 用户功能模块实现.................................................................................................................. 8
4.1.1 用户添加规则模块........................................................................................................10
4.1.2 禁止所有访问模块........................................................................................................13
4.1.3 禁止 ping 入...................................................................................................................15
4.1.4 允许所有访问................................................................................................................17
4.1.5 端口扫描........................................................................................................................19
myDriver 类详细说明................................................................................................... 23
4.2 软件测试................................................................................................................................ 28
4.2.1 测试环境........................................................................................................................28
4.2.2 测试内容........................................................................................................................28
4.2.3 防火墙快捷方式............................................................................................................28
4.2.4 用户添加规则................................................................................................................30
4.2.5 端口扫描........................................................................................................................32
论................................................................................................................................................. 33
参考文献................................................................................................................................................. 34
谢................................................................................................................................................. 35
4.1.6
结
致
声
明................................................................................................................................................. 36
1 引言
1.1 课题背景
随着 Internet 的迅速崛起,网络信息化的发展,防火墙作为一种典型的技术
也迅速的发展。后来随着信息技术的飞速发展,用户个人信息的安全问题已经
成为迫在眉睫的重要问题, 防火墙作为一种保护软件就这样诞生了。其中的软
件防火墙更是成为了个人用户所不可缺少的信息安全软件。个人防火墙的核心
是一种按照用户规定的访问规则来实现对用户的个人电脑的保护。要想成为一
名专业的信息安全工程师,其最基础的就是要能掌握防火墙的使用原理,而防
火墙中最简单的个人防火墙设计即是一个重要的起点。所设计的防火墙即是一
种能添加访问规则功能并能进行端口扫描的防火墙软件。
1.2 本课题研究内容
此防火墙是一款以包过滤技术为基础的个人防火墙,其核心的研究内容为
端口扫描编程和驱动编程,其中驱动编程涉及到使用 DDK 进行编译以及使用
Quick Sys 生成驱动程序框架。还有使用驱动的方法,包括加载驱动,卸载驱
动,添加规则这些最必要的操作。端口扫描编程涉及到 WinSocket 编程。
1.3 本课题研究的意义
经过这次的课题研究可以熟练掌握 VC 界面编程知识,掌握部分 WinSocket
编程技巧,和驱动编程的基础知识,以及如何使用 DDK 的编译驱动程序,还有
QuickSys 的使用方法。最为重要的是可以学习如何使用驱动和防火墙制作原理,
即如何进行拆包分析,如何进行规则匹配。这些都是今后开发一款强大防火墙
所必不可少的知识。
2 简易防火墙开发的相关技术
2.1 DDK
DDK 是 Device Development KitWindows(设备驱动程序开发工具),设备
开发包的意思。DDK 是 windows 驱动程序开发工具包, 这个微软的窗口驱动程
序开发工具包是一个整理以后的驱动程序开发包,为 windows 家族的操作系统
提供环境的创建,工具, 驱动程序样本和文件来支持驱动程序的开发。如果想
开发一个设备驱动程序,如显卡驱动程序,就必须使用 DDK。本次的防火墙设
计涉及到 Driver-Hook 的学习,Driver-Hook.sys 的制作涉及到 DDK 开发, DDK
有许多版本如 windows200DDK,windows98DDK,windows xpDDK。一定要在相应的
DDK 版本否则会出现许多不可预料的错误。DDK 没有包括在 VC++中,如果想要
在 VC++平台进行编程一定要先安装 DDK 再装 VC,在这样的顺序下关联 DDK 才能
正常运行。另外还有许多著名的驱动开发工具如:DriverStudio、SDKs 等。
第 1 页 共 36 页
2.2 内核模式驱动
在 Windows 2000 操作系统中,有两个基本的驱动程序种类:
1. 用户模式驱动程序(例如 Win32 VDD,它是为 MS-DOS 应用程序开发的
专用设备)或另一个被保护的子系统的驱动程序
2. 针对逻辑、虚拟或物理设备的内核模式驱动程序
有三种基本类型的内核模式驱动程序。每一种都有稍微不同的结构和完全
不同的功能:
1. 最高层驱动程序,例如系统支持的 FAT、NTFS 和 CDFS 文件系统驱动程
序(FSD)。最高层驱动程序通常依赖于较低层的驱动程序支持。
虽然特定的文件系统驱动程序可能、或不可能从一个或多个中间层驱动程
序获得支持,但是每个文件系统驱动程序最终依赖一个或多个下层外围设备(可
能是 PnP 硬件总线)驱动程序的支持。
2. 中间层驱动程序,例如虚拟磁盘、镜像、或指定设备类型的类驱动程序。
中间层驱动程序也需要较低层驱动程序的支持。
PnP 功能驱动程序是中间层驱动程序,它们在一个 I/O 总线上控制特定的
外围设备,这个 I/O 总线是由 PnP 硬件总线驱动程序来控制的。同样还有 PnP
过滤器驱动程序(PnP filter driver),它们在驱动程序栈(driver stack)
内将它们自己插入到 PnP 功能驱动程序中去,以支持任何特定的外围设备。PnP
功能和过滤器驱动程序的子集也是 WDM 功能和过滤器驱动程序。
任何系统支持的向外输出一个系统定义的 WDM 类/微类接口的类驱动程序,
实际上是一个带有一个或多个链接的 WDM 微类驱动程序(有时称为 WDM 微驱动
程序)的中间层驱动程序。每一对相互链接的 WDM 类/微类,提供与 WDM 功能驱
动程序或 WDM“软件”总线驱动程序相同的功能。
PnP 软件总线驱动程序表示一组子设备,较高层的类、功能和/或过滤器驱
动程序能连接它们自己到这些子设备上,PnP 软件总线驱动程序也是中间层驱
动程序。例如,控制多功能适配器的驱动程序是一个 PnP 软件总线驱动程序,
这样的多功能适配器是用于不同的设备的一个便携集合。根据便携设备的特性
和它的驱动程序使用的接口,这样的驱动程序也可能是 WDM 软件总线驱动程序。
它似乎使得较高层驱动程序成为一个 PnP/WDM 总线驱动程序。对于操作系统来
说,驱动程序是以 PnP/WDM 驱动程序的面目出现的,它服务于它自己的适配器,
将它自己插入底层 PnP 硬件总线驱动程序之上的驱动程序堆栈中。
3. 最低层驱动程序,例如 PnP 硬件总线驱动程序,它控制一个 I/O 总线,
这个总线连了一些外围设备在上面。最低层驱动程序不依赖于较低层驱动程序,
而是控制物理外围设备,例如总线。
第 2 页 共 36 页
2.3 Filter -Hook Driver
Filter-Hook Driver 是这款软件的重要组成部分,下面对 Filter-Hook
Driver 进行介绍。
在 Microsoft Windows 2000 DDK 中介绍了 Filter-Hook Driver, 但它不
是一种新的网络驱动,它只是扩展了 IP 过滤驱动(IP Filter Driver)的功能。
实际上,Filter-Hook Driver 并不是网络驱动,它是一种内核模式驱动
(Kernel Mode Driver). 大致上是这样的:在 Filter-Hook Driver 中提供回调
函数(callback),然后使用 IP Filter Driver 注册回调函数。这样当数据包发
送和接收时,IP Filter Driver 会调用回调函数。
另外对 IP Filter Driver 进行介绍。在 Windows 2000 和 Windows XP 中,
System32\drivers 目录下的 ipfltdrv.sys 是 Microsoft 提供的 ip 协议过滤驱
动程序。它允许用户注册自己的 ip 数据报处理函数。在 MSDN 中有关于这方面
内容的简短说明,位于 Filter-Hook Driver Reference 章节中。这一部分说明
文档论述了 filter-hook 驱程实现的回调函数和该驱程用以注册回调函数的
I/O 控制码。回调函数是这类驱程的主体部分。操作系统提供的 ip 过滤驱动程
序使用这个过滤钩子来判断 ip 数据包的处理方式。
所注册的过滤钩子是用 PacketFilterExtensionPtr 数据类型定义的。由于
是使用函数的地址而不是函数的名字注册过滤钩子的入口点,所以可以自由的
为过滤钩子函数命名。
2.4 Quick SYS
这是一个像 Numega QuickVXD 一样可以快速创建驱动程序框架的工具,工
作在 Windows NT/2K/XP 中。可以生成内核模式驱动的框架代码。压缩包里包含
该工具的全部源代码。可以使用它进行对 Filter-hook driver 的制作。
3 简易防火墙的规划设计
3.1 需求分析
简易防火墙首先应该方便用户使用、方便设定参数,同时需要该软件便于
维护和添加模块。当然能一定要能够起到防火墙的基本作用。
用户功能:
为了方便用户使用防火墙,该防火墙应该提供以下几种用户功能。
用户能够检测到哪些 IP 地址、端口地址被允许还是拒绝。
用户能够对访问规则进行修改。
用户能禁止 ping 入。
用户可以设定禁止所有访问。
用户能查看对方端口情况和自己的端口情况。
第 3 页 共 36 页