如何运用包过滤技术实现个人防火墙
2008-02-23 07:33:56来源:互联网 阅读 ()
摘要:本文通过介绍如何运用包过滤技术实现个人防火墙,深入的剖析了个人防火墙中所用到的各种技术,并重点介绍了通过微软的NDIS 中间驱动程序实现网络封装包,以及驱动程序与应用程序之间的通讯方法。
随着网络的迅速发展,各种各样的网络软件也随之出现,人们的生活和学习对网络的依赖也越来越多,但问题也接踵而来,网站被攻击,病毒泛滥,个人信息被窃取,使人们面临这样一个问题:网络是否安全?
而防火墙正是网络的保护伞,形形色色的防火墙很多,本文通过介绍包过滤技术实现个人防火墙,使大家对防火墙的知识有进一步的了解。
一、防火墙和包过滤技术简介
防火墙是一种用于在两个网络间进行访问控制的设备,防火墙系统防范的对象是来自被保护的网络的外部的对网络安全的威胁,它通过检测、限制、更改跨越防火墙的数据流,尽可能的实现对外部网络的安全保护。
而包过滤技术是防火墙最基本的实现技术,具有包过滤技术的装置是用来控制内、外网络数据流入和流出,包过滤技术的数据包大部分是基于TCP/IP协议平台的,对数据流的每个包进行检查,根据数据报的源地址、目的地址、TCP和IP的端口号,以及TCP的其他状态来确定是否允许数据包通过。
二、截获网络封装包
截获数据包是实现一个防火墙的第一步,截获数据包的方法有很多种,既可以在用户态下拦截网络数据包,又可以在核心状态下进行数据包截获。
在用户态下进行网络数据包拦截有以下几种方法:
(1)Winsock Layered Service Provider (LSP)。
(2)Windows 2000 包过滤接口。
(3)替换系统自带的WINSOCK动态连接库。
很显然,在用户态下可以很简单的进行数据包拦截,但其最致命的缺点就是只能在Winsock层次上进行,而对于网络协议栈中底层协议的数据包无法进行处理。对于一些木马和病毒来说很容易避开这个层次的防火墙。
因此大多数的个人防火墙选择利用网络驱动程序来实现的。例如用中间层驱动程序来截获数据包。
中间层驱动介于协议层驱动和小端口驱动之间,它能够截获所有的网络数据包(如果是以太网那就是以太帧)。NDIS中间层驱动的应用很广泛,不仅仅是个人防火墙,还可以用来实现VPN,NAT,PPPOverEthernet以及VLan。中间层驱动的概念是在Window NT SP4之后才有的,因此对于Windows9x来说无法直接利用中间层驱动的功能。Windows DDK提供了两个著名的中间层驱动例子:Passthru以及Mux。开发人员可以在Passthru的基础上进行开发,Mux则实现了VLan功能。目前个人防火墙的产品还很少用到这种技术,主要的原因在于中间层驱动的安装过于复杂,尤其是在Windows NT下。Windows 2000下可以通过程序实现自动安装,但是如果驱动没有经过数字签名的话,系统会提示用户是否继续安装。中层层驱动功能强大,应该是今后个人防火墙技术的趋势所在,特别是一些附加功能的实现。
图1.NDIS驱动程序模型
三、驱动程序和应用程序间的通讯
当驱动程序截获网络数据包后,驱动程序要和应用程序进行通讯,通知应用程序对数据包进行判断,如果符合过滤规则,则接受数据包,否则,则放弃该数据包,其步骤大致如下:
(1)应用程序创建一事件Event;
(2)应用程序通过CreateFile创建驱动程序实例;
(3)把该事件的句柄传给驱动程序;
(4)驱动程序通过DeviceControl函数接受Event的句柄;
(5)应用程序通过DeviceIOControl函数传递控制驱动程序的消息;
(6)驱动程序通过Dispatch历程得到应用程序传来的消息,然后根据消息类型进行不同的服务;
(7)把结果数据放入共享内存区,设置Event事件通知应用程序所请求的事情已经办完;
(8)应用程序通过WaitForSingleObject来获知事件发生;
(9)应用程序在共享内存区获得数据,并重置该事件。
图2 驱动程序与应用程序通讯模型
四、过滤规则设置
包过滤防火墙的过滤规则集由若干条规则组成,它应涵盖对所有出入防火墙的数据包的处理方法,
对于没有明确定义的数据包,应该有一个缺省处理方法;过滤规则应易于理解,易于编辑修改;
同时应具备一致性检测机制,防止冲突。IP包过滤的依据主要是根据IP包头部信息如源地址和目的地址进行过滤,
如果IP头中的协议字段表明封装协议为ICMP、TCP或UDP,那么再根据ICMP头信息(类型和代码值)、
TCP头信息(源端口和目的端口)或UDP头信息(源端口和目的端口)执行过滤,其他的还有MAC地址过滤。
应用层协议过滤要求主要包括FTP过滤、基于RPC的应用服务过滤、基于UDP的应用服务过滤要求以及动态包过滤技术等。
在一般情况下,我们可以从以下几个方面来进行访问规则的设置:
(1)禁止一切源路由寻径的IP包通过;
(2)IP包的源地址和目的地址;
(3)IP包中TCP与UDP的源端口和目的端口;
(4)运行协议;
(5)IP包的选择。
动作 |
协议 |
方向 |
访问时间 |
远端IP |
端口 |
应用程序 |
备注 |
放行 |
IP |
流进 |
工作时间 标签: 版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
相关文章
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设 网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源 网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它 服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护 软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash 热门词条
最新资讯
热门关注
热门标签
|