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