3.10. 类 Unix 系统的专用安全扩展

大量的研究和开发工作致力于扩展类 Unix 系统,以支持各种社区的安全需求。例如,一些类 Unix 系统已经扩展以支持美国军方对多级安全的需求。如果您正在开发软件,您应该尝试设计您的软件,使其可以在这些扩展中工作。

FreeBSD 有一个新的系统调用,jail(2)。 jail 系统调用支持将环境细分为多个虚拟机(在某种意义上,是“超级 chroot”);它最流行的用途是为互联网服务提供商环境提供虚拟机服务。在 jail 中,所有进程(即使是 root 拥有的进程)的请求范围都限制在 jail 内。当 FreeBSD 系统在全新安装后启动时,没有进程会在 jail 中。当一个进程被放入 jail 中时,它以及该进程创建的任何后代都将在该 jail 中。一旦进入 jail,对文件命名空间的访问将以 chroot(2) 的风格受到限制(典型的 chroot 逃逸路径被阻止),绑定网络资源的能力被限制为特定的 IP 地址,操作系統资源和执行特权操作的能力被大大削减,并且与其他进程交互的能力仅限于同一 jail 内的进程。请注意,每个 jail 都绑定到一个 IP 地址;jail 内的进程可能无法使用任何其他 IP 地址进行传出或传入连接。

Linux 中可用的一些扩展,例如 POSIX 功能和特殊的挂载时选项,已经在前面讨论过了。这里列举一些为 Linux 系统创建受限执行环境的努力;有很多不同的方法。美国国家安全局 (NSA) 开发了 Security-Enhanced Linux (Flask),它支持使用专门的语言定义安全策略,然后强制执行该策略。Medusa DS9 通过在内核级别支持用户空间授权服务器来扩展 Linux。LIDS 保护文件和进程,允许管理员“锁定”他们的系统。“基于规则集的访问控制”系统 RSBAC 基于 Abrams 和 LaPadula 的通用访问控制框架 (GFAC),并提供了一个灵活的访问控制系统,该系统基于多个内核模块。Subterfugue 是一个用于“观察和玩弄软件现实”的框架;它可以拦截系统调用并更改其参数和/或更改其返回值以实现沙箱、跟踪器等等;它在 Linux 2.4 下运行,无需任何更改(它不需要任何内核修改)。Janus 是一种安全工具,用于在受限执行环境中对不受信任的应用程序进行沙箱处理。有些人甚至使用 User-mode Linux(它实现了“Linux on Linux”)作为沙箱实现。由于有如此多不同的方法来实现更复杂的安全模型,Linus Torvalds 要求开发一种通用方法,以便可以插入不同的安全策略;有关此方面的更多信息,请参阅 http://mail.wirex.com/mailman/listinfo/linux-security-module

在各种类 Unix 系统上还有许多其他安全扩展,但这些确实超出了本文档的范围。