


解析Windows下个人防火墙实现技术路线
防火墙技术在网络安全领域是数据加密与签名外的另一个核心要点。基于Windows平台上的个人防火墙系统的实现需要理解Windows的网络编程的一些独特底层接口和网络协议底层,难度极大。另外,个人防火墙系统实现所用到的很多软件技术和企业级的网络防火墙、硬件防火墙原理基本是相同的,因此对个人防火墙系统的研究能极大地推动网络安全技术进步和人才涌现,具有重大工程意义。
国外在该领域发展得比较快,国内主要有天网防火墙和许多原来是开发杀病毒软件的开发商的个人防火墙,如KV系列、KILL系列、金山系列等,而且在实用性能上并不比国外知名品牌逊色。由于网络安全领域涉及机密多,无法得到商业个人防火墙的技术实现细节上的区别联系。
1个人防火墙功能分析
(1)实时监控,根据安全规则对进出本机的网络封包进行过滤;
(2)受到攻击时向用户报警指示;
(3)日志记录网络访问动作的详细信息;
(4)电子邮件监控,可以根据自定义的过滤规则对邮件实施过滤;
(5)根据特征库进行入侵检测;
(6)在线升级特征库;
(7)将防毒、杀毒和个人防火墙集成在一起。
这里进一步继续分析。取并集可以得到一种功能强大的方案,但很多功能不完全属于防火墙技术领域的研究范围,如入侵检测和防毒杀毒和邮件监控功能,而在线升级是~种技术支持的手段。入侵检测是项复杂的技术,有许多实现方法,最常用的是借鉴杀毒软件的工作原理定义一个入侵的特征库,根据这个特征库里的数据用包过滤技术对入侵进行拦截,也就是基于特征库进行数据包截获分析,其难点是特征库的建立完善和自学习(关于特征库的建立和自学习不是本项目的研究内容),但本质仍然是以包过滤为核心。
入侵检测和各种规则过滤(包括应用程序规则和电子邮件规则)都是基于数据包截获分析技术基础上的,可以在不同的网络体系结构层次截获网络通信数据包,然后结合自定义控管规则进行分析判断是拦截还是放行。因此,防火墙软件技术的核心是数据包封包截获——对网络上流动的数据包截获并分析,通过控管规则来决定放行或者禁止出/入。因此,这里定义个人防火墙软件系统应该具有的功能点有:
(1)根据应用程序控制访问规则对应用程序的联网动作进行过滤检查;
(2)对应用程序控制访问规则具有自学习功能;
(3)可实时监控,监视网络活动;
(4)具有日志,以记录网络访问动作的详细信息;
(5)被截获时通过声音或闪烁的图标向用户报警提示。其中(1)是个人防火墙的基本功能,(4)、(5)是一个实用的个入防火墙系统应具备的辅助功能,(2)的要求比较高,要求个人防火墙系统在找不到完全符合的控管规则定义时具备一定的智能学习能力来决定放行或拒绝的管制动作。
2 Windows网络体系结构分析
OSI/RM(OSI参考模型)是ISO最早给出的网络体系结构参考模型嘲,它首先提出了协议分层和对等层通信,已成为描述和理解各种网络协议和网络通信过程的标准术语。本节将使用OSI参考模型尽可能准确地描述Windows操作系统的网络体系结构,进而分析得到数据包截获可能发生的网络层次与方法。
给出了OSI七层参考模型与Window的网络驱动分层结构,因此包截获可以发生在网卡驱动程序所在的数据链路层及其以上直至应用层的各层中,这给我们提供了拦截网络数据包的基本思路。MicrosoR在Windows的各个网络协议层次上都提供了一些公开规范或者未公开非常规的方法方便开发者来插入一层,因此可以利用这些规范或者非常规的方法在插入的一层处理中进行数据包截获。
在用户态下进行网络数据包拦截就是指会话层和表示层的包截获,利用WinsockSPl(serviceproviderinterface,服务提供程序接口)或直接替换系统自带的Winsock动态链接库来截获包,注意这里指的WinsockSPI编程并不是指Windows上的套接字编程Winsock网络编程。另一个难点是对各种网络坍议的解析,可以使用一些嗅探器软件工具(如著名的Sniffer)来学习各种TCP/IP协议。
TDI层及以下底层的操作必须借助它提供的一些接口和开发规范进行,操作系统工作在系统态保护模式下。在系统态下的截获要使用到WindowsDDK(windowsdevicedevelopingkit)和TDI(transport layer device interface filter driver)、NDIS接口规范(networkdriverinterfacespecification)。DDK是Windows下驱动开发的开发包,可以通过学习W/NDDK中的一些简单范例找到解决方法。
在系统态下首先看最底层,从网络体系结构来看截获可发生在网卡驱动程序所在的数据链路层。但防火墙系统需要从数据包截获中得到的主要是IP地址、协议服务类型和应用程序信息,在网络层进行截获已经足够可以获得这些信息,无必要对网卡MAC帧进行截获分析。而且在网卡截获适应各种各样的网卡硬件环境,实际上也就是开发一个网卡驱动程序,这与防火墙系统的开发目标不太吻合。
从上向下看系统态下的方案还可以利用TDI层上的过滤驱动程序
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解