LCA 2009: 让你的 Linux 更安全


Russell Coker 并没有让他的电脑沉睡,他将两台伺服器,一台用来当作他的伺服器,另一台则为他的 Security Enhanced Linux “Play Machine”。

这台 Play Machine 开放给所有人登入,让他们试试看能不能破坏该电脑的安全。这台机器的 root 的密码是公开的 - 这是 Russell 活跃在 FOSS 社群的眾多方式之一,也是他另一个为力促其成为专案而得以不断改善的方法。

专案 Security Enhanced Linux 是从美国 National Security Agency 开始的,它结合 kernel patch 增加 security 的功能,以及加入 patch 至应用程式,让它们决定哪些 security domain 能够执行程序。

用 Russell 自已的说法 「例如 /bin/login 会根据组态档与安全性政策 (Security Policy) 资料库,选择使用者程序所使用的 domain。」

他对 SE Linux 的狂热乃是开始於参加 2001 Linux symposium in Ottawa ,听了 NSA Peter Loscocco 的演说之后。作为 Debian 开发人员,他觉得那应该成为分支套件的一部份,也认为那会花上他好几个月的时间来进行整合。

事实上他花了更多的时间,而且也一直持续对此事件保持关切。他不再只是对 SE Linux 专案提出纯贡献 - 从积极正面来看,他扩充并改良范例 policy 的组态、强化 run_init 与 spasswd 工具程式、开发 devfsd 模组以利管理 devfs 档案脉络 (file context)、完成 setfile 程式的改进,还有扩展 strace,以便追踪 SELinux 的 system call。(为了 SE Linux 与 Linux 的发展,他的日常工作的一些部份 - 像是 devfsd 模组与 spasswd 现在是停滞中的)

在线上提供一台 play machine,可以让 SE Linux 变得更好 - 诸多早已发现的组态错误,在 policy 设计时的当下,就不会被用在公开 root 存取的机器上。

「当然还是会发现一些常见的 Unix Code 议题,例如当 UID == 0,locate 程式不会检查权限,而当无法开啟 /etc/shadow 时,pam_unix.so 函式库亦不会啟动 unix_chkpwd 程式。 虽然这些罕见的小问题,影响的是未使用 SE Linux 的系统,」 Russel 接著说:「但 locate 的问题,是我的 play machine 上的使用者发现的。」

Russell 的 play machine 有助於开发更健全的 security policy;若任何人取得未被认可的 root 权限,进入 SE Linux 的机器存取,是无法作出任何伤害行为的,而且,它们试图破坏机器的所有行为,都会被一一纪录下来。

「这也促成了 SE Linux 社群的发起,#selinux IRC channel 最初亦是起源於我的 play machine」他如是说道。

在下周的 Australian national Linux conference ,Russell 将发表 SE Linux 发展现况的演说,将著重於下一版 Debian - Lenny 上,简略说明此开发的进程。

「SE Linux 将不会是 Lenny 的预设或标準安装部份,但它将拥有更好的整合、更多的功能。此次的讨论将从未来版本的 Debian 安装程式支援层级开始。」

只要某人决定要用,就能使用 script 执行设定,不必自已手动弄半天。这些 script 本身是一连串简单指令,所以 Russell 不担心有人会困在这裡头。

Russell 认为 SE Linux 能在 RedHat 社群的 Linux 分支套件 - Fedora,还有 Debian 裡运作无误,且无论是 GNOME 或是旧版 KDE 亦没有问题。若是 KDE 4 则仍有些问题待釐清。

除了这些以外,他亦将探讨两个类似的主题,由他的朋友 - 日本的开发人员 KaiGai Kohei 发表,KaiGai Kohei 被 Japan’s IT Promotion Agency 认可为 「优异的程式人员 」,他将於最后几分鐘退场。

演说有一部份会涉及安全性强化的 PostgreSQL ,将展现当下 SE Linux 对 PostgreSQL 资料库的掌控。因此这是指对系统有一致性的存取模组,SE Linux 亦提供相同种类的安全性,予网页服务的堆叠。

Russell 亦将切入 KaiGai 的演说,接手 LAPP/SELinux 的部份。LAPP 乃 Linux, Apache, Perl/Python 与 PostgreSQL 的缩写,与大家较为熟知的 LAMP (Linux, Apache, Perl/Python and MySQL)【译註】 - 已用於成千上万的网站架构有些微的不同。

【译註:LAMP 应为 Linux + Apache + MySQL + PHP,参考网站 http://lamphowto.com/】

LAPP/SE Linux 著重於:在 SE Linux 完整堆叠裡,皆使用相同强制存取控制的方式。kernel 控制档案存取、Apache 执行於相符於使用者的脉络 (contexts) 下,而 PostgreSQL 则使用 SE Linux 所支援建置於 Apache 执行绪脉络下的存取。

Russell 是 LCA 的常客,几乎参与了每一场研讨会 - 除了 2003 年在 Perth 举办的之外。他认为从一些演说中可以学到很多的东西、交换不同的意见,并透过他自已的演说提供资讯给社群。

他预计在不久的未来,啟动 Xen 伺服器的 SE Linux 训练。「或许我能让它及时赶上 LCA 的时程」

相关内容