主机入侵防御系统的实际应用
来源:计算机安全 更新时间:2012-04-13


 
   自从有了网络的存在,入侵行为也就同时出现了。Internet的出现和高速发展同时带动了网络入侵活动的发展。在种种网络入侵行为中,针对关键服务器的攻击可以说是最具威胁性、可能造成损失最大的行为。

    网络的互连是为了实现信息的方便共享和传输。但是几乎自从有了网络的存在,入侵行为也就同时出现了。Internet的出现和高速发展同时带动了网络入侵活动的发展。在种种网络入侵行为中,针对关键服务器的攻击可以说是最具威胁性、可能造成损失最大的行为。越来越重要的信息无形资产存储在这些服务器上,一旦服务器受到了安全威胁势必殃及这些信息和数据。下面将从分析一些最普遍的攻击方式入手,逐一介绍破解这种攻击的方法,此处用到的核心技术是主机入侵防御系统。
   
    一、堆栈溢出防范
   
    这种类型的攻击赫赫有名,频频出现在CERT、SANS、CSI等国际网络安全组织的最具威胁的攻击类型名单内。据统计,通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上。这是一种渗透到系统中的攻击技术,其基本理是当来自某个程序的输入数据超出程序缓冲区能够处理的长度时会产生溢出,结果不受程序员的控制。当入侵者巧妙地安排代码后,被攻击的服务器还可能执行入侵者指定的程序代码,从而导致攻击者甚至可以获得系统中超级用户的权限。比如80年代的Morris"蠕虫"事件导致了当时Internet上1/3的计算机瘫痪,这种入侵方式就是采用了UNIX的Finger服务的一个缓存区溢出的漏洞;2001年的红色代码病毒在短短几个小时内传遍了全球,造成了数十亿美元的损失,也是采用了Windows服务器平台上的IIS服务的一个缓存区溢出漏洞。2003年的SQL Slammer蠕虫、2004年的震荡波等同样也是利用了这种漏洞。为什么这种攻击这么多呢?主要原因在于(单不仅限于)目前广泛用于系统编程的语言--C语言本身的某些函数就存在着一些漏洞,造成了这种漏洞的广泛存在和难以彻底清查。
   
    目前对这种攻击方式的防范方式主要有以下几种:第一,对存在溢出漏洞的程序打补丁。这是最常见的防范方式,需要依靠程序的厂商提供相应的补丁程序才能生效。但是随着网络攻击的频度不断加快,一个漏洞从被发现到运用在大规模的攻击中的时间大大缩短。往往程序厂商还没有发布相应的补丁程序,攻击就已经发生了。所以这种方式是非常被动的,无法防范新出现的漏洞入侵。第二,通过操作系统的设置使得缓冲区不可执行,从而阻止攻击者植入攻击代码。这种方式的主要问题在于首先可能和现有的应用程序存在冲突,其次对溢出攻击的防范不全面。因为有些攻击不需要进行攻击代码的植入过程。第三,采用专用的防范溢出的编译器对程序进行编译检查。这是一个比较完整的保护措施,但是却需要付出非常高昂的时间和费用的代价。
   
    所有上述的办法都无法在现实的业务系统中顺利使用。主机入侵防御系统则提供了另一种切实可行、易于实施的防止"堆栈溢出攻击"的方法。主机入侵防御系统中具有一种STOP (STack Overflow Protection,堆栈溢出保护)技术,可以阻止这种入侵,防止用户或程序获得超级用户权限。
   
    所有的缓冲区漏洞挖掘程序都基于以下一个假设,即:程序在每次运行时有问题的参数压入栈内的数据地址空间偏移量是一定的(或者相差较小)。如果在程序运行时由操作系统定义并且分配一个随机化的偏移给该应用程序,那么则专为此有缺陷的程序设计的溢出程序在溢出时就会返回一个错误的ret地址,而不能跳转到恶意构造的shellcode下。虽然大部分的缓冲区溢出程序也能提供可调整的offset变量,但由于每次有缺陷的程序运行时都将拥有一个随机化的偏移,因此通过上次不成功的溢出猜测所得到的地址空间和内容并不能来指导修正下次调整的offset。主机入侵防御系统提供了STOP技术在不改变操作系统内核下同级工作,能帮助定义并且分配一个随机化的偏移量,在不修改的系统内核的情况动态实现上述功能。
   
    通过这种防范措施,用户不仅仅能够对所有已知和未知推栈溢出类型的攻击进行高强度防范,而且还不需要修改任何现有的操作系统和应用程序,保证原有系统的持续运行,保护了投资。 
   
    二、信息篡改保护
   
    信息篡改破坏了信息的完整性,是入侵者攻击目的的一种。信息篡改主要有两种形式:信息传输中的篡改和信息存储时的篡改。信息传输中的篡改主要发生在在线的交易过程中对交易信息的篡改,将导致交易双方的严重经济损失;网络设备控制信息的篡改,可能导致网络工作异常、甚至导致信息传输途径的更改以至于失密。这种攻击行为的防范主要依靠信息交换双方对信息的加密和数字签名以及强验证方式来实现。信息存储时的篡改是最为常见的攻击方式,往往表现在对关键业务服务器上数据的更改,导致业务无法正常运行;对一些关键文件的篡改,比如针对网站主页的篡改,会导致被攻击者形象的损失和潜在的经济损失。
   
    比如一家在线交易单位如果网页被篡改,其后果可能会导致大量客户的流失,即使入侵行为没有危及到关键的交易数据。另外一种最具威胁的攻击手段是对可执行程序的篡改。入侵者通过对系统原有的可执行文件的篡改能够达到很多破坏目的。比如通过非法修改证券交易系统或者银行业务系统的程序以获取暴利;通过篡改某些关键应用程序导致系统无法正常运行。但是最常见的篡改目的是:通过篡改一些管理员或者用户经常使用的应用程序,使其在运行的时候除了执行正常的操作之外,同时运行一个入侵者放置的木马程序。这样,对管理员或者用户来说好像系统运行一切正常,但是却在不知不觉中运行了木马程序,导致后门洞开。这种入侵的后果是非常严重的,将可能导致严重的信息泄密。
   
    主机入侵防御系统的解决方法就是从根本入手,大大细化了对资源的控制粒度。不管是UNIX还是Windows服务器操作系统,对文件和目录的安全许可权限都是非常有限的。但是通过主机入侵防御系统就能够使文件和目录的许可控制大大增强。如图所示,许可类型除了读、写、执行外,还额外添加了删除、重命名、模式更改、属主更改、时间更新、ACL更改、创建、更改目录等8项许可,为管理员提供了充分的授权空间,能够按照最贴切的方式对各个账户进行资源的授权,防止授权过大造成的内部安全隐患。同时,同样一个账户采用不同的应用程序访问资源也有可能获得不同级别的访问许可,这给某些行业的特殊需求提供了极大的便利。
   
    有了文件许可的细化控制能够极大地减少由于授权原因造成的信息篡改事件。但是为了彻底杜绝对关键信息的篡改,主机入侵防御系统还提供了数字签名的功能,能够对普通文件、数据文件以及可执行文件特别是入侵者攻击的首要目标--UNIX中的suid和sgid类型的程序进行完整性校验。如果普通文件和数据文件发生了意外更改,主机入侵防御系统将会报警;如果可执行文件发生了意外更改,主机入侵防御系统将会自动拒绝这个可执行文件的执行,并且同时报警。这样,即使非法入侵者对目标文件进行了篡改,其目的也很难得逞。当然,如果实现利用主机入侵防御系统的文件保护功能对这些关键的文件进行了保护,入侵者是无法达到非法篡改的目的的。
   
    三、木马后门防范
   
    特洛伊木马(以下简称木马),英文叫做"Trojan horse",其名称取自古希腊的特洛伊木马攻城故事,相信大家都已经耳熟能详了。正是这种古老的攻城方式却成为了现在令人色变的网络入侵方式。
   
    首先,主机入侵防御系统具有的程序访问控制列表(PACL)功能使得同样一个用户访问同样的资源的时候,如果采用不同的应用程序访问,将会得到不同的权限。也就是说,对于一些重要的资源,我们可以采用主机入侵防御系统这种功能限定不同应用程序的访问权限,只允许已知的合法的应用程序访问这些资源。这样,即使入侵者在被攻击的服务器上运行了木马程序,但是木马程序需要窃取关键信息的时候必须要经过主机入侵防御系统的安全验证。由于PACL中没有定义木马程序的访问权限,按照默认权限是不能够访问的,由此就起到了对木马信息窃取的防范。
   
    另外,计算机一旦连结上了网络就融入了一个整体,需要对整体的安全性负责任。通过上文的分析我们已经发现,木马不仅仅会窃取本地信息,更严重的是入侵者能够通过本地计算机对网络中的其它计算机发起入侵,如DDoS攻击行为。美国政府法律规定由于某台计算机的安全问题直接导致的其它联网计算机的入侵事件,这台具有安全问题的计算机的所有人是需要负责任的。目前其它国家也正在陆续出台相关的规定。所以,在网络上仅仅采取明哲保身的自保策略是不够的。为了避免被植入木马的服务器成为入侵者的跳板和傀儡,主机入侵防御系统还具备了网络访问控制的作用。网络访问控制规则不仅仅能够定义哪些人能够在什么时间从哪里访问本机的哪些服务,而且更为重要的是,它还能够定义从本机能够发出什么类型的网络连接。这样,凡是不符合规则的连结将不能够从本机发出。举例来说,在红色代码泛滥的时候,许多运行IIS服务的服务器感染病毒后会在网络中进行大范围的扫描,发现TCP 80端口开放的潜在受攻击者。但是Web服务器的这种行为明显地是非常异常的行为。所以通过在主机入侵防御系统中定义外出连结的类型,能够从根本上避免由木马发起的外部攻击行为,特别是避免成为DDoS攻击的傀儡。

    四、进程中止保护
   
    在很多关键业务环境中,肯定都会有几种比较重要的服务在运行。比如一个电子商务交易Web站点,服务器上的HTTP服务或者守护进程就是非常关键的。而在后台的支撑环境中运行的数据库服务器上,数据库的守护进程就是这台服务器的灵魂。同样地,对于一个刚刚兴起的收费邮箱服务提供商来说,如果后台邮件服务器上的SMTP服务忽然停顿,势必会更加难以招徕用户。所以,信息化的社会的基石就是在关键服务器上运行的种种服务。一旦服务中止,上层的应用就会没有了根基。而在操作系统中,这些关键服务是以后台进程的方式存在。
   
    目前,受到攻击最多的服务就是HTTP、SMTP以及数据库进程,当然也有其它的关键服务进程。入侵者对于这些进程的中止方式一般有两种:一种是利用这些服务本身存在的某些漏洞进行入侵,而另外一种则是首先获得操作系统中能够中止进程的权限,一般是超级用户的权限,然后再中止进程。
   
    进程的安全性完全依赖于操作系统提供的安全级别。一般来说,进行进程中止的防止主要是采用Watchdog的技术。所谓Watchdog就是看门狗的意思,其主要功能是对进程进行看护,防止进程的意外中止。如果由于某些意外因素,进程非正常中断,Watchdog能够在很短时间内快速重新启动被看护的进程。
   
    主机入侵防御系统就具备了这种Watchdog的功能。事实上,主机入侵防御系统本身提供的服务就是基于三个进程的。主机入侵防御系统要对操作系统进行安全保护,需要首先进行自身的保护,防止自己进程的意外中止。在实际运行当中,这三个进程出了各自完成自己的职能外,还存在一种互相看守的关系。就是进程一是进程二的Watchdog,而进程二又是进程三的Watchdog,进程三则是进程一的Watchdog。
   
    这样,如果其中一个进程意外中止了,总有一个进程会将其重新启动。即使在非常情况之下两个进程同时意外中断,剩下的一个进程依然能够将另一个进程启动,然后启动最后一个进程。所以,主机入侵防御系统的这种安全机制是非常严密的,不仅仅用来保护自己,而且还能够很好地应用于对关键服务进程的安全防护。 
   
    五、超级权限分割
   
    超级用户的存在为管理者带来了极大的方便,登录一次,就能够完成所有的管理工作,执行所有的命令,进行所有的系统维护。但是,同时正是因为有了超级用户无所不能的超级权限,也造成了很多的麻烦。
   
    首先抛开入侵者的攻击不谈,仅仅管理员在执行正常的操作时,超级权限就带来了不少的问题。一旦使用超级用户登录,管理员在作各种操作的时候必须慎之又慎。系统中的很多动作是不可逆的,一旦管理员因为人为失误做出不当的操作,往往会造成不可挽回的损失。
   
    特别在关键的业务服务器系统上经常会出现这种类似的损失惨重的失误,我们经常能够在媒体上看到相关的一些报道。据统计,管理员的人为失误是对整个网络系统最大的安全威胁之一。实际上有一些操作是远远不需要超级用户的权限就能够完成的,但是绝大多数的人还是会选择采用超级用户的账户进行登录,究其原因,恐怕最根本的就是为了图方便,从而酿成大错。
   
    其次,在操作系统中设置超级用户有其不合理的一面。一般来说,管理员的职责是维护系统的正常运行,建立和维护各种账户,对资源的访问权限进行分配等等,他们一般不应该具有读取甚至修改、删除某些存放在服务器上的机密信息的权利。但是在现实中,具有超级用户的权限者就能够任意地对这些数据进行处理,即使经过加密的数据他们也能够轻而易举地破坏甚至删除。这是不合乎正常的安全策略的,需要通过某种措施进行控制。
   
    最后,在入侵者的世界里,恐怕再没有获取一个新的重要系统的超级用户的身份更加美好的事情了。几乎所有的攻击手段的终极目标就是要获得被攻击系统的完全控制权,而这一切基本上同于获得系统的超级用户的账户名称和密码。口令破解、堆栈溢出、网络窃听…等等,目的无不于此。一旦获得超级用户的权限,入侵者不仅仅能够完成上面所说的一系列行为,而且还能够任意地切换到其他人的身份,甚至不需要任何密码验证;能够随意地抹去对自己动作的一切审计记录,让审计人员无据可查。当然,超级用户的存在同样也使网络安全人员陷入了一种尴尬的境地。不管采用的防火墙是如何的牢不可破、IDS是如何地明察秋毫、加密算法是如何的先进,只要入侵者获得了超级用户的权限,这一切都形同虚设。
   
    为了对于上述的种种情况,主机入侵防御系统在操作系统的层次对超级用户的特权进行了再分配,并且将所有的用户都同等对待,使得系统中不再有超级用户的概念存在。经过分权后,每一个管理员自能够在自己的职责范围内工作,而不具备其它的特权。比如安全管理员能够对资源进行许可的分配,但是不能够随意删除日志;安全审计员的职责就是分析日志,发现所有用户的可疑行为,但是却不具备其它所有的系统权利。这样就好像给一个保险箱加了三把锁一样,仅仅拿到一把钥匙是没有办法获得保险箱里面的东西的。为了用户能够按照自己的意愿进行分权,主机入侵防御系统还提供了权限分配(task delegation)的接口,以供更加细化的配置,让普通的用户具有某些超级用户才能够执行的权利。经过权力分配和细化后,可以大幅度避免管理员的人为误操作,并且防止入侵者一旦获得一个账户的所有权后就能够横行无阻的状况发生。
   
    为了更加细致准确地跟踪系统上的活动,主机入侵防御系统提供了根据原始登录ID进行审计的功能。也就是说不论登录者后来通过su切换到哪一个登录ID号,在日志中始终以其原始的登录ID进行活动的跟踪和记录,而且入侵者即使获得了root的口令也无法对日志进行破坏。另外,主机入侵防御系统将ID的使用权限也作为一种资源进行管理,也就是说如果一个账号需要su到另外一个账号,必须经过主机入侵防御系统的授权,否则就不能成功。哪怕是root用户想要su到其它账户也是如此。这样就大大降低了通过切换ID实现的假冒攻击行为。
   
    主机入侵防御系统基于稳固的安全体系和全新的安全设计理念,具有稳固的运行特性和强大的安全性,为各种UNIX平台以及Windows服务器平台提供了极大的安全保障,并且同大型机的安全机制兼容。该系统是对关键服务器资源进行重点保护的重要安全工具,正在越来越受到用户的重视。
   
    当然,主机入侵防御系统提供的保护措施主要是集中在对服务器资源和行为的保护,不能替代所有的安全产品。防火墙、防病毒、网络入侵检测系统、VPN等都是对主机入侵防御系统的有益补充。只有将关键服务器的保护和整体的网络架构保护合理地结合在一起,才能够为我们的网络空间提供最为完善的保障。针对当前的病毒、蠕虫、入侵等种种威胁构成的混合型威胁,主机入侵防御系统无疑会给我们的关键资源提供更加主动的防御方式。           

                                                                                                                                         (浙江省公安厅 )