入侵检测技术概述入侵检测(IntrusionDetection)是防火墙的合理补充,帮助系统对付网络攻击,扩展了系统管理员的安全管理能力(包括安全审计、监视、进攻识别和响应),提高了信息安全基础结构的完整性。它从计算机网络系统中的若干关键点收集信息,并分析这些信息,分析网络中是否有违反安全策略的行为和遭到袭击的迹象。入侵检测被认为是防火墙之后的第2安全闸门,在不影响网络性能的情况下能对网络进行监测,从而提供对内部攻击、外部攻击和误操作的实时保护。这些功能是通过它执行以下任务来实现的:一是监视、分析用户及系统活动;二是系统构造和弱点的审计;三是识别反映已知进攻的活动模式并向相关人士报警;四是异常行为模式的统计分析;五是评估重要系统和数据文件的完整性;六是操作系统的审计跟踪管理,并识别用户违反安全策略的行为。对一个成功的入侵检测系统来讲,它不但可使系统管理员随时了解网络系统(包括程序、文件和硬件设备等)的任何变更,还能给网络安全策略的制订提供指南。且它管理、配置简单,从而使非专业人员非常容易地获得网络安全。此外,入侵检测的规模还应根据网络威胁、系统构造和安全需求的改变而改变。入侵检测系统在发现入侵后,会及时做出响应,包括切断网络连接、记录事件和报警等。1入侵检测系统(IDS)的重要性1.1应用IDS的原因提到网络安全,人们第一个想到的就是防火墙。但随着现代技术的发展,网络日趋复杂,传统防火墙暴露出来的不足和弱点促进人们对入侵检测系统(IntrusionDetectionSystem,IDS)技术的研究和开发。一是传统的防火墙在工作时,入侵者可以找到防火墙滋生可能敞开的后门;二是防火墙不能阻止来自内部的攻击,通过调查发现,50%的攻击都来自内部,对于企业内部心怀不满的员工来说,防火墙形同虚设;三是由于性能的限制,防火墙通常不能提供实时的入侵检测的能力,而这一点,对于现在层出不穷的攻击技术来说是至关重要的;四是防火墙对病毒也束手无策。因此,仅在Internet入口处部署防火墙系统就安全的想法是不切实际的。入侵检测系统(IDS)可以弥补防火墙的不足,为网络安全提供实时的入侵检测及采取相应的防护手段,如记录证据用于跟踪、恢复、断开网络连接等。基于以上的功能,可给出一个统一的计算机网络入侵检测模型。这个模型由5个主要部分(信息收集器、分析器、响应、数据库及目录服务器)组成(见图1)。1.2IDS所用信息的收集入侵检测的第1步是信息收集,内容包括系统、网络、数据及用户活动的状态和行为。而且,需要在计算机网络系统中的若干不同关键点(不同网段和不同主机)收集信息,这样除了尽可能扩大检测范围的因素外,还有一个重要的因素就是从一个源来的信息有可能看不出疑点,但从多个源来的信息的不一致性却是可疑行为或入侵的最好标识。入侵检测在很大程度上依赖于收集信息的可靠性和正确性。入侵检测利用的信息一般来自以下4个方面:一是系统和网络日志文件。黑客经常在系统日志文件中留下他们的踪迹,因此充分利用系统和网络日志文件信息是检测入侵的必要条件。日志中包含发生在系统和网络上的不寻常和不期望活动的证据,这些证据可以指出有人正在入侵或已成功入侵了系统。通过查看日志文件,能够发现成功的入侵或入侵企图,并很快地启动相应的应急响应程序。日志文件中记录了各种行为类型,每种类型又包含不同的信息,例如记录“用户活动”类型的日志,就包含登录、用户ID改变、用户对文件的访问、授权和认证信息等内容。很显然,对用户活动来讲,不正常的或不期望的行为就是重复登录失败、登录到不期望的位置以及非授权的企图访问重要文件等。二是目录和文件中的不期望改变。网络环境中的文件系统包含很多软件和数据文件,包含重要信息的文件和私有数据文件经常是黑客修改或破坏的目标。目录和文件中的不期望的改变(包括修改、创建和删除),特别是那些正常情况下限制访问的,很可能就是一种入侵产生的指示和信号。黑客经常替换、修改和破坏他们获得访问权的系统上的文件,同时为了隐藏他们在系统中的表现及活动痕迹,都会尽力去替换系统程序或修改系统日志文件。三是程序执行中的不期望行为。网络系统上的程序执行一般包括操作系统、网络服务、用户启动的程序和特定目的的应用,例如数据库服务器。每个在系统上执行的程序由1个到多个进程来实现。每个进程执行在具有不同权限的环境中,这种环境控制着进程可访问的系统资源、程序和数据文件等。一个进程的执行行为由它运行时执行的操作来表现,操作执行的方式不同,它利用的系统资源也就不同。操作包括计算、文件传输、设备和其他进程,以及与网络间其他进程的通讯。一个进程出现了不期望的行为可能表明黑客正在入侵系统。四是物理形式的入侵信息。这包括2个方面的内容,即未授权的对网络硬件连接和对物理资源的未授权访问。黑客会想方设法去突破网络的周边防卫,如果他们能够在物理上访问内部网,就能安装他们自己的设备和软件。因此,黑客就可以知道网上的由用户加上去的不安全(未授权)设备,然后利用这些设备访问网络。例如,用户在家里可能安装Modem以访问远程办公室,与此同时黑客正在利用自动工具来识别在公共电话线上的Modem,如果某一拨号访问流量经过了这些自动工具,那么这一拨号访问就成为了威胁网络安全的后门。黑客就会利用这个后门来访问内部网,从而越过了内部网络原有的防护措施,然后捕获网络流量,进而攻击其他系统,并偷取敏感的私有信息等。1.3对信息的分析2IDS的分类2.1根据检测原理进行分类传统的观点根据入侵行为的属性将其分为异常和滥用2种,然后分别对其建立异常检测模型和滥用检测模型。近4~5年来又涌现出了一些新的检测方法,它们产生的模型对异常和滥用都适用,如人工免疫方法、遗传算法、数据挖掘等。根据系统所采用的检测模型,将IDS分为3类:一是异常检测。异常检测中,观察到的不是已知的入侵行为,而是所研究的通信过程中的异常现象,它通过检测系统的行为或使用情况的变化来完成。在建立该模型之前,首先必须建立统计概率模型,明确所观察对象的正常情况,然后决定在何种程度上将一个行为标为“异常”,并如何做出具体决策。异常检测只能识别出与正常过程有较大偏差的行为,而无法知道具体的入侵情况。由于对各种网络环境的适应性不强,且缺乏精确的判定准则,异常检测经常会出现虚警情况。异常检测可以通过以下系统实现:①自学习系统。自学习系统通过学习事例构建正常行为模型,又可分为时序和非时序2种;②编程系统。系统需要通过编程学习如何检测确定的异常事件,从而让用户知道什么样的异常行为足以破坏系统的安全。编程系统可以再细分为描述统计和缺省否认2种。二是滥用检测。在滥用检测中,入侵过程模型及它在被观察系统中留下的踪迹是决策的基础。因此,可事先定义某些特征的行为是非法的,然后将观察对象与之进行比较以做出判别。滥用检测基于已知的系统缺陷和入侵模式,故又称特征检测。它能够准确地检测到某些特征的攻击,但却过度依赖事先定义好的安全策略,所以无法检测系统未知的攻击行为,从而产生漏警。滥用检测通过对确知决策规则编程实现,可以分为以下4种:①状态建模。将入侵行为表示成许多个不同的状态。如果在观察某个可疑行为期间,所有状态都存在,则判定为恶意入侵。状态建模从本质上来讲是时间序列模型,可以再细分为状态转换和Petri网,前者将入侵行为的所有状态形成一个简单的遍历链,后者将所有状态构成一个更广义的树形结构的Petri网。②专家系统。可以在给定入侵行为描述规则的情况下,对系统的安全状态进行推理。一般情况下,专家系统的检测能力强大,灵活性也很高,但计算成本较高,通常以降低执行速度为代价。③串匹配。通过对系统之间传输的或系统自身产生的文本进行子串匹配实现。该方法灵活性欠差,但易于理解,目前有很多高效的算法,其执行速度很快。④基于简单规则。类似于专家系统,但相对简单一些,故执行速度快。三是混合检测。近几年来,混合检测日益受到人们的重视。这类检测在做出决策之前,既分析系统的正常行为,同时还观察可疑的入侵行为,所以判断更全面、准确、可靠。它通常根据系统的正常数据流背景来检测入侵行为,故而也称为“启发式特征检测”。WenkeLee从数据挖掘得到启示,开发出了一个混合检测器RIPPER。它并不为不同的入侵行为分别建立模型,而是首先通过大量的事例学习什么是入侵行为以及什么是系统的正常行为,发现描述系统特征的一致使用模式,然后再形成对异常和滥用都适用的检测模型。2.2根据体系结构分类按照体系结构,IDS可分为集中式、等级式和协作式3种。一是集中式。这种结构的IDS可能有多个分布于不同主机上的审计程序,但只有一个中央入侵检测服务器。审计程序把当地收集到的数据踪迹发送给中央服务器进行分析处理。但这种结构的IDS在可伸缩性、可配置性方面存在着致命缺陷:①随着网络规模的增加,主机审计程序和服务器之间传送的数据量会骤增,导致网络性能大大降低;②系统安全性脆弱,一旦中央服务器出现故障,整个系统就会陷入瘫痪;③根据各个主机不同需求服务器配置也非常复杂。二是等级式。它用来监控大型网络,定义了若干个分等级的监控区,每个IDS负责1个区,每一级IDS只负责所监控区的分析,然后将当地的分析结果传送给上一级IDS。这种结构仍存2个问题:①当网络拓扑结构改变时,区域分析结果的汇总机制也需要做相应的调整;②这种结构的IDS最后还是要把各地收集到的结果传送到最高级的检测服务器进行全局分析,所以系统的安全性并没有实质性的改进。三是协作式。将中央检测服务器的任务分配给多个基于主机的IDS,这些IDS不分等级,各司其职,负责监控当地主机的某些活动。因此,其可伸缩性、安全性都得到了显著的提高,但维护成本也高了很多,并且增加了所监控主机的工作负荷,如通信机制、审计开销、踪迹分析等。3IDS规则的建立IDS要有效地捕捉入侵行为,必须拥有一个强大的攻击特征数据库。但是,IDS一般所带的特征数据库都比较死板,遇到“变脸”的入侵行为往往无法识别。因此,管理员有必要学会如何创建满足实际需要的特征数据样板,做到以不变应万变。3.1特征的基本概念特征也被称为属性,对应IP数据包中的字段。在这些特征中有一些对攻击的判别至关重要。以下是一些典型情况及通过相应特征进行识别的方法:①从某一固定IP发送的连接请示:可通过检查IP头文件的源地址轻易地识别。②带有非法TCP标记包的集合:可通过已知的合法与非法的标记集合与TCP头文件中的标记进行比较而得出结论。③含有特殊病毒信息的Email:IDS可以通过将邮件的标题或附件的名称与已知的病毒邮件相关的标题做比较得出结论。④查询负载中的DNS缓冲区溢出企图:可通过解析DNS域及检查每个域的长度来识别利用DNS域的缓冲区溢出企图。还有另外一个识别方法是:在负载中搜索“壳代码利用”(exploitshellcode)的序列代码组合。⑤通过对POP3服务器发出上千次同一命令而导致的DoS攻击:通过跟踪记录某个命令连续发出的次数,看看是否超过了预设上限,而发出报警信息。⑥未登录情况下使用文件和目录命令对FTP服务器的文件访问攻击:通过创建具备状态跟踪的特征样板以监视成功登录的FTP对话、发现未经验证却发命令的入侵企图。3.2头文件属性一些头文件属性在出现攻击时会有明显的不正常现象,所以可用于制定规则。这一规则的经典例子是带有SYN和FIN标志的TCP包设置。在RFC793(用来定义TCP标准)中存在一个漏洞,使很多工具都试图通过这一漏洞来尝试绕过防火墙、路由器和入侵检测系统。很多攻击程序包括头文件属性其目的在于违背RFCs,因为很多操作系统和应用程序是基于遵守RFCs的假定而写成的,且对在此基础上的通讯中的错误不进行纠正。也有很多工具包含错误或不完整的代码,于是由这些工具制成的包中包含了违背RFCs的头文件属性。那些写得很糟糕的工具和各种入侵技术提供了用于写规则的可辨别属性。基于头文件属性来开发规则的最好办法就是通过实例。Synscan是一种应用广泛的扫描和探测系统工具。在2001年初的互联网上,它频繁活动,因为它的代码经常被用于制造Ramen蠕虫的第1阶段。这一活动提