厦 门 金 荣 计 算 机 设 备 有 限 公 司   

    公司简介| 主营产品| 技术支持| 驱程下载| 联系我们| www.xmko.com
     

                                                                      

入侵检测原理和实践                     回首页                     

一.介绍
随着计算机的联网,网络安全就成了一个问题。随着互联网络的发展,对安全系统的需求就越多。随着互联网络的发展,一个重要的安全软件——入侵检测系统就出现了。
本文给出了许多类型的入侵检测系统的概述,并使得读者能够了解一些入侵检测的定义和并能够进行实践。注意,本文只是一个介绍,虽然我建议了大量可能的系统,但是,在相信你的入侵检测系统之前必须进行更细致的调查。

二.什么是入侵检测
入侵检测试图监视和尽可能阻止可能的入侵或者其它对你的系统和网络资源产生危害的行为。
简单地说,它是这样工作的:你有一个计算机系统,它与网络连接着,也许也同互联网连接。由于一些原因,你允许网络上的授权用户访问该计算机。例如,你有一个连接着互联网的web服务器,你允许你的客户、员工和一些潜在的客户访问存放在该web服务器上的web页面。
然而,你不希望其它员工、顾客或未知的第三方的未授权访问。例如,你不想人们(除你公司的页面设计者之外)能够修改那台计算机上的web页面。典型的,采用一个防火墙或者一些类型的认证系统阻止未授权访问。
然而,有时简单的防火墙措施或者认证系统可以被攻破。入侵检测是一系列在适当的位置上对计算机未授权的试图访问进行警告的机制。对于假冒身份的入侵者,入侵检测系统也能采取一些措施来拒绝该访问。

三.为什么使用入侵检测
以下相对直接地给出了你为什么要使用入侵检测系统的原因:你要保护你的数据和系统的完整性。在当今互联网的环境中,如果你使用普通的口名和文件安全机制,并不能防止外部的入侵者,你也就不能够始终保证你的数据的完整性,这样就带来了许多的问题。
适当的系统安全的第一步当然是确保数据得到保护。例如,它简单地附加到一个互联网上的系统,并希望如果没有管理员口令的话就没有人能够闯入它。类似的,除了授权的管理员之外,系统将阻止对重要文件或认证数据库的访问(例如,NT的SAN或者Unix的/etc/passwd或/etc/shadow文件)。
对于任何连接在互联网上的系统,需要考虑比企业内部网系统更多的问题。必须在适当的位置采取防火墙措施和其它的访问控制机制。对于一个完全是内部网的系统而言,需要允许NT登录、文件共享或者对系统的Telnet访问。而一个互联网服务器必须考虑更多的安全机制,例如,过滤掉NT文件共享(SMB协议)端口,例如TCP/UDP端口137-139,并使用安全外壳(SSH)代替对Unix系统的Telnet访问。
入侵检测采取更多的措施。放置在防火墙和一个安全系统之间,基于网络的入侵检测系统能够给该系统提供另外层次的保护。例如,监视从互联网上来的对安全系统的敏感数据端口的访问可以判断防火墙是否被攻破,或者是否采取了一种未知的技巧来绕过防火墙的安全机制从而访问被保护的网络。

四.有哪些类型的入侵检测系统
入侵检测系统有以下两种类型:
l 基于网络的入侵检测系统。这种类型的系统放置在网络上,靠近该系统或者系统群。它们检查网络通信并判断是否在可接受的范围内。
l 基于主机的入侵检测系统。这种类型的入侵检测系统运行在需要监视的系统上。它们监视系统并判断系统上的活动是否可接受。
我也将简单讨论最近的一种入侵检测系统:那些位于*作系统内核并在系统的最底层监视活动。这种入侵检测系统近来开始在一些平台上使用,只有一些规定平台的版本。

(一).基于网络的入侵检测系统
1.介绍
基于网络的入侵检测系统监视整个网络的通信。网络接口卡(NIC)可以在以下两种模式下工作:
l 正常模式,需要发送向计算机(通过包的以太网或者MAC地址进行判断)的数据包通过该主机系统进行中继转发。
l 混杂模式,此时以太网上所能见到的数据包都向该主机系统中继。
一块网卡可以从正常模式向混杂模式转换,通过使用*作系统的底层功能就能直接告诉网卡进行如此改变。通常,基于网络的入侵检测系统要求网卡处于混杂模式。
2.包嗅探器和网络监视器
包嗅探器和网络监视器最初设计的目的是帮助监视以太网络的通信。最早有两种产品:Novell LANalyser和[M$] Network Monitor。
这些产品抓获所有网络上能够看到的包。一旦抓获了这些数据包,就可以进行如下的工作:
l 可以对包进行统计,统计通过的数据包,并统计该时期内通过的数据包的总的大小(包括总的开销,例如包的报头),这样就可以很好地知道网络的负载状况。LANalyser和[M$] Network Monitor都提供了网络相关负载的图形化或图表表现形式。
l 可以详细地检查包。例如,你可以抓获一系列到达web服务器的数据包来诊断服务器的问题。
近年来,包嗅探产品已经成了独立的产品。程序(例如Ethereal和Network Monitor的最新版本)可以对内部各种类型的包进行拆分,从而可以知道包内部发生了什么类型的通信。
对于包嗅探器最后要说的是:这些工具同时也能被用来进行破坏活动。例如,通过嗅探连接到一台机器的telnet包,包嗅探器能够用来发现一些人的Unix密码。一个攻击者一旦危害你的网络,他们要做的第一件事就是安装一些类型的包嗅探器。
3.包嗅探器和混杂模式
所有的包嗅探器都要求网络接口运行在混杂模式下。只有运行在混杂模式下,包嗅探器才能接收通过网络接口卡的每个包。在安装包嗅探器的机器上运行包嗅探器通常需要管理员的权限,这样,网卡的硬件才能被设置为混杂模式。
另外一点需要考虑的是在交换机上的使用,在一个网络中,它比集线器使用得更多。注意,在交换机的一个接口上收到的数据包不总是被送向交换机的其它接口的。由于这种原因,使用交换机多的环境(比都使用集线器的环境)通常可以击败包嗅探器的使用。
4.基于网络的入侵检测:包嗅探器的发展
不幸的是,从一个安全的观点来看,包嗅探器所带来的好处很少。抓获网络上的每个数据包,拆分该包,根据包的内容手工采取相应的反应,这太浪费时间了,尤其是对于那些天天在外进行网络培训的人员而言。有什么软件可以自动为我们执行这些呢(毕竟,这是计算机所做的第一个方面)。
这就是基于网络的入侵检测系统主要做的。有两种类型的软件包可以用来进行这类的入侵检测,那就是:ISS RealSecure Engine和Network Flight Recorder。
以下是RealSecure Engine能够执行的一些类型的入侵检测:
l 检查通过网络的数据包。
l 对于合法的数据包,允许它们通过(为了今后的分析,也可以对它们进行纪录)。
l 当一个数据包危及到目标系统的安全或完整性时,同时向目标系统和发送该数据包的系统发送TCP“Connection Closed”或ICMP“port unreachable”来阻止该包的传送。
以这种方式,当一台目标系统位于防火墙之后时,RealSecure可以进行有效的第二层防护。在一些具体实施时,有些使用RealSecure代替防火墙,但是,我不推荐这种做法。
基于网络的入侵检测系统可以执行一些其它的任务,例如:
l 监视明显的对网络的扫描。在攻击一个系统时,一个入侵者通常对该系统进行端口扫描,从而判断存在哪些脆弱性。企图对话联网上的一台主机进行端口扫描通常是一个人要试图破坏你的网络的一个信号。
l 监视著名的攻击所发起的合法连接。访问web服务器的80端口通常被认为是无害的活动,但是,一些访问企图事实上是故意在进行攻击,或者试图攻击。例如,一个象“GET/../../..etc/passwd HTTP/1.0”这样的访问或许是一个不好的征兆,必须被封锁。
l 识别各种各样可能的IP欺骗攻击。用来将IP地址转化为MAC地址的ARP协议通常是一个攻击目标。通过在一个以太网上发送伪造的ARP数据包,一个已经获得系统访问权限的入侵者可以假装是一个不同的系统在进行*作。这将导致各种各样的拒绝服务攻击,也叫系统劫持。一个重要的服务器(例如DNS服务器或者认证服务器)是如何被欺骗的呢。入侵者可以使用这种欺骗将数据包重定向到自己的系统,并在一个安全的网络上进行中间人类型的攻击。通过对ARP数据包进行纪录,基于网络的入侵检测系统就能识别出受害的源以太网地址和判断是否是一个破坏者。
当检测到一个不希望的活动时,基于网络的入侵检测系统将采取活动,包括干涉将从入侵者处发来的通信,或重新配置附近的防火墙策略以封锁从入侵者的计算机或网络发来的所有的通信。

(二).基于主机的入侵检测
1.介绍
一旦一个网络数据包已经到达它要试图进入的主机,在防火墙和网络监视器之后仍然可用第三道防线来阻止。这就是“基于主机的入侵检测”。
两种主要基于主机的入侵检测类型是:
l 网络监视器。它监视进来的对主机的网络连接,并试图判断这些连接是否是一个威胁。网络连接表达了一些试图进行的入侵类型。记住,这与基于网络的入侵检测不同,因为它只监视它所运行的主机上的网络通信,而不是通过网络的所有通信。由于这种原因,它不需要网络接口处于混杂模式。
l 主机监视器。它监视文件、文件系统、日志,或主机的其它部分,查找特定类型的可以活动,从而判断是否是一个入侵企图(或者一个成功的入侵),然后通知系统管理员。
2.监视进来的连接
在数据包到达主机系统的网络层之前检查试图访问主机的数据包是可能的。这种机制试图在到达的数据包能够对主机造成破坏之前截获该数据包而保护该主机。
可以采取的活动主要有:
l 检测试图与未授权的TCP或UDP端口进行的连接,例如试图连接没有服务的端口,这通常表明一个入侵者在搜索查找漏洞。
l 检测进来的端口扫描。再一次,这是一个一定要对付的问题,并给防火墙发警告或者修改本地的IP配置以拒绝从可能的入侵者主机来的访问(例如,通过在Linux上使用ipchains)。
可以执行这种监视类型的两种软件产品是ISS公司的RealSecure和PortSentry。
3.监视登录活动
尽管管理员已经进了最大努力,同时刚刚配置并不断检查入侵检测软件,偶然也可能有某些入侵者采取目前都不知道的入侵攻击方法来进入系统。也许一个攻击者通过各种方法(包嗅探器或者其它的)获得一个网络密码,从而有能力进入该系统。
查找系统上的不一般的活动是一个如HostSentry软件的工作。这种类型的包监视器尝试登录或退出,从而给系统管理员发送警告,该活动是不一般的或不希望的。
4.监视root的活动
获得要进行破坏的系统的超级用户(root)或管理员的访问权限是所有入侵者的目标。除了在特定的时间内要对系统进行定期地维护外,在对如web服务器或数据库服务器进行良好维护和可靠的系统上超级用户通常几乎没有或很少的活动。但是,入侵者不信任系统维护。他们很少在定期的维护时间工作,而经常是一天在上面进行很长时间的活动。他们在该系统上执行很多不一般的*作,有时候比系统管理员更多。
所以,我们就有了一个可以进行防卫的思路:监视根用户或系统管理员的活动。许多unix系统允许纪录或监视根用户的活动,象Logcheck这样的软件包然后就可以扫描这些日志以查找不一般的活动并通知有关人员注意。
开放源码的*作系统的管理员还有一个最后的选择:改变内核以记录特定类型的活动。如何进行该项*作已经超出了本文要讨论的范围。互联网上有很多的站点提供了如何进行该*作的详细情况。
5.监视文件系统
一旦一个入侵者侵入了一个系统(虽然你已经尽了最大努力使得入侵检测系统发挥它的最佳效果,但是,但是,也不能完全排除入侵者侵入你系统的可能性),那么他们就要开始改变系统的文件,例如,一个成功的入侵者可能想要安装一个包嗅探器或者端口扫描检测器,或者修改一些系统文件或程序,使得不能检测他们在周围进行的入侵活动。
在一个系统上安装软件通常包括修改系统的某些部分。这些修改通常要修改系统上的文件或库。
象Tripwire、Fcheck和AIDE这样的程序就是设计来当检测到系统上的文件发生改变时,就通知系统管理员已经发生了某些变化。
例如,可以采取以下的方法:
l 对所有的系统文件创建MD5或其它的加密校验和,并把他们存放在数据库中。当一个文件改变时,它的校验和就要发生变化。
l 存储每个系统文件创建或修改的日期和时间。在这些时间戳里查找相应的变化。
l 保存系统的任何suid(象根用户一样运行的)程序的记录。如果这些发生了变化,或者安装了新的条目,或者删除了,那么就有问题了。
在Tripwire、Fcheck和AIDE上对这些方法的使用进行了一些变化,但是它们都是建立在以上的机理的基础上的。这些程序也注意确保采用加密校验和的数据库本身不被破坏。例如,具有*作系统和入侵检测软件知识的入侵者修改了系统文件,同时也修改了采用加密校验和的数据库,从而使得这两者显现出没有发生任何的变化,这是可能的。

(三).基于内核的入侵检测
基于内核的入侵检测是一种较新的技术,它开始变得流行起来,特别是在Linux上。
在Linux上目前可用的基于内核的入侵检测系统目前主要有两种。它们是OpenWall和LIDS。这些系统采取措施防止缓冲区溢出,增加文件系统的保护,封闭信号,从而使得入侵者破坏系统越来越困难。LIDS同时也采取一些步骤以阻止根用户的一些活动,例如安装一个包嗅探器或改变防火墙策略。

(四).内核保护和文件系统监视的比较
象LIDS这样的系统和象Tripwire这样的系统采取不同的方法去达到相同的目标。这些软件包都是试图阻止一个入侵者未授权地使用系统。
可能,有些人觉得象Tripwire这样的系统并不是很有用。但是,一旦你的系统被外界的入侵者破坏并需要关闭和重新建设该系统之后,就会发觉监视文件系统以发现滥用的征兆是非常乐意接受的。破坏已经产生了,系统的完整性没有办法得到保证,所以最好的办法是用你的提供商提供给你的原来版本的CD重新构建你的*作系统。而LIDS提供的方法看起来应该更具有吸引力——破坏已经发生之后才提示还不如保护系统不被破坏。
尽管我趋向于在原则上同意这种分析,但是,如果同时运行LIDS和Tripwire的话,那就更加安全了。虽然LIDS希望以自己的能力去保护文件系统,使用一个类似于Tripwire这样的程序包作为一个审计者的还是值得的,尤其是一些有相应知识的入侵者以某种不知的方式击败了LIDS的时候。

五.结论
采用最新的工具去防止已知的各种类型的威胁是可能的。但是不幸的是,一些软件包或其它的新的威胁和安全漏洞每天都在被报导。
在任何环境中知道你所需要面对的威胁类型是非常重要的。知道你系统上潜在着的安全漏洞,并小心地防止对它们的攻击。例如,一台连接在互联网上的web服务器放置在防火墙之后对于许多基于数据包的攻击而言应该说是相当安全了,但是,服务器上的CGI程序可能却暴露了一些脆弱性。必须特别注意确保CGI程序正确检查所有数组的边界并在处理之前验证输入的数据。在防火墙和web服务器之间的入侵检测程序可以配置成拒绝任何可疑的访问。
1.保持最新
我以上所提及的许多入侵检测工具都在不断地更新,包括关于它们发现的新的威胁的信息,然而,保持这些工具的最新版本是非常重要的。
注意可信的邮件列表(例如BUGRTAQ)和安全web站点能够使得你知道影响你所安装的软件的最新的安全问题的信息。如果留意到你所使用的软件包、防火墙产品或者也许是入侵检测软件包本身的脆弱性,不要逃避它们,而要赶紧联系供应商以获得补丁。
2.什么工具
本文中我提及了许多不同类型的工具,它们都具有不同的功能。
为了你的环境尽可能安全,根据不同的功能选择工具是很重要的。当其它的工具被击败了之后你还有另外层次的保护。所以,你的第一层的保护必须是一个防火墙。在这之后,基于网络的入侵检测系统将截获绕过防火墙的攻击。再之后,一系列的工具(例如PortSentry和HostSentry)将监视企图的连接,从而提供了额外层次的保护。最后,如果以上的都失败了,抓获确实的入侵的工具,例如LogCheck或者Tripwire就形成了最后层次的防护

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
                       

厦门金荣计算机设备有限公司版权所有
地 址:福建省厦门市湖滨南路69号电子城206 邮编:361004
电 话:0592-2232656 2220153 传真:0592-2383583
联系人:周小姐 E-mail:xmko001@163.com