智能主动防御系统(08-100)
2.1.3 智能防火墙的实现
本文引用地址://www.cazqn.com/article/91772.htm智能防火墙的实现可以分为用户态程序和NDIS中间层驱动程序两部分,如图3所示。
图3 智能防火墙的实现
1. 用户态程序的实现
用户态程序使用了WinPcap开发库和多线程技术。利用WinPcap可以实现捕获原始数据包(包括在共享网络上各主机发送/接收的以及相互之间交换的数据包)以及在网络上发送原始的数据包;
本程序的监听线程中使用了WinPcap的数据包捕获功能,对到达主机每个网络接口的数据包进行分析。本程序的扫描线程则使用了WinPcap的发送原始数据包的功能,进行局域网存活主机的扫描。
整个实现用户态程序包括以下三部分的功能:
1) 与攻击者进行交互, 提取未知入侵特征码
2) 将配置信息传递给NDIS中间层驱动
3) 将NDIS中间层驱动反馈信息提示给用户
智能防火墙为了实现主机网络的全面保护,对每个网络接口都启动了单独的保护线程,因此对于装有多网卡的计算机,智能防火墙对每个接口都起到了保护作用。
2. 维护存活主机列表
程序内部维护一张存活主机列表,并且定时对其进行更新(10s)。由于列表中元素增删操作比较频繁,因此存活主机列表采用便于增删操作的“单链表”描述。
更新存活主机列表由扫描和监听两个线程配合进行:
1) 扫描线程:程序利用WinPcap逐一向网内所有主机发出ARP请求数据包。
2) 监听线程: 程序利用WinPcap对到达本机的ARP应答数据包进行分析,并对存活主机列表进行更新。
3. 解决智能防火墙的相互干扰
当局域网内运行有两个或两个以上的智能防火墙实例时,其中一个实例在更新存活主机列表时会向每台主机发出ARP请求,其中也包括向不存活主机发出的请求。如果不做任何处理,其它的智能防火墙就会认为这是攻击,就会向其进行虚假应答,从而导致该智能防火墙不能得到正确的存活主机列表。如果互相干扰那么智能防火墙就不能正常工作了。
为了解决这个问题,我们在智能防火墙发出的ARP请求数据包的附加数据区设置了标志。智能防火墙就能明确是敌是友了。
4. 发现未知入侵
当程序的监听线程检测到有ARP请求时,检查存活主机列表,如果发现是对未存活主机的ARP请求,则伪装成目的主机给出虚假应答。
当智能防火墙给攻击者发出虚假的ARP应答时,攻击主机发送给不存活主机的数据都会发送给本机(智能防火墙)。智能防火墙的监听线程会对接收到的数据包进行分析并根据事先设置好的应答规则对其进行应答,并对攻击主机发送的数据包进行特征提取,存入特征数据库。
5. 特征提取采用的方法
入侵数据包的特征提取是智能防火墙用户态程序的核心工作,特征提取的好坏直接影响着整个防火墙系统的性能。智能防火墙采取的特征提取方法是:去掉数据包传输层以下的协议头数据,对剩余部分数据(应用层协议头和应用层数据体)进行“摘要算法(MD5)”计算,计算的结果就是我们所要提取的入侵特征。这种特征提取方法具有结果唯一性和低存贮空间的特点。为在底层驱动中进行数据包特征的比对提供了便利。
评论