一、概述 性能指标是每个用户采购安全产品必定关注的问题。但是,如果不知道这些指标的真实含义,不知道这些指标如何测出来,就会被表面的参数所蒙蔽,从而做出错误的决策。 本文介绍了网络入侵检测系统的性能指标的含义、测试方法,并分析了测试过程中可能作假的方法,以给用户正确选择网络入侵检测产品提供辨别的思路。 二、性能指标简介 不同的安全产品,各种性能指标对客户的意义是不同的。例如防火墙,客户会更关注每秒吞吐量、每秒并发连接数、传输延迟等。而网络入侵检测系统,客户则会更关注每秒能处理的网络数据流量、每秒能监控的网络连接数等。 就网络入侵检测系统而言,除了上述指标外,其实一些不为客户了解的指标也很重要,甚至更重要,例如每秒抓包数、每秒能够处理的事件数等。 1.每秒数据流量(Mbps或Gbps) 每秒数据流量是指网络上每秒通过某节点的数据量。这个指标是反应网络入侵检测系统性能的重要指标,一般涌Mbps来衡量。例如10Mbps, 100Mbps和1Gbps。 网络入侵检测系统的基本工作原理是嗅探(Sniffer),它通过将网卡设置为混杂模式,使得网卡可以接收网络接口上的所有数据。 如果每秒数据流量超过网络传感器的处理能力,NIDS就可能会丢包,从而不能正常检测攻击。但是NIDS是否会丢包,不主要取决于每秒数据流量,而是主要取决于每秒抓包数。 2.每秒抓包数(pps) 每秒抓包数是反映网络入侵检测系统性能的最重要的指标。因为系统不停地从网络上抓包,对数据包作分析和处理,查找其中的入侵和误用模式。所以,每秒所能处理的数据包的多少,反映了系统的性能。业界不熟悉入侵检测系统的往往把每秒网络流量作为判断网络入侵检测系统的决定性指标,这种想法是错误的。每秒网络流量等于每秒抓包数乘以网络数据包的平均大小。由于网络数据包的平均大小差异很大时,在相同抓包率的情况下,每秒网络流量的差异也会很大。例如,网络数据包的平均大小为1024字节左右,系统的性能能够支持10,000pps的每秒抓包数,那么系统每秒能够处理的数据流量可达到78Mbps,当数据流量超过78Mbps时,会因为系统处理不过来而出现丢包现象;如果网络数据包的平均大小为512字节左右,在10,000pps的每秒抓包数的性能情况下,系统每秒能够处理的数据流量可达到40Mbps,当数据流量超过40Mbps时,就会因为系统处理不过来而出现丢包现象。 在相同的流量情况下,数据包越小,处理的难度越大。小包处理能力,也是反映防火墙性能的主要指标。 3.每秒能监控的网络连接数 网络入侵检测系统不仅要对单个的数据包作检测,还要将相同网络连接的数据包组合起来作分析。网络连接的跟踪能力和数据包的重组能力是网络入侵检测系统进行协议分析、应用层入侵分析的基础。这种分析延伸出很多网络入侵检测系统的功能,例如:检测利用HTTP协议的攻击、敏感内容检测、邮件检测、Telnet会话的记录与回放、硬盘共享的监控等。 4.每秒能够处理的事件数 网络入侵检测系统检测到网络攻击和可疑事件后,会生成安全事件或称报警事件,并将事件记录在事件日志中。每秒能够处理的事件数,反映了检测分析引擎的处理能力和事件日志记录的后端处理能力。有的厂商将反映这两种处理能力的指标分开,称为事件处理引擎的性能参数和报警事件记录的性能参数。大多数网络入侵检测系统报警事件记录的性能参数小于事件处理引擎的性能参数,主要是Client/Server结构的网络入侵检测系统,因为引入了网络通信的性能瓶颈。这种情况将导致事件的丢失,或者控制台响应不过来了。 网络入侵检测系统性能取决于软硬件两方面的因素。 1.软件因素 软件因素主要是: ●网络抓包的效率; ●入侵分析的效率。入侵检测一般是基于特征匹配的,将网络数据包与入侵规则库进行特征匹配的。很多产品利用协议分析技术提高入侵分析的效率,先使用协议分析过滤冗余数据,同时尽快在规则树上分叉,加速深度遍历; ●C/S结构下,网络通信的延迟。在服务器端和客户端都要引入网络通信模块,从而增加事件传输的延迟。大多数网络入侵检测系统都是采用Client/Server结构的,例如ISS Real Secure,赛门铁克的IDS系统,启明星辰的天阗和金诺的KIDS等等。像一些基于浏览器/服务器(B/S)结构的网络入侵检测系统就没有这种问题,例如方正科技软件的方通Sniper,因为它的事件直接存储在网络传感器上; ●事件日志库的记录能力。有的系统将事件收集(Event Collector)和事件日志库分开,事件收集器和事件日志数据库又形成了C/S结构,又引入了延迟。如果EC和日志数据库在不同的主机上,更引入了网络传输延迟。ISS Real Secure,启明星辰的天阗和金诺的KIDS等等又是采用这种结构;基于浏览器/服务器结构的网络入侵检测系统也没有这种问题; ●控制台的事件显示效率。很多控制台会因为事件多的处理不过来,所以导致控制台死机。很多C/S结构的控制台完成的功能太多了,例如和传感器的网络通信、和事件收集器的通信、和事件日志数据库的通信,还要完成事件显示、事件分析、系统管理和配置等等。引入了很多性能瓶颈点。如果不能达到实时监控,就会使网络入侵检测系统的价值大打折扣。 2.硬件因素 硬件方面主要是CPU处理能力、内存、网卡和硬盘IO等。 ●CPU处理能力 CPU处理能力是影响网络入侵检测系统网络传感器性能的重要因素。CPU处理能力从三个方面对系统产生影响:CPU主频和CPU的个数,分别被称为CPU的纵向和横向的扩展能力。一般而言,随着CPU主频的提高,网络传感器的处理能力越高,这是显而易见的。 但是是不是随着CPU数量的提高网络传感器的性能就线性增加呢?这要看系统是否是多进程或多线程架构的。很多网络入侵检测系统都在做多处理器的优化。 对CPU处理能力的利用率也极大地影响网络传感器的性能,那么如何提高CPU处理能力的利用率呢?其中一个非常重要的方法就是对网络传感器进行CPU指令集的优化。例如,在P4处理器上,尽可能的使用P4处理器的指令集。Intel公司提供的C&C++编译器,就有针对指令集进行优化的功能,而且Intel实验室还提供这方面优化服务。 目前,Intel的新至强处理器采用了超线程技术,但是网络传感器如果要发挥新至强处理器的性能,就必须针对超线程进行优化。目前Linux最新的核心还不支持超线程技术。 ●内存 内存对网络传感器的影响是显著的。因为网络入侵检测系统需要大量的内存进行抓包、包重组、流重组、协议分析、规则匹配等计算。 内存的使用方法也是至关重要的,因为会影响CPU的利用率。使用方法包括:内存分配、释放、复制、匹配等。使用不当一方面会造成内存泄露,另一方面会占用CPU开销。 网络传感器的部分进程在核心态运行,另一部分进程运行在用户态,两者之间如果共享数据,必须进行内存复制,这时就需要在核心态和用户态之间切换,两者之间切换的CPU开销是很大的,如果切换非常频繁,CPU开销就会非常大。 ●二级缓存 L2 Cache的数量也对网络传感器的性能有积极的影响。因此,尽可能的使用大的L2 Cache。 ●网卡 网卡对网络传感器性能的影响主要是抓包效率。网卡到达性能峰值时,就很容易丢包。所以网络传感器的网卡就不能使用一般性的网卡。目前,使用比较多的是Intel系列、3Com系列网卡。例如,Intel百兆网卡中的82559,千兆网卡中的82543,82544等。 如果网络入侵检测系统支持多个网卡监控,那么各个网卡最好分配在不同的总线段。 网卡对网络入侵检测系统的影响还体现在网络传感器与控制台的数据传输上。 网卡驱动对网络传感器的影响也是很重要的,有的网络入侵检测系统,对网卡做专门的优化。 ●PCI总线带宽 另一个非常重要的硬件因素是PCI总线带宽。特别是在千兆网络入侵检测系统上,为了实现几个G的抓包速率,必须使用多个66Mhz/64-bit PCI or 133Mhz/64-bit PCI-X总线扩展槽。如果使用PCI-X总线,就必须使用PCI-X兼容的网卡,以充分发挥PCI-X 133MHz标准。为了提供更好的带宽利用,多个网卡必须合理地分布在PCI/PCI-X总线段上。 ●硬盘IO 因为网络入侵检测系统的传感器需要在硬盘上存储很多日志信息,所以硬盘的IO也会影响到网络传感器的性能。 网络入侵检测系统的性能测试的基本原理是是通过一些设备或软件工具制造不同数据包大小(如64, 128, 256, 512, 1024 , 1518字节)、不同压力的背景流量(如10Mbps,50Mbps,100Mbps,350Mbps,500Mbps,750Mbps等),然后通过各种黑客工具发动攻击,看网络传感器的检测情况和数据包丢失的情况。 在网络入侵检测系统中,背景流量的产生起着至关重要的作用。背景流量从如下方面影响性能测试的结果。 1.背景流量的数据包大小 对于发包测试设备来说,每秒制造数据包的数量(pps)是有极限的。一般而言,数据包越小,每秒制造的数据包数量越多,数据包越大,每秒制造的数据包数量越少。但是,数据流量(Mbps)等于数据包大小和每秒数据包数的乘积,所以数据流量由两者共同决定。 对应于网卡,也是一样,数据包越小,每秒能够处理的数据包越多,数据包越大,每秒能够处理的数据包越少。但是网卡每秒能够处理的数据包数也是有限的。 在极限情况下,数据包越小,处理的难度越大,数据包越大,处理的难度越小。因为在网络流量的不断增长的趋势下,小数据包的pps增长速度比大数据包的pps增长速度快得多,迅速达到极限。从上述的测试结果数据来看,可以很明显的看到这一点。 小数据包的处理能力不仅是网络入侵检测系统,而且也是防火墙的性能瓶颈。所幸在网络中小数据包出现的比率还是比较低的。但是,在一些黑客攻击中,采用小包,很容易制造DoS攻击。 厂商公布的网络入侵检测系统的每秒可处理的最大网络流量指标,往往是在最好的条件下测的,如每个数据包的大小是1518字节。 用户在选购网络入侵检测产品时,不能单纯看厂商公布的数据,而是要分析自己的流量的情况。要分析数据包大小的分布情况,64字节包平均占多少,128字节包平均占多少,512字节包平均占多少,1518字节包平均占多少,还要分析整体的流量在每天的时间上的平均分布。 2.背景流量的数据包类型 数据包的类型决定了网络入侵检测系统的处理方式,从而很大程度上决定了性能指标的有效性和真实性。 例如UDP包和TCP包的处理方式就是很具有代表性的一例。众所周知,UDP协议是面向无连接的协议,TCP是面向连接的协议。TCP传输不仅要完成三次握手,而且要对IP数据包进行组装,以形成完整的会话数据,有时网络传感器还要对TCP传输进行流重组。所以,TCP的处理比UDP复杂的多,占用的CPU、内存等系统资源也要多的多,而且,在所有攻击类型中,利用UDP协议的攻击所占的比率不到10%。 所以,用UDP包作为背景流量具有很大的欺骗性。而目前很多公布数据的网络入侵检测产品厂商都是用UDP作为背景流量,特别是千兆入侵检测产品,什么800M,941M等等。 在我们所举例的测试中,是使用TCP作为背景流量的类型,更具有科学性和真实性。 用户在选购网络入侵检测产品时,要注意鉴别真伪。 当然,利用背景流量的类型做文章的厂商比起随便插个千兆网卡就自称是千兆级产品的厂商来说,还是高明一些。 3.背景流量的方向 在我们举例的测试中,采用双向流量测试后,系统的流量和pps的性能指标在一定程度上提高,但不是成倍的上升。因为系统的处理性能放在那儿了。而且,小数据包的性能指标比大数据包的性能指标提高的更加明显。 4.CPU占用率 CPU占用率也是反映了网络传感器性能的主要参考指标,如果在其他条件相同的情况下,CPU占用率越低,表明系统的性能越好,反之就越差。
三、性能指标受哪些因素影响?
●数据包重组和TCP流重组的效率。这是严重影响网络入侵检测系统性能的因素,对处理器和内存的开销非常大。如果数据包重组和TCP流重组在操作系统的用户层完成,那么就会导致操作系统以极高的频率在核心态和用户态之间切换,导致大量额外的系统开销;
四、分析