《4l2[计算机]入侵检测系统原理、实践与选购》由会员分享,可在线阅读,更多相关《4l2[计算机]入侵检测系统原理、实践与选购(8页珍藏版)》请在金锄头文库上搜索。
1、自从计算机以网络方式被连接开始,网络安全就成为一个重大问题,随着 INTERNET 的发展,安全系统的要求也与日俱增,其要求之一就是入侵检测系统。 本文旨在介绍几种常见的入侵检测系统及其理论和实践,需要指出的是,本文仅仅是一篇介绍性的文章,即使我推荐了许多可能的系统,在你相信其可靠性前,还需要深入的研究做更近一步研究。 一、什么是入侵检测 入侵检测是指监视或者在可能的情况下,阻止入侵或者试图控制你的系统或者网络资源的那种努力。 简而言之,它的工作方式是这样的:你有台机器,被连接到网络上,也许就是被连到了 INTERNET 上,出于可以理解的原因,你也愿意为被授权者设置从网络上访问你的系统的许可
2、。比如,你有以台连接到 INTERNET 上的 WEB 服务器,愿意让客户、职员和潜在客户可以访问存储在 WEB 服务器上的页面。 然而,你并不愿意那些未经授权的职员、顾客或者其他未经授权的第三方访问系统。比如,你不愿意除了公司雇佣的网页设计人员以外的人员可以修改储存在机器上的页面。典型的做法之一就是使用防火墙或者某种认证系统来防止未经授权的访问。 但是,在一些情况下,简单的使用防火墙或者认证系统也可以被攻破。入侵检测就是这样以种技术,它会对未经授权的连接企图作出反应,甚至可以抵御以部分可能的入侵。 那么, 二、为什么要使用 ID 呢 以下给出了使用 ID 的理由: (1)你需要保护自己的数据
3、安全和系统,而事实是在现在的 INTERNET 环境下,如果你仅仅使用普通的密码和文件保护方式,你不可能永远保证你数据和系统的安全性。 (2)对于保护数据来说,没有什么比系统的安全更重要了,想就这么把你的机器连上INTETNET 而不作任何防护,甚至连管理员密码都不设,就指望这台机器会太平无事,那简直是近乎于痴心妄想。同样,系统对核心文件或者授权数据库(比如 NT 的 SAM 和UNIX 的 /ETC/PASSWORD 或者/ETC/SHADOW )的保护也是非常重要的。 (3)在通过局域网连接到 INTERNET 的环境下,经常会采用防火墙或者其他保护措施,如果在 NT 环境下,如果开放了文
4、件共享,或者允许 TELNET,这台机器就需要更好的保护,比如在防火墙中对 137139 端口(属于 TCP/UDP) ,SMB 协议下的 NT 文件共享加以限制、使用 SSH 取代 UNIX 环境下的 TELNET 连接。 (4)ID 还有进一步的作用,由于被放置在防火墙和被保护的系统之间,ID 等于是在系统之上增加了以层保护。比如,通过 ID 对敏感端口的监测就可以判断防火墙是否已经被攻破,或者防护措施已经被灭了。 三、ID 有哪些种类呢 ID 可以分为两大类, (1)基于网络的系统:这种 ID 放置于网络之上,靠近被检测的系统,它们监测网络流量并判断是否正常。 (2)基于主机的系统:这种
5、系统经常运行在被监测的系统之上,用以监测系统上正在运行的进程是否合法。我还想补充最近出现的一种 ID:位于操作系统的内核之中并监测系统的最底层行为。所有这些系统最近已经可以被用于多种平台。 基于网络的 ID 简介 基于网络的 IDS 是指监测整个网络流量的系统,一块网卡就可能会有两种用途: 普通模式: 受数据包里面所包含的 MAC 地址决定,数据被发送到目的主机。任意模式(Promiscuous mode):所有可以被监测到的信息均被主机接收。 网卡可以在普通模式和任意模式之间进行切换,同样,使用操作系统的低级功能就可以完成这种变换。基于网络的 IDS 一般是需要把网卡设置成后以种模式。 包嗅
6、探和网络监测 包嗅探和网络监测最初是为了监测以太网的流量而设计的,最初的代表性产品就是 NOVEL 的 LANALYSER 和 MS 的 NETWORK MONITOR。 这些产品一般会拦截它们在网络上可疑拦截的一切数据包,当一个数据包被拦截后,可能会有以下几种情况: 对包进行累加,在截取的时间段内对数据包进行累加,用以确定该时间段内网络的负载,LANALYSER 和 MS 的 NM 都在网络负载的表示界面方面有很好的表现。 对数据包进行分析:比如,当你想对抵达一个 WEB 服务器的数据进行分析时,你往往会先捕获一些数据,然后进行分析。 包嗅探工具在近年有了长足的发展,象 ETHEREAL 和
7、新版的 MSNM 都可以对数据包进行详尽的分析。 最后罗嗦以句(NND,洋人就是 P 多):工具本身无善恶,全在人心,通过对连接到 UNIX 的 TELNET 连接进行包嗅探,就可能可以截取用户的密码,任何一个入侵者一旦得手,首先的事情就是会安装包嗅探器(NND,那是说高手,象俺最多在自己的机器上装个嗅探器,嘿嘿) 包嗅探与任意模式 所有包嗅探都需要网卡被设置为任意模式,因为仅在此模式下,所有通过网卡的数据可以被传送到嗅探器,包嗅探的使用前提是安装他的机器上使用者具有管理员权限 还有一点需要引起注意的是交换机的使用,请注意,不是 HUB(NND,当我们中国人没见过交换机啊!) ,在交换机内,一
8、个接口所接收的数据并不是一定会转发到另一个接口,所以,在这种情况下,包嗅探器并不一定可以发挥其作用。 基于网络的 ID:嗅探器的发展 不幸的是,从安全的角度来看,包嗅探器好处有限。要去捕获每一个数据包,然后是分析、手工采取行动,实在是一件烦琐之至的事情,但是,如果用软件来代替我们的劳动呢? 这就是基于网络的 ID 要干的活。比如经常使用的 ISS RealSecure Engine 和Network Flight Recorder. 以下给出 RealSecure Engine 这种 ID 的作用: 监测网络上的数据传输情况。 如果数据为正常数据,允许其通过(或者留待以后分析) ,如果数据包被
9、认为可能会危害目的地系统的安全,则发出connection closed(使用 TCP 协议时)或者port unreachable(使用 ICMP 时)以截断数据发送方和接收方之间的连接。 在这种情况下,RealSecure 可以在防火墙后建立起以个有效的阻止系统,当然,也有在防火墙的位置直接使用 RS 的,而我(原作者不是土鳖我啊!)不建议大伙采用这种方法。 基于网络的 ID 还有一些别的功能,比如: 监测明显的端口扫描。在攻陷系统之前,攻击者一般会扫描系统以发现系统的缺陷,一般说来,INTERNET 上来自以台主机的端口扫描往往是有人开始攻击的先兆。 对常见的攻击方式加以监测。通过 80
10、 端口连接到以台 WEB 服务器应该看来是以件很正常的事情,但是有些同样通过 80 端口进行的连接就可能是祸心内藏哦,看看这个命令你就知道“GET /./././etc/passwd HTTP/1.0” 鉴别各种 IP 欺骗。用于完成 IP 和 MAC 地址之间转换的 ARP 协议往往是攻击的重点,通过在以太网上向目的地址发布载有虚假 ARP 数据的数据包,入侵者可以将自己伪装成位于另外一个系统上,这样的结果就是各种拒绝服务攻击,当大型服务器(如 DNS 或者身份认证服务器)遭到攻击时,入侵者可以将数据包转发到自己的系统上。基于网络的IDS 通过登记 ARP 包,对信息源(以太网地址)进行认定
11、,如果确认信息来自于已经被攻陷的系统,则会对入侵者进行拦截。 如果探测到了有问题的行动,基于网络的 ID 会自行采取行动,包括重新配置附近的防火墙以拦截所有来自入侵者的数据流. 基于主机的 ID 简介 当数据包抵达目的主机后,防火墙和网络监控已经无能为力了,但是还有以个办法可以试试,那就是“基于主机的 ID” 基于主机的 ID 又可以分成两大类: 网络监测:这种监测对抵达主机的数据进行分析并试图确认哪些是潜在的威胁,任何连接都可能是潜在的入侵者所为,请注意,这点与基于网络的 ID 不同,因为它仅仅对已经抵达主机的数据进行监测,而后者则是对网络上的流量进行监控。如次一来就不需要把网卡设置成模式了
12、。 主机监测:任何入侵企图(或者成功的入侵)都会在监测文件、文件系统、登录记录或其他主机上的文件中留下痕迹,系统管理员们可以从这些文件中找到相关痕迹。 外来连接监测: 主机可以在数据包真正抵达主机之前对试图进入主机的数据包进行监测,以避免其进入系统后可能造成的损害。 可供选择的处理方式有: 监测未经授权的试图通过 TCP 或者 UDP 端口进行的连接,比如如果有人试图通过未开放任何服务的端口进行连接,就往往意味着有人在寻找系统漏洞。 监测端口扫描:在此我再推荐一种方式:调整防火墙或者调整本地 IP 配置(可以使用 LINUX 下的 IPCHAINS)以拒绝来自可能的入侵者的连接请求。 值得推荐
13、的两个文件是 ISS 的 RealSecure Agent 和 PortSentry. 注册行为监测 即使网管做了最大的努力,安装了最新的 IDS,入侵者也有可能使用无法被监测到的的手段来入侵系统,造成这种情况的重要可能之一就是入侵者使用包嗅探恩公工具已经取得了用户密码并能够合法登录系统。 HOSTSENTRY 这样的产品的任务之一就是寻找系统的不寻常操作,对用户试图进行注册和注销进行监控,并就这些活动中不正常或者未曾预料的部分向系统管理员报警。根操作监控 入侵者的最终目的是为了掌握被入侵主机上的根用户权限,如果一台 WEB 服务器规划的好的话,除了极少数的计划好的维修时间以外,根用户应该很少
14、会有什么操作,但是根用户们也很少按照计划去进行检修,而是逮空就干,但是即使是这样,入侵者也很有可能在兔子都不拉屎的时间或者地方干出些什么事情来。 需要防御的战线还有以条:监视根用户或系统管理员的任何操作。许多 UNIX 系统允许根用户执行包括登录、监测在内的所有运算,而象 LOGCHECK 这样的工具则可以对这些登录记录加以监控并提请网管注意。 如果使用了开放源代码的操作系统,网管们只有一个选择:改进内核。如何改进不在本文的讨论范围之内,毕竟 INTERNET 网上这样的资源很多。监测文件系统 不管你的愿望如何良好,ID 怎么卖命,你也不敢保证系统固若金汤,而系统一旦被攻陷,入侵者就会立即开始
15、更改系统的文件,或者更改一些设置以废掉 ID 们的武功(哦!要练神功,必先自宫!) 在软件的安装过程中,不可避免的会更改系统设置,这些设置更改一般会在系统的文件或者 LIBRARY 的变化中体现出来。 类似于 TRIPWIRE,FCHECK 和 AIDE 的程序被设计用于检测系统内的文件变动,并向系统管理员报告。 在所有系统文件上使用 MD5 或者其他的加密、校验和等手段,将这些设置储存进数据库,当文件变化时,校验和也会发生变化。 注意所有文件的创建和修改时间,以及它们的时戳。 对 SUID 命令的使用加以监控,任何变化或者新的 SUID 命令被安装、删除,都可能会是问题的征兆。 不管 Tri
16、pwire, Fcheck, AIDE 玩得怎么花,它们的工作原理就是上面那些东西,它们的作用是保证那些数据库和加密的校验和没出问题。因为不排除这样一种可能,入侵者水平很高,高到足以理解操作系统和 IDS,直接就把加密的校验和数据库都改得天衣无缝。 基于内核的 ID 基于内核的 ID 还是以种新生事务,但是成长很快,尤其是在和 LINUX 的配合方面。 现在有两种基于 LINUX 的不同的基于内核的 ID,它们是 OPENWALL 和 LIDS。它们在防止缓冲区溢出方面有了长足进展,增强了文件系统的保护,拦截信号并使入侵系统变得更加困难。LIDS 也采取了一定措施以防止根用户执行一些操作,比如安装嗅探器或者更改防火墙规则等等。 内核保护和文件系统保护 显而易见的是,虽然最终效果相近,LIDS 系统和 TRIPWIRE 系统差别很大,它们都可以用于阻止入侵者出于未经授权的目的使用系统。 乍看之下,虽然象 TRIPWIRE 这样的系统确实是一个监测文件系统的好东西,人们也可