不要仅仅因为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运行的,假设这个系统还有一个未打补丁的内核漏洞,那将导致本地权限提升。