摘 要 目前基于网络的入侵检测系统(NIDS)面临普通单机检测设备的数据包处理能力不能适应网络带宽发展需求的问题,本文介绍了利用NIDS机群在高速网络环境下实现入侵检测的方法,本文从NIDS机群体系结构的角度出发就利用NIDS机群进行数据分流实现入侵检测的方法及进行了探讨,提出了NIDS机群的框架结构,和适用于NIDS机群的负载均衡策略。 关键词 基于网络的入侵检测系统;集群;负载均衡 1 NIDS面临的问题和解决的方法 随着现代网络技术的迅猛发展,交换技术的不断提高,千兆网络解决方案已经 成为一种潮流,尤其是电信IDC、金融、ISP等企业,均采用了OC-3或千兆的骨干网络环境。像在这样的高端用户群的网络中,他们的共同特点是:网络数据流量非常大,一般持续流量可以达到标准流量的70%—90%;并发连接数极高,骨干网络中的业务服务能力非常强,并发联接数可达百万到千万级,而且并发联接数建立过程也非常快,通常要求在数秒内达到并发联接数的上限。要在这样一个高背景流量环境下进行网络安全监控将会面临很多难题。海量的安全事件对入侵检测系统本身也是一个严峻的考验。 目前市场上主流的基于网络的入侵检测系统还没能满足千兆网络环境的要求,对于像2.5G POS高于千兆流量的情况,入侵检测系统就更加难以处理。如何为高端用户提供可靠的高背景流量下的网络入侵检测,又顾及入侵检测系统网络负载能力,同时保证系统的可扩展性、可维护性,是目前高端入侵检测系统面临的一个主要难题。 在这种情况下有许多提高NIDS性能的方法,如减少环境切换,分布式节点、数据分流、提高硬件性能等。 环境切换是指内核模式和用户模式之间的数据复制。减少数据包处理过程的环境切换可以有效提高接受数据包得性能。如为了提高传统的基于libpcap库基础上开发的入侵检测系统的性能。产生了一种 “零拷贝”技术。但是这种技术只是在一定程度上提高了NIDS的数据包捕获的能力。在提高了捕获能力后,由于受到CPU和协议栈等性能的影响,数据包的匹配检测能力会成为NIDS的下一个瓶颈。 为解决高速网络环境中丢包问题,1999年6月,出现了一种新的结构,基于分布式网络结点结构的IDS,也称为Stack-Based IDS(因为虽然IDS Sensor被装每一个主机上,但它处理的是基于TCP/IP协议的网络数据包)。它将IDSensor分布到网络上的每台机器上,每个Sensor只检查访问本地机器的IP分组然后传感器相互通信,主控制台将所有的告警聚集、关联起来。这种采用分布式网络节点的入侵检测系统一定程度的解决了高速网络中入侵检测性能不高的问题。但是这种方法也有明显缺点,在子网内的所有机器上面安装Sensor检测网络数据,不可避免的会影响机器的其它应用,同时也会产生较大的网络流量。 目前,已有部分基于ASIC的入侵检测系统进入市场,国内也有若干基于网络处理器开发的千兆入侵检测系统。这些基于较高性能的硬件开发的系统,主要面临的问题是开发周期较长和成本较高。采用机群分流的方式是在单机没有较高的检测能力情况下的一种解决问题的方法。通过多台计算机构成机群,能够得到更高的处理性能。在入侵检测领域可以通过这种方式构成NIDS机群以满足高带宽情况下对入侵检测设备的性能要求。 机群(Cluster)是一种并行或者分布处理系统,指一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。利用成熟的机群技术,可以构建由多台服务器组成的单一入侵检测系统。通过建立负载均衡机群,将被一台服务器捕获的千兆带宽的网段内的数据包,根据负载情况转发到多台装有百兆等级IDS的服务器进行处理。这样就能通过多个百兆等级的IDS构成一个满足千兆环境的入侵检测系统。通过使用机群技术,使网络数据分流是解决高速网络环境下实时有效检测和大容量存储的问题的有效手段。2 NIDS机群的应用结构 NIDS机群在实际的应用中,不仅可以将数据分流,还可在数据分流的基础上进行集中管理和分析。如图1展示了一个典型的利用负载分流的方式实现监控DMZ网络流量的架构。在这个体系结构中,由前端负载均衡器捕获数据并按设定的负载均衡算法将网络数据流转发到不同的处理节点。负载均衡器在转发数据的同时也实现了网络负载平衡,有效地在处理节点中分配了工作负载或网络流量。多个IDS Sensor捕获数据流后由一个或多个分析机进行处理。监控台对各个IDS Sensor和分析机状态进行监控,控制台对产生的报警信息进行处理分析,并通过防火墙和路由器对访问数据流进行过滤和控制。数据库统一保存捕获的数据和产生的日志。图1通用NIDS机群应用结构图 完整的检测过程可以分为七个部分(1)量复制:捕获网络数据包;(2)载均衡:根据每个IDS的负载情况和检测能力,均衡分配负载; (3)实时检测:从普通的数据流中发现可疑的数据流;(4)分析:判断可疑的数据流是否正常行为或入侵行为;(5)监控:使网络管理者看到入侵行为,提供报告和解决方案;(6)管理:根据入侵行为设置IDS并通过路由器或防火墙控制访问的数据流;(7)二次分析:在数据库所保存的捕获数据中利用统计和其他相关人工智能的方法发现异常行为和新的入侵行为规则。 在上图的NIDS机群系统中,通过负载均衡器复制了流量,并保证来自同一客户端的多个请求不会被混淆。比如来源于一个IP地址的攻击提供了有效的连接请求,在这种情况下,最初无害的数据包可以被转发,直到IDS发现这个入侵数据包,检测到入侵信号,再由管理控制系统通过防火墙或直接发送rst包终止连接。 在图1所示的入侵检测机群系统中,前端的负载均衡器直接影响了系统的整体性能。如何设计和实现IDS负载均衡器是构建入侵检测机群的核心问题。负载均衡器是主要需要完成的功能是数据包的捕获,分类和根据负载均衡策略转发。目前,大多商用NIDS负载均衡器是通过ASIC实现。也可基于pc实现NIDS负载均衡器,但所能等达到的性能会有较大差距。 3 NIDS机群负载均衡器 负载均衡器是NIDS机群中的核心设备,它主要需要完成的功能是数据包的捕获,分类和根据负载均衡策略转发。目前,大多商用NIDS负载均衡器是通过ASIC实现。但也可基于pc实现NIDS负载均衡器。基于pc实现的NIDS负载均衡器由于转发和负载均衡一般都在IP层实现,且对仅针对数据包头进行简单处理,所以相同硬件条件下pc做负载均衡、分流转发相对于入侵检测可以获得更高的网络处理能力。虽然受到自身硬件能力的限制,目前还不可能实现千兆流量的分流能力。但通过采用千兆网卡也能实现400—500兆能力的数据分流,如果采用较高配置的pc,并对包捕获机制进行优化处理,完全可能达到更高的分流能力。因而PC实现NIDS负载均衡器仍有一定的实际意义。4 NIDS机群的负载均衡策略 在入侵检测系统中,连接和会话数据的完整性是保证系统性能的重要因素。只有获得完整的一个连接中的所有数据,才能真正对整个连接过程进行实时监控。如果使用随机的方式进行分流,入侵攻击的数据就可能被分配到不同的检测设备中,这时检测设备就无法得到足够的数据来分析并检测此入侵行为并相应的产生报警信息。此外,为了提高检测速度和减少匹配链进行的协议分析也需要完整的连接数据包进行包重组和流重组。因此在由机群构成的入侵检测系统中,数据的分流不能是随机实现的。与标准的负载均衡机群相比,Round Robin等常用的基本负载均衡算法不能直接应用在NIDS负载均衡机群中。 大多数生产IDS负载均衡器的厂家都声称自己实现基于会话实现负载均衡,因为一个完整的会话可以保存足够的信息供IDS检测,会话的完整性保证了tcp流重组,ip包重组并在此基础可以进行相应的协议分析和模式匹配。保证会话的完整性是实现入侵检测的最低要求,也可以认为是实现负载均衡的最小粒度。此外还可以通过源、目的ip、源、目的端口,以及协议的5元组来实现数据包的流分类,将相同的流中的数据包,转发给指定的检测机器。也可根据数据包的源地址分类,将相同源ip地址的数据包,转发给指定的检测设备。具体的实现算法如下介绍。 基于源地址散列的分类(Source Hashing Scheduling),它