费尔个人防火墙核心技术简介 |
||
编号:2002060501 |
||
正文: | ||
费尔个人防火墙采用两种封包过滤技术:
1. 应用层封包过滤,采用 Winsock 2 SPI。 Winsock 2 SPI 的技术特点: Winsock 2 SPI 工作在 API 之下 Driver 之上,属于应用层的范畴。利用这项技术可以截获所有的基于 Socket 的网络通信。比如:IE、OUTLOOK 等常见的应用程序都是使用 Socket 进行通信。它的技术特点主要有: 优点: 1. 工作在应用层,以 DLL
的形式存在,编程、调试方便。 缺点: 1. 不用 Socket
的网络通信无法拦截,比如:使用NetBios的网上邻居,和使用ICMP协议的Ping。 SPI 在 操作系统种的结构如下图:我们需要处理的是传输服务提供者。 层次结构图:费尔个人防火墙的XFILTER.DLL处的就是基础服务提供者的位置。 NDIS-HOOK 的技术特点: NDIS 是网络接口规范,Windows 使用 NDIS 函数库实现 NDIS 接口。所有的网络通信最终必须通过 NDIS 完成。NDIS 横跨 传输层、网络层和数据链路层,NDIS 的结构如下图: 微软提供了以下几种标准接口编程方式: 1. TDI 传输层过滤驱动程序(TDI Filter,比如常见的
Tcp Filter Driver) 其中 TDI Filter Driver 和 IM Driver 通常用做封包过滤。也是防火墙和VPN软件常用的技术。但是它们都有一些缺陷: TDI Filter Driver 属于 Upper Driver,位于 TcpIp.sys 之上,这就意味着由 TcpIp.sys 接收并直接处理的数据包就不会传送到上面,从而无法过滤某些接收的数据包,典型的就是ICMP,ICMP的应答包直接由TcpIp.sys生成并回应,上面的过滤驱动程序全然不知。 IM Driver 功能比较强大,但编程接口复杂。最麻烦的是安装,自动化安装太困难。 NDIS-HOOK 克服了上面的缺陷。NDIS-HOOK 的工作原理是直接替换 NDIS 的函数库中的函数地址,这样只要向 NDIS 的请求就会先经过我们自己函数的处理,这样就非常简单,处理完转发给系统函数就完成了。NDIS-HOOK技术有以下特点: 1.
编程方便、接口简单、思路明确、性能稳定。 NDIS-HOOK 安装前的结构示意图: NDIS-HOOK 安装后的结构示意图: |
||
|