返回列表 发帖

[讨论]用VB编写防火墙的可行性!

纵观国内外的个人防火墙的实现方案,概括起来有以下几种:
用户层拦截winsock函数:因为在Windows上,大部分网络应用程序都是利用winsock提供的网络API来实现网络通信的。只要对这些API进行了拦截,就可以实现对网络数据的控制。这是一种最为简单的方案,如果把网络数据的拦截方案分成一个层次的话,这种方案位于最上面的一层。
用户层的SPI过滤接口:在WS2_32.DLL的下面,系统拥有Windows Sockets 2 SPI层,也就是Winsock Service Provider Interfaces。SPI是Windows Sockets 2提供的一个接口,使开发人员能够在ws2_32.dll之下通过SPI接口插入一层进行过滤。ws2_32.dll在需要的时候会自动加载插入的SPI。这种方案也是用户层下的一种方案,对于一些通过内核驱动来实现通信的数据则无能为力。早期的费尔防火墙便采用了这种技术。他可以过滤所有IP数据包。他的拦截层次比前面所说的拦截winsock函数要低一些,但是仍同属于用户层的拦截。
内核层的NDIS过滤钩子:Windows提供了一个IP过滤驱动ipfltdrv.sys。NDIS过滤钩子允许用户向IP过滤驱动注册回调函数。这样所有的数据都会发送到回调函数中去,在回调函数中可以选择拦截还是通行。这种方案可以拦截所有的IP包,他所依赖的是系统提供的IP过滤驱动。同时也是内核层最上面一层的拦截方案。
内核层的NDIS协议层驱动:NDIS协议层驱动是位于微端口驱动之上。该方案可以拦截所有数据链路层的数据包。相对于NDIS过滤钩子,该方案更为底层一点。
内核层的NDIS中间层驱动:NDIS中间层驱动位于协议层和微端口之间,起一个“中间过滤”的作用。该方案可拦截所有数据链路层的数据包。
内核层的NDIS微端口驱动:NDIS微端口驱动位于最底层,直接操作物理网卡。该方案是所有方案中最底层的部分。其难度也最大,是NDIS中最为复杂的部分。他可以拦截所有通过物理层的数据。
目前,大部分商业软件防火墙多采用内核层的过滤技术。并且越来越趋向于更低的层次。同时也结合了部分用户层的过滤技术。因为涉及到通用性等原因,用户层的拦截在不久的将来并不会消失,相反会使程序更加地灵活和全面。

TOP

[讨论]用VB编写防火墙的可行性!

dabubaobao在黑客防线好象写过一个防火墙编程的文章,好象是利用windows的某个驱动提供的回调函数实现的.
但是在内核层,还是得写驱动..

TOP

返回列表 回复 发帖