2002年入侵检测发展的最大特点是一喜一忧,喜的是入侵检测对广大用户已不再是新鲜事物,入侵检测、防火墙、防病毒以及加密被认为网络安全采购的四大件,明确写入各大项目招标书。忧的是入侵检测厂商的日子并不好过,有普遍降薪的,有大规模裁员的,也有关门倒闭的。
表面上看,这一喜一忧似乎是矛盾的。用户认可了,市场起来了,日子应该好过起来才对。仔细想想,也没有什么是不对的,就象叶圣陶先生的《多收了三五斗》一样,卖的人多了,价格下降了,日子自然也不好过了。其中所不同的是《多收了三五斗》是收米的奸商故意压价,而入侵检测是内部斗争,技术不行,可以玩价格游戏和销售技巧。这个一喜一忧也就是再自然不过的事了。
在人们的脑海中,2002年没有特大规模的恶性病毒爆发,没有大规模的黑客入侵与破坏,一切似乎都太过平静,可兹记忆的事情屈指可数。可是到了下半年,千兆IDS突然成了入侵检测市场出镜率最高的一个亮点!各种宣传和介绍铺天盖地,一时间,入侵检测厂商之间的问候语就是:“今天你千兆了吗?”
IDS从诞生之日起,便不断为提高自身的性能以适应迅速增长的网络流量而努力。中国的千兆IDS是启明星辰公司首家推出并通过权威部门的测试认证的,这是其“六年磨一剑”的体现,是一种技术上的大突破。但是这是需要一个过程的,没有大规模应用的基础,没有广泛的经验积累,没有持续的技术研究,也不可能“忽如一夜春风来,千树万树梨花开”。那么广泛宣传的千兆IDS必然存在着鱼目混珠,我们来看看这其中的亮点和谎言。
千兆IDS几大亮点
1、“零拷贝”
“零拷贝”是今年的国内入侵检测厂商一大流行词。
其技术原理如下:
传统的处理网络数据包的方式由于网卡驱动程序运行在内核空间,当网卡收到包以后,包会存放在内核空间内,由于上层应用运行在用户空间,无法直接访问内核空间,因此要通过系统调用往上层应用系统送,这时候会发生一次复制过程。同时这个过程常常还伴随着一次从抓包库到检测引擎的复制过程。如果对于一般应用来说,很少的操作来处理网络通信,这样的系统开销还可以忍受,但是对于入侵检测系统这样大量读取网络数据包的应用来说,这样的开销就很难忍受了。
“零拷贝”技术是指网卡驱动程序共享一段内存区域,当网卡抓到数据包以后直接写到共享内存,这样的一个处理过程减少了至少一次复制。同时减少了一次网卡驱动程序向用户空间复制网络数据包的系统调用。而一次系统调用的开销其实是相当大的,对于入侵检测系统来说由于要频繁地跟内核空间的网卡驱动程序打交道,因此按传统方法会造成大量的系统调用,从而导致系统的性能下降。但是采用了“零拷贝”技术后有效的避免了这一点。
“零拷贝”是不是就是千兆IDS?其实从上面的技术原理我们就可以很清晰的看出,“零拷贝”的应用对高流量下的入侵检测来说确实是一个技术上的突破,表现形式是专用的网卡驱动程序。但是本质上说来,“零拷贝”解决的是抓包带来的性能问题,而对千兆IDS来说,抓包是一个制约因素,但对数据包的分析又是另外一个制约因素,“零拷贝”只解决了其中一个方面,所以仅仅只有“零拷贝”技术并不是千兆IDS。
因此,我们在看到如果某个入侵检测产品仅仅是多了一个专用的网卡驱动程序,那么还不能称为千兆IDS。
2、“负载均衡”
单机无法解决的问题,人们通常首先会想到叠加的方法,于是有了负载均衡;“负载均衡”是应对单个处理设备在超出了处理能力的高流量环境下,将负荷均衡到多个处理设备上来分摊处理,一般用于路由器、防火墙、应用服务器等重要的网络干网设备,应用于IDS也是一种解决方案。
负载均衡虽然一定程度上解决了高速网络环境的检测问题,但仍然不是最佳的解决方案,因为有几个问题是负载均衡技术必须面对和解决的:
一般情况,负载均衡器是按照某种规则(如协议或者IP地址)来分流数据,那么当来自于一个IP地址的数据或某种应用服务流量突然增加的时候,负载均衡器如果不能够智能地进行分流,则对口负责的 IDS则不堪重负;如果负载均衡器又做了流量均衡,混在其中攻击信息也有可能被分流,而对应的IDS又可能没有配置相应的攻击检测策略而漏过检测。
此外,对于判断不同攻击模式之间的行为关联性,由于分流也将无法识别。最后,目前的负载分流一般是利用专用硬件设备,其主要提供商是国外厂家,其价格自然不菲,再加上多个百兆入侵检测,一方面占用更多的机架空间,管理麻烦;另一方面,用户额外安全投资也增加了
靠把千兆流量分流到多个百兆IDS只是在没有真正意义上千兆IDS出现前的一种解决方案,千兆防火墙的发展也证明了这点。于是人们的目光还是回到了入侵检测的技术本身的提高上来。否则等到万兆级别的网络出现,是不是还要来多个万兆负载均衡的IDS呢?
3、“协议分析”
“协议分析”应当是目前绝大多数IDS所宣称采用的。协议分析的原理就是根据现有的协议模式,到固定的位置取值而不是一个个的去比较,然后根据取得的值来判断其协议以及实施下一步分析动作。其作用十分类似于邮局的邮件自动分捡设备,有效的提高了分析效率,同时还可以避免了单纯模式匹配带来的误报。
对千兆IDS 来说,协议分析不仅仅是判断是什么协议那么简单了。要提高其性能和准确性,必须做到更深层次的协议分析,如:高层协议的数据字段的取值。因此,千兆IDS 采用的“协议分析”,就是要求更为完整的协议分析,尽可能的缩减模式匹配的范围。
4、“匹配算法”
现有的商业入侵检测系统在做完了协议分析后,接下来就是如何去进行模式匹配了。模式匹配就是进行字符串的比较,这就涉及到一个算法的问题。因此,一般在千兆IDS中都会声称其采用了高效的算法。这个高效的算法通常就是BM算法(或改进的)。这种算法是字符串匹配领域十分常用的方法,广泛的应用于文本编辑器的字符串搜索之中,可以有效的提高单条规则匹配报文的匹配效率。
没有采高效算法的入侵检测的效率是无法想象的,但是在千兆的高速流量下,单纯的单条规则匹配报文的匹配效率提高也不能完全适应其要求,特别是现在的入侵检测的规则模式在不断增加,对每一个数据包其可能要匹配的次数也在不断增加,因此其性能也无法完全满足。
真正的高效是要结合“匹配算法”和“规则结构”,做到匹配效率和规则数量的无关性,甚至规则越多,效率越高。从目前看来,真正在这方面的突破是体现在启明星辰的“天阗”千兆入侵检测系统上的。
5、“高性能硬件”
软件的表现要依赖其所处的硬件平台,国内的入侵检测产品往往将其引擎安装在固定的硬件设备上。因此,从外观上,千兆IDS比百兆IDS显的更上档次,从内部配置上,其CPU、内存等重要部件上规格也更高一些。例如,采用多CPU 方式是可以把多个线程分配到不同的CPU上处理来提高性能。采用“高性能硬件”是可以进一步提高入侵检测的能力,但绝对不是主要因素。因此,如果发现某个千兆入侵检测产品只是比百兆入侵检测多了一块千兆网卡,硬件配置又高一些,那就不要把其当作千兆IDS,其正确名称是“可以接入到千兆环境下的IDS”。
千兆IDS的几大谎言
1、千兆检测特征达到1800种
不知道从什么时候开始,入侵检测特征成了一个放卫星式的指标,似乎特征越多其产品能力越强,因此也就出现了如下的现象:对某个号称其特征数为1800种的入侵检测产品,我们惊奇的发现,其自身控制台和引擎之间的控制信息也列入其中,数量有60条之多;还有对某一个后门,其特征被细化了有50条之多。原来,入侵检测特征是这么加到这个数量的。不知道这样的检测特征在千兆环境下有什么用?
2、多个高速网段的同时监控
目前双网卡探测技术仅仅适用于非常低带宽的网络环境(例如:ISS公司在其Realsecure 的最新版本的系统需求手册中明确指出:支持在一台主机上安装两个其network_sensor,但只允许在带宽非常低的网络;安装三块网卡和三个network_sensor监控三个网络也可以,但我们不支持这种安装和维护服务。)。也就是说在现在通用的硬件架构和操作系统的条件下,当两块网卡同时抓包并进行分析的时候,其消耗的系统资源远远大于用一块网卡来分析两块网卡的合流量。尤其在高速网络(千兆)中应用,其性能影响更为明显。当然,如果基于RISC的结构,并将抓包和协议分析的技术在专用的硬件芯片中实现,应该是有一定程度的提高。遗憾的是目前国际、国内的入侵检测厂商都没有实现,原因是芯片技术有技术壁垒和垄断,单独开发其成本必然很高。
所以可以相信要实现双网卡探测正常流量下工作,这还是有很长的路要走。现在多个高速网段的同时监控,如果不指明其适用环境,不能不说是对用户的欺骗。
3、监控的最大TCP连接数
TCP最大连接数原本是防火墙的一个指标,现在被某些入侵检测厂商引入做为一个入侵检测的指标,并通过其大小来比拼产品优势。最新的一个数据是,某入侵检测产品在千兆的白皮书中声称的最大TCP连接数是50万。
支持的TCP连接数的多少主要不在于程序的实现上的差别,可以简单修改配置。影响其数量主要在于系统内存的大小。计算方法是:
最大连接数 × 每连接使用的缓冲区大小 = 内存占用
比如:如果我们每一个连接使用4k的缓冲区进行处理,那么维持10000个的tcp连接数意味着最大连接情况下的内存占用是4k*10000=40M
如何提高连接数的方法有两种:提高内存容量是一种很容易理解的方法。假如说内