SE Linux——开源领域的一大成功案例

我刚刚读到一篇关于2007年SE Linux十大新闻的精彩总结,这提醒我,我应该向世界发布一篇关于 SE Linux 项目的惊人愿景和成就的博文。

SE Linux 的历史始于美国国家安全局,那里的研究人员越来越沮丧,因为现代计算环境中存在缺陷的安全假设导致了不可避免的失败。他们发表的论文提出了两个强有力的见解:计算机安全从根本上依赖于(操作系统)系统级安全,而系统级安全则依赖于针对强大的安全策略检查每个系统级交互。原则上听起来很简单,但实际上如何运作呢?

主流操作系统的计算机安全名义设计一直是糖果棒模型:外硬内软。事实上,“root 漏洞”一词指的是这样一种情况,即一旦有人弄清楚如何在系统(Windows 或 Unix)上成为超级用户,他们就可以以任何他们想要的方式破坏系统。“远程 root 漏洞”是最可怕的:这意味着可以通过互联网登录来接管一台机器。有人估计,高达 1 亿台 PC 已经以这种方式被入侵,并且是庞大且不断增长的僵尸网络的一部分,等待被召唤参与大规模的网络攻击。到目前为止,我们可以得到的主要安慰是,僵尸网络霸主之间的竞争将任何一个此类网络的规模限制在每次大约 100 万到 150 万台 PC。显然,一个授予攻击者无限访问权限的单点故障不是一个非常强大的安全模型。

SE Linux 模型控制着每个系统级接口,以至于可以安全地(正如 Russell Coker 所证明的那样)给予随机的互联网攻击者远程 root 访问权限来测试机器。在两年多的时间里(整个实验期间),即使拥有 root 访问权限,也没有人能够破解 Russell 的 SE Linux 机器。

SE Linux 的挑战,对于不熟悉开源的人来说似乎是不可能的,是如何可能不仅为大量(但数量有限)的系统级服务创建强制性安全策略基础设施,而且还如何使潜在无限数量的应用程序符合如此复杂的策略。在早期,这并不容易:像 Apache Web 服务器 这样的主流应用程序以 POSIX 标准允许的方式使用系统服务,但从安全角度来看并不安全。Apache 首次移植到 SE Linux 时,显示了数百个权限违规。几个月来,每天都有关于 SE Linux 拒绝 Apache 尝试访问系统级资源或接口的错误报告。

但是,经过一年的努力,Apache 以及大约十几个其他基本互联网服务(bind、ftp、smtp、nfs 等)已被驯服。通过连续发布,越来越多低级服务,然后是更高级别的服务被确认为 SE Linux 的强制访问控制。而今天,作为 Red Hat 的 企业 Linux 一部分发布的每个应用程序现在都具有 SE Linux 配置文件,总共超过 1500 个!

但这并不是商业产品的广告。它是对开源模型如何允许多方协作的解释,看看一个团队的辛勤工作是如何完成的,并将其应用于自己工作的挑战,从而成功地完成了 5 年前被广泛认为不可能的事情。今天,正如 SE Linux 社区的第一大新闻所示,SE Linux 面临的最大挑战是克服 SE Linux 应该被禁用的神话。我想这与早期飞行员试图向甚至拒绝接受自己亲眼所见证据的观众证明他们的重于空气的机器实际上会飞的挑战没有什么不同。

我祝贺 SE Linux 团队如此令人信服地展示了开源协作的好处。并对我的读者说:启用 SE Linux,减少对零日攻击的担忧