入侵检测Q&A

在网络安全领域,随着黑客应用技术的不断“傻瓜化”,入侵检测系统IDS的地位正在逐渐增加。一个网络中,只有有效实施了IDS,才能敏锐地察觉攻击者的侵犯行为,才能防患于未然!本文对IDS的概念、行为及策略等方面内容以问答形式进行全面介绍,期望帮助管理者更快和更好地使用IDS。
  
  问:都有哪些重要的IDS系统?
  根据监测对象不同,IDS系统分为很多种,以下是几种很重要的IDS系统:
  
  1、NIDS
  
  NIDS是network intrusion detection system的缩写,即网络入侵检测系统,主要用于检测hacker或cracker通过网络进行的入侵行为。NIDS的运行方式有两种,一种是在目标主机上运行以监测其本身的通讯信息,另一种是在一台单独的机器上运行以监测所有网络设备的通讯信息,比如hub、路由器。
  
  2、SIV
  
  SIV是system integrity verifiers的缩写,即系统完整性检测,主要用于监视系统文件或者Windows 注册表等重要信息是否被修改,以堵上攻击者日后来访的后门。SIV更多的是以工具软件的形式出现,比如著名的“Tripwire”,它可以检测到重要系统组件的变换情况,但并不产生实时的报警信息。
  
  3、LFM
  
  LFM是log file monitors的缩写,即日志文件监测器,主要用于监测网络服务所产生的日志文件。LFM通过检测日志文件内容并与关键字进行匹配的方式判断入侵行为,例如对于HTTP服务器的日志文件,只要搜索“swatch”关键字,就可以判断出是否有“phf”攻击。
  
  4、Honeypots
  
  蜜罐系统,也就是诱骗系统,它是一个包含漏洞的系统,通过模拟一个或多个易受攻击的主机,给黑客提供一个容易攻击的目标。由于蜜罐没有其它任务需要完成,因此所有连接的尝试都应被视为是可疑的。蜜罐的另一个用途是拖延攻击者对其真正目标的攻击,让攻击者在蜜罐上浪费时间。与此同时,最初的攻击目标受到了保护,真正有价值的内容将不受侵犯。蜜罐最初的目的之一是为起诉恶意黑客搜集证据,这看起来有“诱捕”的感觉。
  
  问:谁是入侵者?
  通常我们将入侵者称为hacker,但实际上这是不准确的。可以这么说:hacker是发现系统漏洞并修补漏洞的,cracker才是利用漏洞占山头搞破坏的入侵者。为了不混淆视听,在此干脆统一叫作入侵者吧。一般来说,入侵者分为两类:内部和外部。内部入侵者通常利用社会工程学盗用非授权帐户进行非法活动,比如使用其他人的机器、冒充是处长或局长;外部入侵者则要借助一定的攻击技术对攻击目标进行监测、查漏,然后采取破坏活动。
  
  有一点请牢记:统计表明,入侵行为有80%来自内部。
  
  问:入侵者如何进入系统?
  主要有三种方式:
  
  1、物理入侵
  
  指入侵者以物理方式访问一个机器进行破坏活动,例如趁人不备遛进机房重地赶紧敲打两下键盘试图闯入操作系统、拿着钳子改锥卸掉机器外壳“借”走硬盘装在另一台机器上进行深入研究。
  
  2、系统入侵
  
  指入侵者在拥有系统的一个低级账号权限下进行的破坏活动。通常,如果系统没有及时“打”最近的补丁程序,那么拥有低级权限的用户就可能利用系统漏洞获取更高的管理特权。
  
  3、远程入侵
  
  指入侵者通过网络渗透到一个系统中。这种情况下,入侵者通常不具备任何特殊权限,他们要通过漏洞扫描或端口扫描等技术发现攻击目标,再利用相关技术执行破坏活动。NIDS主要针对的就是这种入侵。
  
  问:入侵者为何能闯入系统?
  苍蝇不盯无缝的蛋,入侵者只要找到复杂的计算机网络中的一个缝,就能轻而易举地闯入系统。所以,了解这些缝都有可能在哪里,对于修补它们至关重要。通常,裂缝主要表现在软件编写存在bug、系统配置不当、口令失窃、明文通讯信息被监听以及初始设计存在缺陷等方面。
  
  1、软件编写存在bug
  
  无论是服务器程序、客户端软件还是操作系统,只要是用代码编写的东西,都会存在不同程度的bug。Bug主要分为以下几类:
  
  缓冲区溢出:指入侵者在程序的有关输入项目中了输入了超过规定长度的字符串,超过的部分通常就是入侵者想要执行的攻击代码,而程序编写者又没有进行输入长度的检查,最终导致多出的攻击代码占据了输入缓冲区后的内存而执行。别以为为登录用户名留出了200个字符就够了而不再做长度检查,所谓防小人不防君子,入侵者会想尽一切办法尝试攻击的途径的。
  
  意料外的联合使用问题:一个程序经常由功能不同的多层代码组成,甚至会涉及到最底层的操作系统级别。入侵者通常会利用这个特点为不同的层输入不同的内容,以达到窃取信息的目的。例如:对于由Perl编写的程序,入侵者可以在程序的输入项目中输入类似“| mail < /etc/passwd”的字符串,从而使perl让操作系统调用邮件程序,并发送出重要的密码文件给入侵者。借刀杀人、借Mail送“信”,实在是高!
  
  不对输入内容进行预期检查:有些编程人员怕麻烦,对输入内容不进行预期的匹配检查,使入侵者输送炸弹的工作轻松简单。
  
  Race conditions:多任务多线程的程序越来越多,在提高运行效率的同时,也要注意Race conditions的问题。比如说:程序A和程序B都按照“读/改/写”的顺序操作一个文件,当A进行完读和改的工作时,B启动立即执行完“读/改/写”的全部工作,这时A继续执行写工作,结果是A的操作没有了表现!入侵者就可能利用这个处理顺序上的漏洞改写某些重要文件从而达到闯入系统的目的,所以,编程人员要注意文件操作的顺序以及锁定等问题。
  
  2、系统配置不当
  
  默认配置的不足:许多系统安装后都有默认的安全配置信息,通常被称为easy to use。但遗憾的是,easy to use还意味着easy to break in。所以,一定对默认配置进行扬弃的工作。
  
  管理员懒散:懒散的表现之一就是系统安装后保持管理员口令的空值,而且随后不进行修改。要知道,入侵者首先要做的事情就是搜索网络上是否有这样的管理员为空口令的机器。
  
  临时端口:有时候为了测试之用,管理员会在机器上打开一个临时端口,但测试完后却忘记了禁止它,这样就会给入侵者有洞可寻、有漏可钻。通常的解决策略是:除非一个端口是必须使用的,否则禁止它!一般情况下,安全审计数据包可用于发现这样的端口并通知管理者。
  
  信任关系:网络间的系统经常建立信任关系以方便资源共享,但这也给入侵者带来借牛打力、间接攻击的可能,例如,只要攻破信任群中的一个机器,就有可能进一步攻击其他的机器。所以,要对信任关系严格审核、确保真正的安全联盟。
  
  3、口令失窃
  
  弱不禁破的口令:就是说虽然设置了口令,但却简单得再简单不过,狡猾的入侵者只需吹灰之力就可破解。
  
  字典攻击:就是指入侵者使用一个程序,该程序借助一个包含用户名和口令的字典数据库,不断地尝试登录系统,直到成功进入。毋庸置疑,这种方式的关键在于有一个好的字典。
  
  暴力攻击:与字典攻击类似,但这个字典却是动态的,就是说,字典包含了所有可能的字符组合。例如,一个包含大小写的4字符口令大约有50万个组合,1个包含大小写且标点符号的7字符口令大约有10万亿组合。对于后者,一般的计算机要花费大约几个月的时间才能试验一遍。看到了长口令的好处了吧,真正是一两拨千斤啊!
  
  4、嗅探未加密通讯数据
  
  共享介质:传统的以太网结构很便于入侵者在网络上放置一个嗅探器就可以查看该网段上的通讯数据,但是如果采用交换型以太网结构,嗅探行为将变得非常困难。
  
  服务器嗅探:交换型网络也有一个明显的不足,入侵者可以在服务器上特别是充当路由功能的服务器上安装一个嗅探器软件,然后就可以通过它收集到的信息闯进客户端机器以及信任的机器。例如,虽然不知道用户的口令,但当用户使用Telnet软件登录时就可以嗅探到他输入的口令了。
  
  远程嗅探:许多设备都具有RMON(Remote monitor,远程监控)功能以便管理者使用公共体字符串(public community strings)进行远程调试。随着宽带的不断普及,入侵者对这个后门越来越感兴趣了。
  
  5、TCP/IP初始设计存在缺陷
  
  即使软件编写不出现bug,程序执行时也按照正确的步骤进行,但初始设计存在缺陷仍会导致入侵者的攻击。TCP/IP协议现在已经广为应用、大行其道了,但是它却是在入侵者猖狂肆虐的今天之很早以前设计出来的。因此,存在许多不足造成安全漏洞在所难免,例如smurf攻击、ICMP Unreachable数据包断开、IP地址欺骗以及SYN湮没。然而,最大的问题在于IP协议是非常容易“轻信”的,就是说入侵者可以随意地伪造及修改IP数据包而不被发现。幸好,大救星Ipsec协议已经开发出来以克服这个不足。
  
  问:入侵者如何获取口令?
  1、监听明文口令信息
  
  大量的通讯协议比如Telnet、Ftp、基本HTTP都使用明文口令,这意味着它们在网络上是赤裸裸地以未加密格式传输于服务器端和客户端,而入侵者只需使用协议分析器就能查看到这些信息,从而进一步分析出口令,成为真用户的克隆。
  
  2、监听加密口令信息
  
  当然,更多的通讯协议是使用加密信息传输口令的。这时,入侵者就需要借助字典或者采用暴力攻击法来解密了。注意,我们并不能察觉到入侵者的监听行为,因为他在暗处,是完全被动的,没有发送任何信息到网络上,入侵者的机器仅被用于分析这些口令信息。
  
  3、重放攻击(Replay attack)
  
  这又是一种间接的攻击方式,就是说:入侵者不必对口令进行解密,需要的是重新编写客户端软件以使用
在网络安全领域,随着黑客应用技术的不断“傻瓜化”,入侵检测系统IDS的地位正在逐渐增加。一个网络中,只有有效实施了IDS,才能敏锐地察觉攻击者的侵犯行为,才能防患于未然!本文对IDS的概念、行为及策略等方面内容以问答形式进行全面介绍,期望帮助管理者更快和更好地使用IDS。
  
  问:入侵有哪些方式?
  1、探测
  
  探测方式有很多,包括ping扫描、探测操作系统类别、系统及应用软件的弱帐号扫描、侦探电子邮件、TCP/UDP端口扫描、探测Web服务器CGI漏洞等。
  
  2、漏洞利用
  
  指入侵者利用系统的隐藏功能或漏洞尝试取得系统控制权。主要包括:
  
  CGI漏洞:编写CGI程序需要考虑得非常完善才有可能避免安全威胁。入侵者经常要尝试访问系统中的一些具有知名漏洞的CGI程序,以期寻找到突破口。这些CGI程序有:TextCounter、GuestBook、EWS、info2www、Count.cgi、handler、webdist.cgi、php.cgi、files.pl、nph-test-cgi、nph-publish、AnyForm、FormMail。如果我们没有使用这些文件却发现有人正在频繁地访问其中之一,就可以清楚地断明一个入侵行为正在进行了。
  
  Web服务器漏洞:比如文件名中包含一系列“../”字符串从而可以访问系统中的任意文件;URL路径后添加上“::$DATA”就可以查看脚本源代码。
  
  Web浏览器漏洞:这方面的漏洞涉及面同样很广,冲浪者绝不能掉以轻心。比如可能导致缓冲区溢出或执行.LNK命令的URL、畸形的HTTP header内容、MIME类型溢出(例如Netscape浏览器的命令)、总是有漏可乘的javascript脚本(例如利用文件上传功能创建后门程序)、偶尔犯些错误的Java代码以及现在更为厉害、更为猖獗的ActiveX组件。
  
  STMP漏洞:比如利用缓冲区溢出攻击STMP、使用VRFY命令搜索用户名称。
  
  IMAP漏洞:IMAP即Internet信息控制协议(Internet Message Access Protocol),是指从邮件服务器上获取Email信息或直接收取邮件的协议。传统的POP3收信过程中,用户无法得知邮件的具体信息,只有在邮件全部下载到硬盘后,才能慢慢地浏览或删除,用户几乎没有对邮件的控制决定权。IMAP解决的就是这个问题。但是许多流行的IMAP服务器都存在重大漏洞。
  
  IP地址欺骗:由于路由选择不需要判断来源地址,因此入侵者就可将IP数据包的来源地址替换为伪造地址以期隐藏其攻击地点。而且,由于是伪造的来源地址,入侵者也不会接收到目标机器的返回通讯信息,真正做到了“攻不还手”。
  
  缓冲区溢出:除了前面提及的缓冲区溢出种类外,还有DNS溢出(超长DNS名字发送给服务器)、statd溢出(超长文件名)。
  
  3、DoS或DDoS(拒绝服务攻击或分布式拒绝服务攻击)
  
  这种攻击是真正的“损人不利己”,不需要别人的数据,只想等别人出错看热闹。这种攻击行为越来越多,是不是因为这种人也越来越 …… 常见的DoS有死亡之Ping、SYN湮没、Land攻击。
  
  问:NIDS检测到一个入侵行为后做什么?
  当发现一个入侵行为后,NIDS系统将采取诸多有力措施对付攻击,这主要包括:
  
  * 重新配置防火墙禁止入侵者IP地址进入
  * 播放一段.WAV音乐提醒管理者
  * 发送SNMP TRAP信息包到管理控制台
  * 将事件记录到系统日志文件中
  * 给管理员发送电子邮件通知入侵正在发生
  * 以寻呼方式(BP机)告知管理员
  * 保存攻击信息,如攻击时间、入侵者IP地址、受害者IP地址及端口、协议信息、相关数据包
  * 启动特殊程序处理入侵事件
  * 伪造TCP FIN信息包强制结束连接,避免悲剧继续上演
  
  问:除了IDS外,还有什么入侵对策?
  1、防火墙
  
  有种观点说:防火墙是安全护卫的第一道防线,只要突破它,入侵者将随意驰骋被突破的网络。但是更好的说法应该是:防火墙是安全护卫的最后一道防线,在正确配置机器及良好运行入侵检测系统的前提下,用防火墙来避免script kiddies的幼稚和简单的攻击。有两点要注意:一是现在的许多路由器都可以配置成防火墙的过滤功能;二是防火墙通常只能抵抗外部攻击,对于内部破坏则显得力不从心。
  
  2、口令验证系统
  
  保证口令验证系统的稳固性是另外一个要采取的措施。或者采用系统内置的口令验证策略,比如Win2K的Kerberos验证,或者考虑购买单独产品以整合进增强的口令系统,比如RADIUS(远程认定拨号用户服务)或TACACS(TACACS是用于UNIX系统上有历史的认证协议,它使远程访问服务器将用户的登录信息发送到认证服务器以确定用户是否可以访问给定系统)。这些验证系统都有助于消除Telnet、ftp、IMAP或POP等协议带来的明文口令问题。
  
  3、虚拟专用网VPN
  
  VPN通过Internet为远程访问创建安全的连接管道环境,其中使用的主要协议有PPTP和Ipsec。PPTP即PPP over TCP,使用它就可以为一台机器分配2个IP地址,一个用于Internet,另一个用于虚拟网。Ipsec是Win2K系统的新协议,它提高了传统IP协议的安全性。然而VPN也有其明显的弱点,虽然管道本身经过验证和加密处理是安全的,但是管道的两端却是开放的,这就可能造成入侵者从一个被安装了后门的家庭用户机器上大摇大摆地遛进安全管道、不被检查地访问内部网。
  
  4、加密系统
  
  随着个人隐私权的不断被重视,加密系统现在越来越“时髦”了。加密邮件可以使用PGP(Pretty Good Privacy)和SMIME(加密专用多用途Internet邮件扩展),加密文件也可以使用PGP,加密文件系统可以使用BestCrypt或者还是PGP。
  
  问:IDS系统应该安放到网络的什么部位?
  
  1、网络主机
  
  在非混杂模式网络中,可以将NIDS系统安装在主机上,从而监测位于同一交换机上的机器间是否存在攻击现象。
  
  2、网络边界
  
  IDS非常适合于安装在网络边界处,例如防火墙的两端、拨号服务器附近以及到其他网络的连接处。由于这些位置的带宽都不很高,所以IDS系统可以跟上通讯流的速度。
  
  3、广域网中枢
  
  由于经常发生从偏僻地带攻击广域网核心位置的案件以及广域网的带宽通常不很高,在广域网的骨干地段安装IDS系统也显得日益重要。
  
  4、服务器群
  
  服务器种类不同,通讯速度也不同。对于流量速度不是很高的应用服务器,安装IDS是非常好的选择;对于流量速度快但又特别重要的服务器,可以考虑安装专用IDS系统进行监测。
  
  5、局域网中枢
  
  IDS系统通常都不能很好地应用于局域网,因为它的带宽很高,IDS很难追上狂奔的数据流、不能完成重新构造数据包的工作。如果必须使用,那么就不能对IDS的性能要求太高,一般达到检测简单攻击的目的就应该心满意足。
  
  问:IDS如何与网络中的其他安全措施相配合?
  1、建立不断完善的安全策略。这一点异常重要!谁负责干什么?发生了入侵事件后怎么干?有了这些,就有了正确行动的指南。
  
  2、根据不同的安全要求,合理放置防火墙。例如,放在内部网和外部网之间、放在服务器和客户端之间、放在公司网络和合作伙伴网络之间。
  
  3、使用网络漏洞扫描器检查防火墙的漏洞。
  
  4、使用主机策略扫描器确保服务器等关键设备的最大安全性,比如看看它们是否已经打了最新补丁。
  
  5、使用NIDS系统和其他数据包嗅探软件查看网络上是否有“黑”流涌动。
  
  6、使用基于主机的IDS系统和病毒扫描软件对成功的入侵行为作标记。
  
  7、使用网络管理平台为可疑活动设置报警。最起码的,所有的SNMP设备都应该能够发送“验证失败”的trap信息,然后由管理控制台向管理员报警。
  
  问:如何检测网络上有人在使用NIDS系统?
  NIDS系统实际上就是一个嗅探器(sniffer),因此,任何标准的嗅探器检测工具都可用于发现它的存在。这些工具有:
  
  1、AntiSniff
  
  2、neped
  
  3、Sentinel
  
  4、ifstatus
  
  问:如何提高WinNT/Win2K系统的入侵保护程度?
  关于这个问题已经有许多诸葛亮出过谋划过策,在此我将选择重点并按考虑顺序列举如下:
  
  1、下载并安装最新的SP和hotfix。
  
  2、安装时文件系统选择NTFS格式,并且每个磁盘都使用NTFS(不要启动盘是FAT,其他盘是NTFS)。NTFS不仅仅可以实现对单个文件和单个目录的权限设置,还可以对它们进行审计。
  
  3、创建一个新的管理员帐号,将administrator的功能限制到最小以设置陷阱,观察是否有人试图盗用其权限;禁止guest帐号或者将guest帐号改名并创建一个新的guest帐号,目的同样是监测是否有人试图使用它入侵系统。
  
  4、去掉对%systemroot%/system32目录的默认权限:Everyone/写。
  
  5、启动REGEDT32程序打开“HKEY_LOCAL_MACHINE\Security”项,以检测远程注册表浏览行为。
  
  6、安装系统时默认目录不要选择“c:\winnt”,让入侵者费些心思猜测系统文件的位置。还有一个更好的方法是:首先安装在c:\winnt目录下,然后重新安装系统到其他目录,并且对c:\winnt目录添加审计功能,这样就可以监测是否有人想访问c:\winnt目录了。正所谓真真假假、假假真真,你在不断窥视、我设陷阱无数。
  
  7、启动分区只存放系统文件,数据和应用程序放到其他分区,甚至将数据和应用程序也分区存放。总之,隔离是避免“火烧联营”的最好方法。
  
  8、屏幕保护使用“Blank Screen”且设置密码保护,这样既达到安全目的也节省服务器处理资源。注意,

This entry was posted in 网络安全, 计算机网络 and tagged , . Bookmark the permalink.

发表评论