疯狂小企鹅 看Linux平台未来的安全领域

不要仅仅因为Linux比其他操作系统更安全就认为你的Linux系统是安全的,开发人员和发行商将来能为系统管理员提供什么帮助呢?

你知道我已经写这个专栏有五年的时间了吗?在这五年之中都发生了些什么呢,我们看到Linux的竞争者已经接受了它,而其Linux已经可以作为一个桌面平台。

在Linux安全领域,也有值得注意的进展,Linux的防火墙现在已经非常成熟,大量的嵌入式防火墙设备都基于它,与安全无关的设备也大量地采用了Linux,Linux支持令人吃惊的数量众多的安全工具,使得它称为安全审计员和安全顾问最喜爱的系统,此外,Linux已经形成了基于角色的访问控制操作系统,最著名的就是NSA的SELinux。

但是Linux安全的未来是怎么养的呢?我已经写了许多有关Linux安全的现状和过去,但是还没有写过有关未来的东西,这个月,我将我想到的Linux安全将走向何方以及它应该走向何方做一下总结。

现在有什么错误吗?

近来显示大量的人开始关注Linux的安全并没有比微软的windows操作系统安全得多,在开始交火讨论之前,让我们先解释一下这个观点,首先,作为个人来说,我认为Linux是比windows更安全的,我已经在这个专栏的文章中反复重复过,用户在Linux下比在windows下更容易控制他们的系统。

问题是Linux用户,与windows用户类似,倾向于将他们的精力集中在让系统做他们想让系统做的事情上,他们太信任系统内置或默认的安全设置,那么,当不可避免的软件bug出现时,那些bug的影响趋于更广泛,比起预防来说要做的工作就更多了。

例如:如果我们运行BINDv9提供名称解析服务,将花一些工作和研究才能使其工作起来,要将其放在一个chroot环境中需要更多的努力,chroot可以将named进程放在文件系统的一个子集中运行,因此,当一个BIND漏洞被发现,大多数BIND用户可能都经历过没有放在chroot环境的痛苦,如果运行的是微软的名称解析服务—它没有BIND那么多的安全特征,那可能痛苦指数是一样的。

所有这一切都是要简单地告诉你大部分Linux安全特征和功能并没有让Linux用户受益,结果是,至少按照我朋友所说的进行专业的渗透测试,攻破你普通的RedHat企业版并不比普通的windows2003系统困难。

这是不幸的也是让人非常吃惊的,它的代码是完全透明的,Linux仍然有类似的软件bug,一般来说和windows的数量和频率几乎一样。和windows一样,Linux是由成百上千的人开发出来的一大堆复杂的代码,代码越多,bug可能就会越多,不是吗?

我最近接受SearchSecurity.com采访时谈到了一篇关于微软研究基金指导的安全革新文章,研究结果表明windows比Linux更安全,结论主要基于常见安全bug和发行补丁的平均时间,我相信我是正确地评论了研究结果,不考虑Linux的其他安全优势,如定制能力和软件包的选择,换句话说,我感觉这个研究更多的是比较默认安装情景,而不考虑每个操作系统被它的用户进行安全加固的因素。

但是我考虑得更多,我更担心或许一个平台的安全隐患是不能统计的,除非大多数系统运行的平台实际上触发了隐患,严格来说这不是一个终端用户行为的作用,我也不会指责系统管理员,因为我在后面会详述,我想Linux开发人员和发行商必需继续想出让安全特征更普通、透明和更容易配置和使用的方法,顺便说一下,因为我正在比较Linux和windows,公平起见我应该指出windows也有许多安全特征,但用户也很少使用它们。

好,Linux和windwos在默认情况下它们都不安全,在软件bug和安全补丁两个都不相上下。

两个操作系统都是使用简单的任意访问控制模式来进行安全设置,在这个模式下,一个超级用户账号—在Linux下是root,在windows下是Administrator—拥有控制全部系统的权力,包括其他用户的文件,在这两个操作系统中,组成员可以被用来创建不同等级的访问,比如说,root可以进行多种授权,实际上,在大多数系统上你不得不作为特权用户登陆或临时变成那个用户为了完成重要的事情。

结果,任何用特权用户运行的进程能完全控制Linux或windwos系统,但是,我是作为非特权用户登陆配置我重要的后台进程的,这些后台进程出现了bug是不会影响到整个系统的。但是其他软件的bug可能使得它从一个非root进程升级它的权限,例如:假设你已经获得了一个运行Apache的web服务器,一天一个攻击者控制攻击程序攻击一个没打补丁的Apache缓冲区溢出漏洞,结果是攻击者在你的服务器上获得了一个shell会话,从这一点来说,攻击者正作为www运行,因为Apache是作为www运行的,假设这个系统还有一个未打补丁的内核漏洞,那将导致本地权限提升。

系统管理员可能已经知道了这个漏洞,但是补丁还没有出来,毕竟,严格地说是一个本地漏洞,除你之外没有人在这个系统上有shell权限,谁想在给内核打补丁后不得不重新启动呢?但是现在一个远程攻击者有了一个本地shell访问权限,如果他成功地利用了这个内核漏洞,他就是root了,这就是常见的入侵场景,但是使用了root-takes-all安全模块后不用再担心这个了。

这就是Linux安全的现状,保护Linux需要我们花费相当多的努力利用复杂的安全特征,这些复杂的特征默认情况下往往没有启用,要保持所有补丁都是最新的。我们在一个好的公司里:大多数使用现代操作系统它们拥有相同的局限和挑战。

强制访问控制

我已经提到在Linux、UNIX和windows上的访问控制或文件权限是任意的,这就是一个弱的安全模块,那么,SELinux怎么养呢?它使用基于角色的访问控制(RBAC)和类型增强(TE),它们两个都是强制访问控制的实例,是的,的确,它就是这样。但是我担心这或许不是Linux安全的未来,原因是SELinux不是当前Linux安全的重要组成部分。

RBAC限制用户的行为和对系统资源的访问,基于仔细定义的规则,这些规则比常见的UNIX组机制相似但更深远,类似地,类型增强限制进程的活动,基于它们预先定义的操作域,RBAC和TE对网络的影响是创建将用户和进程操作分开的竖井(我的术语),严格地限制竖井之间的交互。

这是一个非常优雅的有效的安全模型,但是,对于大多数人们来说,RBAC、TE和其他强制访问控制太复杂,很难管理。大多数人看来,SELinux和类似的操作系统命中注定只能用于某些特定领域:操作系统对于需要它的人来说非常有用但注定不能被广泛接受。不管是赞美SELinux的安全架构还是对RBAC原理的迷恋,我认为强制访问控制本身并不是Linux安全的革命。

底层管理程序和虚拟机

如果RBAC和TE事实证明太难以使用不能很好地在操作系统层区分安全破坏,底层管理程序和虚拟机(vm)可能在一个更高层次实现这个目标,我们已经熟悉虚拟机处于两个不同的上下文中:运行时虚拟环境(就象那些使用java的程序)和虚拟平台(如Vmware、plex86和VirtualPC,它运行你在一个虚拟的硬件环境中运行整个操作系统)。

java虚拟机被设计成有特殊的安全特征,最值得注意的就是java沙箱,通常,java安全来自于java小程序运行时与真实的操作系统资源是隔开的,每一个事情都是通过java虚拟机完成的,除了一个好的安全模型之外,对于程序员和最终用户在使用上也相对简单安全些,正是因为这些原因java已经受到普遍应用。

底层管理程序隔离运行在相同硬件上的虚拟机,限制它们交互和防止安全破坏,IBM已经为底层管理程序创建了一个叫做sHype的安全架构,一个开源的底层管理程序/虚拟机项目—叫做Xen—到现在也是可用的了。

底层管理程序的目的是为了防止一个虚拟机与其他运行在同一硬件上的虚拟机发生冲突,例如:独占共享资源,有一些智能管理系统在这个层次已经做得很强大了,或许还有一些潜在的隐患,至少,增加了传统的入侵检测系统(IDS)检查系统泄密的复杂性。

强制访问控制和底层管理程序/虚拟机不是相互排斥的,一方面,我的主张是,强化朋友和伙伴对安全分析的重视,底层管理程序比MAC在Linux安全未来的发展更具有潜力,但是另一方面,这两者可以结合起来使用,设想一下一个大型的、强大的服务器系统运行几个由底层管理程序控制的虚拟机的情景,一个VM能运行在一个通用的操作系统上,如Linux,提供web服务,另一个VM为敏感信息提供数据库服务,它们都能运行在一个基于MAC的操作系统上,如SELinux,两个VM都能从强制安全控制受益,使用SELinux能提供一层额外的安全保护。

基于异常的入侵检测和防病毒系统

如MAC和底层管理程序目前已经生根发芽了,但是将来可能还会出现更大的影响力的技术:如基于异常的入侵检测系统。基于不规则的IDS很简单:它包括创建一个正常网络或系统活动的基线,以及在任何突发意外或有反常活动被检查到时发送警告。

基于特征的系统的致命弱点是如果攻击方式是最新的,那么在你的IDS的特征数据库中就要有与之对应的特征,如果没有就检测不到。

使用基于异常的IDS,与之相反,任何新的攻击方式只要不是正常行为都能被检查到,IDS管理员必须训练和周期地重新训练IDS系统,目的是创建一个正常行为的基线,这会导致一段时间内频繁地出现虚报现象,直到这个基线被调试好为止。

1999年我出席了由Marcus Ranum主持的一个讲座,他提到了基于异常的系统是IDS未来的发展方向,象这样的产品已经可用,如来自Lancope和Arbor Network的产品,但是我仍然希望有人能想出如何才能开发出便宜的易用的东西,这可能导致一类网络底层管理程序增加同样的智能到网络上,无论是虚拟还是真实机器的构成,底层管理需都要借用虚拟平台。

顺便说一下,病毒扫描程序也需要从异常检测技术(如IDS一样)受益,这个观点现在已经被大多数病毒扫描程序证实,它们主要依赖于病毒特征的匹配,尽管如此还是要遭受大量的病毒/木马/蠕虫的爆发,目前基于病毒特征匹配的杀毒工具很明显基本上没什么效果了。

结论

前面这些就是我想到的Linux安全的未来,同时,继续保持使用这个专栏中提到的技术:防火墙、病毒扫描程序、自动补丁/升级工具、VPN和特殊应用程序安全控制如chroot以及审核跟踪。

那么,再见了,本专栏的文章全部结束,我将集中精力在其他新鲜事物上,我将继续我安全编辑的角色,将一如既往地支持Linux journal,给大家带来一些安全领域的内容。

相关推荐