通常,对企业网安全性的要求越高,需要采取的防范措施就越严密。那么,对于现实中的企业网,必不可少的防护措施有哪些?
首先,我们需要选用防火墙作为防御非法入侵的大门,通过规则定义,我们告诉防火墙和路由器: 符合某些条件的信息可以被放行,不符合某些条件的信息需要被拒绝。同时,我们还可以使用PKI加密认证和VPN通道技术,让"合法"的信息到达目的地。
其次,对服务器系统进行加固,提高安全防护水平。对系统的安全加固是个长期的工作,用户需要随时进行漏洞检查,做到随时发现随时填补。
第三,选用优秀的入侵检测系统(Intrusion Detection System,IDS)。在安全防护系统中,若不良来访者被允许访问,它会对企业网做出令网络管理者无法控制的事情,如果系统配备了IDS,这种破坏性行为将被抑制。我们知道,网络总是要提供服务的,对于一些常用的服务如浏览和E-mail收发等,防火墙只做到允许或者拒绝各种各样访问者访问这些服务,无法判定具有攻击行为的访问是否会摧毁防火墙。这就好像门卫难以判定每个来访者是办事者还是偷窃者一样。如果墙角(或其他什么位置)安装了微型摄像机,能够监视来访者的一举一动,保安人员便可以根据来访者的行为及时发现不法分子,及时报警,确保办公与居住人员的安全。
IDS在国内已经出现一段时间了,它是网络安全防护体系的重要组成部分。目前,它在国内的应用还不够广泛,人们还没有充分利用这个利器更好地保护企业网。作为大多数技术人员来说,介绍IDS的资料相对较少,而市场上类似的产品却多如牛毛,如何正确选择适合各自企业应用的产品,是每个人都关心的话题。本文将从使用者的角度介绍选择IDS的几个关键技术点,希望能为用户的选购给予帮助。
需要提醒用户注意的是,在IDS方面做得出色的产品一定很实用,但并不能说它就是一个优秀的安全产品,因为除此之外,它还应该附带很多附属功能,即让用户感觉简单、好用。作为一个真正的IDS产品,其主要功能应包括以下几个方面。
检测入侵。
远程管理。
抗欺骗能力。
自身安全性。
下面,我们将分别对这4个方面进行分析。
一、检测入侵
IDS最主要的功能是检测非法入侵。能够智能地报告入侵者的非法行为是检验IDS性能优劣的首要条件。用户安装上IDS后,在缺省情况下,应该对各个服务可能遇到的攻击进行告警检测。我们可以选择一些破坏性比较大的攻击,比如远程溢出攻击(只要攻击成功,即可全面控制计算机系统),用它对IDS进行一下测试。面对这种攻击,如果IDS产品没有反应,那么附加功能再多,也是一个检测非法入侵能力低下的产品。
二、远程管理
IDS的机制是监视网络上的流量,如果所要监视的网络不止一个Hub或交换机,就要在每个Hub或交换机上安装网络引擎。这样我们就需要一个控制台和日志分析程序来管理和分析多个网络引擎及它们产生的告警。用户有时希望坐在办公室中实时查看和管理机房里的IDS,作为产品提供商,应该满足用户的这种需求,为用户提供远程管理功能,只是需要注意把这个功能和IDS的另一个功能(即远程告警)区分开。事实上,IDS还应该能够支持各种各样的远程告警方式,像打电话、发邮件等等。不过这种交流是单向的,用户只能被动地得到信息,而不能主动控制远程的网络引擎。
三、抗欺骗能力
IDS的目的是抵制入侵者,然而入侵者会想方设法逃避它。逃避IDS的方法很多,总结起来可以分成两大类: 让IDS漏报和让IDS误报。
1.IDS误报
所谓IDS误报是指: 明明没有这个攻击,但是入侵者让IDS拼命告警,使不断增长的告警日志塞满硬盘,以致翻滚的告警屏幕把管理者搞得眼花缭乱。这样,真正的攻击就可以夹杂在数不清的虚假告警中蒙混过关了。
2001年3月,国外网络安全产品评测人员Coretez Giovanni发现另外一种让IDS误报的入侵: 快速地产生告警信息,抑制IDS的反应速度,以致使IDS失去反应能力,甚至让系统出现死机现象。当时,Coretez写了一个名为Stick的程序,作为IDS产品的测试用例。它的作用是: 可以读入Snort的规则,然后按照Snort的规则组包。由于Snort的规则涵盖了绝大多数的攻击种类,所以IDS一旦匹配了按Snort规则产生的攻击报文,即可发出告警信息。对于比较有名的IDS像ISS Realscur和Snort,Stick都能给它们造成30s以上的停顿。所以,对于新出现的IDS及其造成的危害,用户绝不能忽视。
在发现新型IDS误报入侵方面,Stick功不可没。为了更好地测试用户选用的IDS产品,用户不妨从http://www.securityfocus.com/frames/?content=/templates/tools.html%3Fid%3D1974上下载Stick,其编译起来并不麻烦,只需查看帮助即可。需要指出的是,绝大多数的IDS都是从Snort得到众多借鉴的,建议用户试用一下Stick。
2.IDS漏报
和IDS误报相比,漏报其实更危险。采用IDS技术就是为了在发现入侵时给出告警信息。如果入侵者入侵成功而IDS尚未告警,IDS便失去存在的意义。笔者从国外网站上看到一篇文章,它对利用TCP连接特点让IDS做漏报进行了详细的描述,同时还给出一些实现漏报的办法,给笔者提供了一种新思路: IDS想要防止欺骗,就要尽可能地模仿TCP/IP栈的实现。但是从效率和实现的复杂性考虑,IDS并不能很容易地做到这一点。
这种方法比较适合智能化的IDS,好的IDS一般为了减少误报,会像现在一些高端的防火墙一样基于状态进行判断,而不是根据单个的报文进行判断。这样上面谈到的Stick对这种IDS一般不起作用。但是用户应该注意到,这种简单的IDS只是字符串匹配,一旦匹配成功,即可报警。
2001年4月,又出了一个让IDS漏报的程序ADMmutate,据说它可以动态改变Shellcode。本来IDS依靠提取公开的溢出程序的特征码来报警,特征码变了以后,IDS就报不出来了。但是程序还一样起作用,服务器一样被黑。这个程序的作者是ktwo,我们可以从http://www.ktwo.ca/c/ADMmutate-0.7.3.tar.gz上下载该程序。用户不妨也试试它,以检测自己的IDS产品性能。不过,ADMmutate只能对依靠检查字符串匹配告警的IDS起作用,如果IDS还依靠长度和可打印字符等综合指标,则ADMmutate将很容易被IDS监控到。
IDS的实现总是在漏报和误报中徘徊,漏报率降低了,误报率就会提高; 同样误报率降低了,漏报率就会提高。一般地,IDS产品会在两者中取一个折衷,并且能够进行调整,以适应不同的网络环境。
四、自身安全性
毫无疑问,IDS程序本身的健壮性是衡量IDS系统好坏的另一个指标。如上所述,Stick程序能让IDS停止响应,该IDS的健壮性就值得怀疑。
IDS的健壮性主要体现在两个方面: 一是程序本身在各种网络环境下都能正常工作; 二是程序各个模块之间的通信能够不被破坏,不可仿冒。IDS用于各个模块间远程通信和控制,如果通信被假冒,比如假冒一个停止远程探测器的命令或者假冒告警信息,都是釜底抽薪的狠招。这就需要用户在模块间的通信过程中引入加密和认证的机制,并且这个加密和认证的机制的健壮性要经受过考验。如果模块间的通信被切断,则需要良好的恢复重传机制。告警信息暂时没有发送出去,并不是丢弃,而是要本地保存,在适当的时候再发送。
从上面的描述中我们可以看到,没有IDS的安全防护体系是不完善的。希望本文可以帮助大家了解IDS,在网络安全体系中使用IDS增强网络的坚固性,并为用户选购IDS产品提供参考。
关于IDS
IDS采用分布式结构,内含Probe(又称探测器或探针),用于收集信息,一旦发现非法入侵便告警。根据其所处的位置不同,Probe又可以分成基于主机的和基于网络的。基于主机的Probe位于希望监控的服务器上,通过收集服务器的信息来进行分析告警。基于网络的Probe位于希望监控服务器的同一个Hub或交换机上,通过监听网络上到达服务器的报文来分析告警。
基于主机的Probe收集的信息准确,但是占用服务器资源,尤其在繁忙的服务器上会降低服务器性能。由于它与操作系统相关,如果所用IDS产品不支持操作系统,就不能安装基于主机的IDS。
基于网络的Probe收集的信息没有基于主机的Probe准确,并且因为使用了监听功能,对于Hub可以正常使用,对于交换机需要交换机厂商支持。基于网络的Probe一般不影响服务器的正常工作,还可以监控多个服务器的工作。
IDS还含有一个集中监控信息的"控制台",其作用是接收所有Probe的告警,远程控制所有的Probe。控制台端的日志分析模块会把Probe的告警信息综合后集中分析,生成入侵分析报告。控制台端的响应模块会根据不同的响应策略对不同的告警采取不同的行动。连接控制台和Probe的是通信模块。