平台下个人防火墙的设计与实现.docx
- 文档编号:18106655
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:37
- 大小:330.72KB
平台下个人防火墙的设计与实现.docx
《平台下个人防火墙的设计与实现.docx》由会员分享,可在线阅读,更多相关《平台下个人防火墙的设计与实现.docx(37页珍藏版)》请在冰点文库上搜索。
平台下个人防火墙的设计与实现
平台下个人防火墙的设计与实现
摘要
随着互联网的普及,安全问题越来越受到大家的重视。
一个安全良好的网络环境能很好的保护好人们的计算机不受木马和病毒的侵扰,给人们的财产和隐私提供必要的保护。
个人防火墙作为最早出现和最多使用的网络安全产品,以软件的形式存在于计算机与其所连接的网络之间,对流经计算机的XX的网络数据包进行监控和阻止,以起到对系统的保护作用。
因此,开发有效的个人防火墙具重要意义。
本文根据个人防火墙的实际需求,首先分析了目前市场上各类防火墙所采用的不同核心过滤技术,结合其优缺点和实现的难易程度,确定了本课题实现所采用的技术并做出相应的阐述。
其次对本课题实现的功能和核心技术进行了详细的介绍,接着对个人防火墙的相关功能进行了介绍和展示,最后对完成本论文中获得的心得体会和经验进行了系统的总结。
本课题中实现个人防火墙所采用的核心过滤技术为Filter-HookDriver。
核心过滤驱动的开发采用VisualStudio2010和Windows下的驱动开发工具WDK进行编码和编译,用户层采用C语言进行编写。
用户界面用MFC实现。
本个人防火墙实现了对网络数据包的过滤,管控规则设置和日志功能。
充分考虑了个人防火墙所需的基本功能,操作方便,界面简单友好。
关键词
个人防火墙;数据包过滤;Filter-HookDriver;网络安全
Abstract
WiththepopularityoftheInternet,securityissuesareattentionbymoreandmorepeople.AsecurenetworkenvironmentcanprotectpersonalcomputerfromTrojansandviruses,andprovidenecessaryprotectiontopeople'spropertyandprivacy.PersonalfirewallastheearliestandthemostusedNetworkSecuritytoolkit,itexistsassoftware,betweenacomputeranditsnetwork.Inordertoprotectthesystem,personalfirewallmonitorsandpreventsnetworkpacketswhichareflowingthroughthecomputeandunauthorized.Therefore,thedevelopmentofaneffectivepersonalfirewallhastheimportantmeaning.
Accordingtotheactualneedsofpersonalfirewall,thispaperfirstanalyzesdifferentcorefilteringtechnologiesadoptedbyallkindsoffirewallusedinthecurrentmarket,combinedwiththeeaseoftheirimplementationandrelativemerits.Thistopicdeterminedhowtoachievethissystemandmadethecorrespondingelaboration.Secondlythefunctionandthecoretechnologyofthisprojectisintroducedindetail,thenintroducesanddisplaystherelatedfunctionsofapersonalfirewall,andfinallysummarizesthefeelingsandexperiencesincompletingthispaper.
Inthistopic,thecorefilteringtechnologyinrealizationofpersonalfirewallisadoptedbytheFilter-HookDriver.Filter-HookDriverusingVisualStudio2010andWDKtodevelopmentwhichisadriverdevelopmenttoolundertheWindows,UsingClanguagetowriteuserlayer.TheuserinterfaceuseMFCtoachieve.Thispersonalfirewallachievedthosefunctions:
networkpacketfiltering,controlrulessetandlogging.Fullyconsideringthebasicfunctionsofapersonalfirewall,thissystemiseasytooperateandhasfriendlyinterfaces.
Keywords
PersonalFirewall;Packetfiltering;Filter-HookDriver;Networksecurity
摘要I
AbstractII
第一章前言1
1.1课题的开发背景与意义1
1.1.1开发背景1
1.1.2研究意义2
1.2国内外研究现状2
1.3课题研究内容与结构4
第二章相关理论简介5
2.1防火墙核心过滤技术5
2.1.1用户态数据包拦截技术5
2.1.2内核态数据包拦截技术5
2.1.3Filter-HookDriver6
2.2TCP\IP网络通信协议7
2.2.1IP网际协议8
2.2.2TCP传输控制协议8
2.2.3UDP用户数据报协议8
2.3内核模式驱动程序开发9
第三章开发工具与环境简介10
3.1MicrosoftVisualStudio201010
3.2C语言简介10
3.3驱动开发工具10
3.3.1WDK内核编程工具11
3.3.2编译驱动程序源文件11
3.3.3安装运行驱动程序12
3.4MFC简介12
第四章个人防火墙的总体设计13
4.1防火墙整体结构13
4.1.1用户层14
4.1.2驱动层14
4.2防火墙系统流程图14
4.3防火墙实现的功能16
第五章个人防火墙的详细设计与实现17
5.1驱动层Filter-HookDriver17
5.1.1初始化17
5.1.2请求分发18
5.2驱动控制模块的实现22
5.2.1驱动服务安装23
5.2.2打开驱动设备24
5.2.3对驱动设备进行控制24
5.3用户界面25
5.4系统测试25
5.4.1测试环境与工具26
5.4.2功能测试26
结论29
参考文献30
致谢31
第一章前言
本章主要阐述windows平台下个人防火墙开发的相关背景和课题研究意义,对个人防火墙在国内外的发展现状作简要介绍。
并对本文的结构和内容进行简单的概括。
1.1课题的开发背景与意义
1.1.1开发背景
随着网络技术的飞速发展和互联网在全世界范围内的普及,人们的生活越来越离不开互联网——学习,娱乐,通信,信息获取等等,互联网大大提高了我们的效率,丰富了我们的生活。
但随着互联网用户越来越多,互联网在给人们生活带来便利的同时,也给不少人提供了一条攻击其他用户计算机或窃取用户资料的途径,这就导致了普通用户在网络上收到攻击的现象越来越严重,各种入侵攻击层出不穷,导致人们因网络安全而导致的损失越来越大。
因此,为了给用户提供一个良好的网络环境,需要一种方法来为用户抵御这类来自网络的攻击。
而个人防火墙作为一种隔离控制技术,把用户和公共网络分隔开来,通过对流经它的网络信息进行监控过滤,抵御外部攻击以实现安全防护的安全工具,可以对流经它的数据包进行过滤——对用户“允许”的合法数据访问放行并对用户“不允许”的非法数据进行拦截过滤,以起到保护个人计算机的目的。
因此,个人防火墙在保护用户个人计算机的网络安全方面起到重要作用。
另一方面,Windows操作系统凭借其简单易用的操作和强大的技术支持,几乎占据了整个桌面操作系统市场,市场占有率超过90%。
但我们知道,世界上没有绝对安全的操作系统,Windows也存在很多漏洞,给骇客通过网络和系统漏洞对用户进行攻击留下了后门,这无疑会给用户的财产和隐私带来巨大的损失。
而防火墙作为保护用户上网环境安全的工具,可以有效避免用户因遭到网络攻击造成的损失,因此,在Windows系统下构建个人防火墙是十分必要的。
考虑到各种防火墙的优缺点及其实现的难易程度,并结合个人能力。
本文最终采用Filter-HookDriver数据包拦截技术实现个人防火墙。
1.1.2研究意义
个人防火墙作为作为最常用的网络安全工具,其实现所用到的很多技术跟企业级防火墙和硬件防火墙的基本原理是相同的,可以从研究个人防火墙开始,由浅入深,进而理解企业级防火墙和硬件防火墙的原理和实现方法。
从而研究个人防火墙也能极大的推动网络安全技术的进步,具有重大的工程意义。
Windows作为国内外主要的桌面操作系统,其平台下的个人防火墙为用户的网络安全起到了很好的防护作用。
但目前市场上基于不同包截获技术的防火墙的综合性能参差不齐,故在该平台下的防火墙的研究对于推动个人防火墙技术的发展具有现实意义。
本文采用的通过Filter-HookDriver实现数据包拦截的防火墙技术虽然不是开发防火墙最好的方法,但对于对这个领域感兴趣的个人是一个具实际意义的好的开始。
1.2国内外研究现状
防火墙作为最早出现的网络安全产品,受到了广大用户和机构的青睐,应用十分广泛,自1986年美国Digital公司提出防火墙概念并安装第一个商用防火墙以来,防火墙技术已经获得了飞速的发展,基于功能划分,可分为以下阶段:
Ø第一代防火墙技术几乎与路由器同时出现,采用包过滤技术。
这类防火墙根据数据包头信息和过滤规则来控制数据包的过滤,一般用于对安全性要求不是很高,偏重数据处理速度的网络路由器上。
Ø第二代防火墙由贝尔实验室的DavePresotto和HowardTrickey最早于于1989年推出,即电路层防火墙。
并同时提出了第三代防火墙—应用层防火墙的概念(或者叫做代理防火墙)。
Ø1992年,USC信息科学院的BobBraden开发出了基于动态包过滤(Dynamicpacketfilter)技术后来演变为现在所说的状态监视(Statefulinspection)技术的第四代防火墙。
它根据过去的通信信息和应用程序状态信息动态生成过滤规则。
1994年,以色列的CheckPoint公司开发出了第一个采用这种技术的商业化的防火墙产品。
Ø1998年,NAI公司推出了一种自适应代理(Adaptiveproxy)技术,并在其产品GauntletFirewallforNT中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。
该类型的防火墙整合了动态包过滤技术和应用代理技术,本质上也可认为仍属于状态检测防火墙。
另外,基于实现划分,防火墙又可分基于路由器的防火墙、用户花的防火墙、建立在通用操作系统上的防火墙和具有安全操作系统的防火墙四个阶段:
Ø基于路由器的防火墙即第一代防火墙,上面已做简单介绍。
Ø用户化的防火墙即把过滤功能从路由器中独立出来加上日志和警告功能,并针对用户需求提供相应功能,使得防火墙的安全性和性价比相对第一代防火墙有所提高。
Ø建立在通用操作系统上的防火墙,顾名思义,就是将防火墙以软件或硬件的实现方式独立出来,并配有专用的代理系统,以监控所有协议的数据和指令,并能保护用户的编程空间和可配置内核参数的设置,这使得防火墙的安全性和速度得到大幅提高。
Ø具有安全操作系统的防火墙本身就是一个操作系统,在安全性上较前几种防火墙有本质的提高,这也是目前防火墙产品的主要发展趋势,这类防火墙的开发厂商有操作系统的源代码,可实现安全内核并对其加固,甚至对每个服务器和子系统都做安全处理,一旦骇客攻破了一个服务器,防火墙就将它隔离在此服务器内,不会对其他部分构成威胁,且透明性良好,易于使用。
windows操作系统作为全球使用者最多的操作系统,其平台下开发出了许多优秀的个人防火墙。
国外的如Symantec公司的Norton、Networkice公司的BlackIceDefender、Mcafee公司的Cisco、卡巴斯基互联网安全套装个人版以及ZoneLab公司的FreeZoneAlarm等都是比较著名的个人防火墙。
国内市场上个人用户较多的有天网防火墙个人版、金山网镖、瑞星、费尔等常见个人防火墙。
所有这些基于windows的个人防火墙的区别主要在于它们所采用的对网络数据包拦截的核心技术不同。
总的来说,可分为用户态和内核态数据包拦截两大类[]。
用户态下的个人防火墙主要为基于winsock2SPI技术的个人防火墙(如费尔个人防火墙等);和内核态下的个人防火墙主要有:
基于TDI过滤驱动的个人防火墙(如国内的天网防火墙和金山网镖等),基于NDIS中间层驱动(如冰盾防火墙等)的个人防火墙,基于NDIS-HOOK的个人防火墙(如卡巴斯基互联网套装个人版)和基于Win2KFilter-HookDriver的个人防火墙。
目前很多比较优秀著名的个人防火墙多采用复合型数据包过滤技术进行开发,即采用两种或多种封包截获技术进行数据包的过滤,以达到全面、强大、平台兼容的效果。
本课题将采用Filter-HookDriver过滤技术,Filter-HookDriver是从Windows2000开始提供的一种机制,利用ipfiltdrv.sys所提供的功能来拦截网络数据包,其结构简单,相对易于实现,且能截获所有的IP包。
1.3课题研究内容与结构
本文主要研究通过实现Filter-HookDriver的方式来操控ipfiltdrv.sys对网络数据包的过滤,本课题主要分为核心层驱动和用户层调用函数及界面两个模块,通过用户层操作控制核心层驱动程序,从而实现个人防火墙。
简单来说,实现Filter-Hook就是对系统ipfiltdrv.sys的接口的实现。
本文的整体结构如下:
Ø第一章主要阐述系统开发的背景和研究意义、国内外研究现状以及本文总体概述。
Ø第二章主要针对本文所涉及的技术的相关知识理论进行简单的介绍。
Ø第三章将介绍本防火墙系统开发中所用到的开发环境和工具。
Ø第四章详细介绍本文个人防火墙的系统设计和各个功能模块。
Ø第五章主要阐述核心功能的具体实现和详细分析以及系统测试等。
Ø最后是总结,致谢等。
第二章相关理论简介
本章将对课题实现中所用到的技术和开发工具进行介绍。
将对各种主流防火墙核心过滤技术、TCP\IP和驱动开发相关基础知识再做简单介绍。
另将主要介绍如Filter-HookDriver、IP过滤驱动(IPFilterDriver)等所用到的技术。
2.1防火墙核心过滤技术
网络防火墙的核心过滤都是基于数据包的拦截技术之上的。
在Windows下数据包的拦截方式可分为用户态和内核态数据包拦截两大类[]。
2.1.1用户态数据包拦截技术
用户态下的数据包拦截技术主要为Winsock2SPI(ServiceProviderInterface)。
Winsock2是WindowsSockets的2.0版本,SPI是Winsock2提供的一个可编程接口。
SPI以动态链接库(DLL)的形式工作在应用层,开发者通过安装自己编写的SPI程序(服务提供者接口程序)来处理截获的基于Socket的网络数据包以完成过滤。
Winsock2SPI以DLL形式存在,编程简单,调试方便。
并且数据封包比较完整,便于内容过滤。
但无法拦截核心层或不用Socket的网络通讯(如ICMP)的数据包,容易被木马或病毒绕过[]。
2.1.2内核态数据包拦截技术
内核态下的数据包拦截方式有多种:
TDI过滤驱动程序、NDIS中间层驱动程序、NDIS-HookDriver和Filter-HookDriver。
目前很多大型防火墙都是采用复合型的数据包过滤技术。
下面简单介绍各包拦截技术。
Filter-HookDriver将在后边进行单独的介绍。
1.TDI(TransportDriverInterface)过滤驱动:
TDI-FilterDriver程序通过将创建的一个或者多个设备对象挂载到一个现有的驱动程序(tcpip.sys)之上,当有应用程序或其他驱动程序调用这一个或多个设备对象时,会首先映射到过滤驱动程序上,然后再由过滤驱动程序传递给原来的设备对象[]。
这就完成了数据包的过滤。
其优点是可以获取到当前进程的详细信息。
缺点是该驱动位于tcpip.sys上,不能获取由tcpip.sys直接处理的数据包,且TDI驱动需重启系统才能生效。
另外Windows2000之前的系统不支持。
2.NDIS中间层驱动:
位于协议驱动和小端口驱动之间。
主要在网络层和数据链路层对数据包进行过滤。
NDIS由于是在网卡驱动程序和传输驱动程序间插入了一层,其优点是过滤功能强大,能截获所有的数据包,安全系数高[]。
缺点是编程规范要求苛刻复杂,难度较大;不容易安装,安装出错容易导致系统错误;也不支持Windows2000之前的系统。
3.NDIS-HookDriver:
NDIS-HookDriver是目前大多数网络防火墙采用的方法。
NDIS(NetworkDriverInterfaceSpecification)是微软和3COM公司定制的一套开发Windows下网络驱动程序的标准,为网络驱动的开发提供一套标准接口,使得网络驱动程序的跨平台性更好。
该技术的实现方法是安装Hook钩子到ndis.sys中,替换其中某些关键函数,从而达到截获网络数据包的目的[]。
具有安装简单,截包完整全面,安全性高等优点,但无法获得应用程序进程信息。
以上几种方法对于团队开发而言,NDIS-Hook是最佳选择,TDI-FilterDriver次之。
但对个人而言,工作量较大。
2.1.3Filter-HookDriver
国内关于TDI和NDIS驱动的资料比较多,但有关Filter-HookDriver的书籍资料就相对少很多。
本文所采用的Filter-HookDriver数据包拦截过滤驱动技术在Microsoft微软相关文档里也只有Windows2000DDK中有一些介绍,实际上它只是扩展了IP过滤驱动(IPFilterDriver)的功能,是一种内核模式驱动(KernelModeDriver)。
IPFilterDriver对应ipfltdrv.sys文件,该文件在WindowsXP中的System32\drivers目录下,它允许用户注册自己的IP数据包处理函数。
这个驱动文件默认未加载,但可以手动加载。
Filter-HookDriver主要利用IpFilterDriver(ipfiltdrv.sys)所提供的功能来拦截网络数据包,可应用与TCP\IP协议[]。
其工作方式如下:
在Filter-HookDriver中提供我们自己编写的回调(callback)函数,然后用IP过滤驱动注册回调函数。
实现步骤如下:
1.建立Filter-HookDriver。
2.得到指向IPFilterDriver的指针。
3.获得指针后,通过发送特殊的IRP请求安装过滤函数,该请求传递的数据包含了过滤函数的指针。
4.过滤数据包。
5.结束过滤,撤销过滤函数(通过传递NULL指针作为过滤函数指针来实现)。
另外,最多只能注册一个Filter-HookDriver。
只有当Filter-Hook回调函数为空时,Filter-HookDriver才能向IPFilterDriver注册自己提供的回调函数,后者调用提供的回调函数来实现Filter-HookDriver控制数据包过滤。
该技术的优点是结构简单,易于实现,且能截获所有的IP数据包(包括ICMP包)。
但无法获取当前应用程序进程信息,也无法取得数据包的以太帧,也不支持Windows2000之前的系统。
本文采用Filter-HookDriver控制数据包过滤,故不支持Windows2000以前的系统。
2.2TCP\IP网络通信协议
TCP\IP协议指因特网整个TCP\IP协议族,而不是表面上的TCP和IP协议的合称。
TCP\IP协议族用于各平台下计算机之间的通信,是当今互联网通信的基础。
与OSI七层参考模型不完全相同,TCP\IP协议族通常被认为是一个四层协议系统。
TCP\IP协议族的四个层次与OSI七层参考模型间的对应关系如图2-1所示:
图2-1TCP\IP协议族与OSI模型对应关系
如上图所示,人们通常(由于对于TCP\IP协议族与OSI七层模型不能精确的匹配,故也没有一个完全正确的说法来说明他们之间的对应关系)认为OSI模型的应用层、表示层和会话层这上三层在TCP\IP协议族中是应用层,而其最底两层在TCP\IP协议族中是链路层。
防火墙系统的过滤驱动模块工作在WindowsTCP\IP协议模型的传输层。
下文将对本文用到的协议做简单介绍。
2.2.1IP网际协议
IP是TCP\IP协议族中最为核心的协议。
所有的TCP、UDP和ICMP数据都以IP数据报格式传输。
IP数据报由IP首部和数据组成。
IP首部一般长度为20Byte,除非包含有选项字段[]。
其首部的固定部分的字段为:
版本(4bit)、首部长度(4bit)、服务类型(8bit)、总长度(16bit)、标识(16bit)、标志(3bit)、片偏移(13bit)、生存时间TTL(8bit)、协议(8bit)、首部检验和(16bit)、源地址(32bit)、目的地址(32bit)。
本文中对数据报的处理时所需注意的主要为版本、服务类型、协议、源地址和目的地址字段。
2.2.2TCP传输控制协议
TCP协议属于运输层,向应用层提供面向连接的,可靠的字节流服务。
TCP数据被封装在IP数据报中,如图2-2所示:
图2-2TCP数据在IP数据报中的封装
TCP首部包含源端口和目的端口的端口号字段、序号字段、确认序号字段、首部长度字段、检验和字段等。
源端口和目的端口号用于需找发送端和接收端的应用进程,这两个值加上IP首部中的源地址和目的地址可以唯一确定一个TCP链接。
序号用来标识源目端之间的数据字节流。
许多应用程序都使用TCP,如FTP、Telnet和SMTP。
2.2.3UDP用户数据报协议
UDP是一个简单的面向数据的运输层协议。
与TCP协议同属运输层,但与TCP协议不同,它是一种非连接导向协议,不提供可靠性。
UDP首部字段包含源端口号、目的端口号、UDP长度、UDP检验和以及数据(可无)几个字段。
源、目端口号指明发送进程和接收进程;UDP长度表示UDP首部和UDP数据的字节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 平台 个人防火墙 设计 实现