数据采集与动态分流模型的设计
2009-08-12
作者:梁 钢
摘 要: 高速网络下的网络入侵检测系统需要解决数据获取的完整性和分析的实时性。本文给出了一种采用流量分发技术的数据采集方法来适应宽带高速网络的要求。
关键词: 网络入侵检测系统 流量分发 包捕捉
目前,常用的保障网络安全的手段是网络防火墙(Network Firewall)和入侵检测系统(Intrusion Detection System,IDS)。IDS按照数据的获取方式可分为二大类:基于主机的入侵检测系统(Host Intrusion Detection System,HIDS)和基于网络的入侵检测系统(Network Intrusion Detection System,NIDS),其中NIDS更常用。
NIDS主要由数据采集器(Sensor)、分析器(Analyzer)和控制台(Console)组成。
数据采集部分又被称为探测器、传感器,主要用于监测并获取网络中传输的各种数据包,为进一步分析研究提供依据。数据采集功能组件不仅是实现NIDS的基础,还可以被广泛用于网络数据计费、网络流量控制、网络管理和网络故障处理等多个领域。近年来,随着高速宽带网络的发展,宽带网络数据监测采集系统的研究越来越受重视。本文将提出一种高速网络数据和监测系统模型。
1 NIDS体系结构
NIDS主要分为二类:(1)集中式,集数据采集、分析、控制于1个设备或模块。(2)分布式,将数据采集和分析作为代理程序,另设立一个集中的管理程序。因此,按照NIDS的目标和功能组成可以将其分成在软件和硬件上相对独立的3个子系统。
(1)数据采集子系统,用于收集网络中通信的数据流。
(2)分析子系统,用于分析数据流,检测攻击特征。
(3)控制台子系统,用于配置和管理系统。
NIDS要求必须对所有的数据包进行分析,这就要求数据采集组件完整地获取网络通信的数据流,并将它交给分析子系统。针对高速网络的特点,提出了动态网络数据分流的方法。
通常NIDS的数据采集主要通过网络数据包捕捉(Network Packet Capturing)技术实现,即将网络接口设置为混杂模式(Promiscuous Mode),监听网络上的所有数据包,再经过过滤器(Packet Filter)按用户规则过滤出需要的数据包,供分析研究。
NIDS中主要的数据采集方法有以下几种。
①使用Socket、DLPI、BPF、Libpcap等工具软件包直接采集。其中BPF的结构如图1所示。为了提高性能,将过滤器设置在Kernel内而不是用户空间中,以减少内存复制。BPF有多个改进版本,如DPF、XPF、BPF+,它们针对Filter的并行性、过滤规则优化、过滤指令做了改进。
②采用Layer 4交换机(Switch)或Layer 7交换机在转发端口进行网络数据分流,其系统结构如图2所示。由Layer 4/7交换机将高速网络数据按照一定算法(一般是用哈希算法,根据数据包的源IP、源Port来区分数据流)分发到后台连接的NIDS的数据采集分析部分,以满足高速网络环境下的要求。然而,为传统Web Server均衡负载目标而设计的Layer 4/7交换机价格较高(是NIDS的数倍),且针对NIDS的需求进行灵活的配置时存在固有的局限。
基于上述二类方法,结合NIDS的需求,本文提出了基于动态网络数据分流的数据采集子系统,将过滤器和分流器结合起来,并按照系统的输入和输出变化进行调整,以提高性能。
2 动态数据分流算法
2.1 系统结构
一般而言,NIDS的数据采集与分析是影响系统性能的主要因素。因此,将数据采集与分析分开,分别构成独立的子系统。数据采集子系统以提高处理能力为主,分析系统以提高分析的深度及正确性为目标。其结构如图3所示。系统中主要包括数据包捕捉过滤模块、会话(Session)分类模块和会话分流模块。
网络数据包通过网络监听技术被系统捕捉后,先经过数据包捕捉过滤模块,由过滤器按NIDS的要求过滤出所需要的包(丢弃不需要的包,以减轻系统负担)。这些数据包流入会话分类模块,按会话类型进入分流模块的分发队列,分发到NIDS分析子系统的每个分析模块。
2.2 各组成模块
2.2.1 过滤模块
该模块主要基于Libpcap进行数据包捕捉和过滤。这是因为Libpcap具有一定的开放性和标准性。数据分析采用的Snort NIDS也是基于Libpcap实现的。将后台数据分析子系统的包捕捉过滤要求设置在本模块中,可以保证包捕捉时过滤掉不需要的包,减轻了负担。
2.2.2 分类或分流模块
基于数据分流完整性的考虑,将会话作为分类的最小单元。它由5个元素组成,即源IP地址、目的IP地址、协议、源端口、目的端口。采用动态网络数据分流方法对分类的流量进行分流。
要解决系统的数据分流均衡问题,必须考虑分发过程中的拥塞问题及异常问题(如某个输出端口故障)。解决数据分流均衡问题有轮转法(Round Robin)、加权轮转法(WRR)、最小连接优先法、最大响应优先法、哈希法等。一般不专门考虑分发过程中的拥塞问题。由于Layer 4/7交换机的主要应用环境是将多个Client的请求分发到多个Server,因此直接丢弃数据包即可使Client重新发起连接,解决拥塞问题。解决分发过程中的拥塞问题主要通过Drop Tail、RED、AQM(Active Queuing Management)等技术。一般是在路由器中,采用按一定算法丢弃数据包的方法,与输入端通信,解决拥塞问题。本系统是单向地捕捉数据包进行分发,因此要结合上述算法的优点,加以分析改进。
数据分类及分流模块的结构示意图如图4所示。在设计中,动态网络数据分流算法主要采用基于表的哈希散列法(Table-based Hash)并加以改进。系统有N个输出端口,设置值为M(M是N的倍数)。对于过滤后的数据包流F-in,根据M分类(即F-in的源IP地址Src-IP以M模运算取余数),查表得出输出队列端口N。
T(M,N)的分流可以按权重进行,能较真实地反映输出队列端口的处理能力。例如,对于3个输出队列端口,N=3,M=6,若第1个输出队列端口处理能力较低,第2个输出队列端口处理能力较高,第3个输出队列端口处理能力一般,则可以设置分流比例为1:3:2。一般M=aN,a为比例因子,反映其调控能力。
对于仍存在的拥塞问题,需要将输入端的分类、分发和输出队列综合考虑,改进工作。从解决拥塞问题的算法AQM可知,对于输出队列Q的每个队列Qn,有阈值Qmin和Qmax,以反映输出端口的处理能力。对于过滤后的数据包流F-in,分流后的Qn有:
若Qn 若Qn>Qmax,则启动处理程序A。
处理程序A启动后,通知分类部分,增加元素参与运算,即从初始的{源IP地址、目的IP地址、协议、源Port、目的Port}5元组中的{源IP地址},增加为{源IP地址、目的IP地址},算法不变,仍为对M取余数,再查表得出输出队列端口n(在实现时T(M,N)为一维数组,M为T[]的序号,N为T[]的值)。同理,分类可以由程序A控制,增加元素参与运算直至5元组全部被添加,使分类可以越来越细,以适应端口输出能力变化。采用逐步细化分类方法,以减少计算开销。
对T(M,N)进行调整,从输出队列Q的每个队列Qn中选出Qn 整个算法概括如下。 (1)系统初始化 ①按后台连接的NIDS(Snort)的过滤规则的协议首部配置本系统的捕捉过滤部分,以尽早丢弃不必要的数据包,提高系统性能。 ②初始化参与分类的元素。 ③初始化分发Hash表T(M,N),即T[M]数组,M=aN(1≤a≤5)。T[M]从1~n循环取值,即T[1]=1,T[2]=2,……T[n]=n,T[n+1]=1,T[n+2]=2,……T[M]=n,这样,可以尽量均衡地分配流量。 ④初始化输出队列Qn的Qmin和Qmax,其值主要参考NIC的参数来设定。 (2)分类及分流程序的执行 ①数据包F-in经捕捉过滤为FP-in,按Hash法对M取余,经T(M,N)得出n值,转入输出队列Qn。 ②进入Qn时,对Qn判断: 若Qn 若Qn>Qmax,则启动处理程序A。 ③恢复。
(3)启动处理程序A执行 ①调整分类,增加参与分类的元素。 ②调整T(M,N)。 3 小 结 针对高速网络的环境,采用分流方式的数据采集分流子系统,结合分发算法、均衡算法、拥塞控制算法的优点,改善了系统的性能。此外,它还具有方便扩展的优点。高速网络的数据经分发后,可以运用传统的低速处理设备进行分析处理,解决了高速环境下因处理能力不足而带来的数据遗漏。本文就数据采集和分发进行了详尽论述,解决NIDS中数据获取的问题。 参考资料 1 Stevens W R著,范建华译.TCP/IP详解.北京:机械工业出版社,2000 2 Oruganti S S,Devetsikiotis M.Exploiting Traffic Prediction and Adaptive Control to Implement Robust Active Queue Management Schemes.http://www4.ncsu.edu:8030/~ssorugan/CACC_report.pdf,2002 3 唐正军.网络入侵检测系统的设计与实现.北京:电子工业出版社,2002 4 Zegura E.Performance of Hashing-Based Schemes for Internet Load Balancing.http://citeseer.nj.nec.com/