由于系统管理是一项困难而又令人费解的任务, 因此人们开发了一系列强大的工具, 来让管理员的工作变得更加简单。 这些改进通常是让系统能够以更简单的方式安装、 配置, 并毫无问题地持续运转。 这其中, 许多管理员希望能够为系统正确地进行安全方面的配置, 使其能够用于真正的用途, 而阻止安全方面的风险。
FreeBSD 系统提供的一项用于改善安全的工具就是 jail。 jail 是在 FreeBSD 4.X 中由 Poul-Henning Kamp 引入的, 它在 FreeBSD 5.X 中又进行了一系列改进, 使得它成为了一个强大而灵活的系统。 目前仍然在对其进行持续的开发, 以提高其可用性、 性能和安全性。
BSD-类的操作系统从 4.2BSD 开始即提供了 chroot(8)。 chroot(2) 工具能够改变一组进程的根目录的位置, 从而建立一个与系统中其他部分相隔离的安全环境: 在 chroot 环境中的进程, 将无法访问其外的文件或其他资源。 正是由于这种能力, 即使攻击者攻破了某一个运行于 chroot 环境的服务, 也不能攻破整个系统。 chroot(8) 对于那些不需要很多灵活性或复杂的高级功能的简单应用而言相当好用。 另外, 在引入 chroot 概念的过程中, 曾经发现过许多跳出 chroot 环境的方法, 尽管这些问题在较新的 FreeBSD 版本中已经修正, 但很明显地, chroot(8) 并不是一项用于加固服务安全的理想解决方案。 因此, 必须实现一个新的子系统来解决这些问题。
这就是为什么要开发 jail 最主要的原因。
Jail 以多种方式改进了传统的 chroot(2) 环境概念。 在传统的 chroot(2) 环境中, 只限制了进程能够访问文件系统的哪些部分。 其他部分的系统资源 (例如系统用户、 正在运行的进程, 以及网络子系统) 是由 chroot 进程与宿主系统中的其他进程共享的。 jail 扩展了这个模型, 它不仅将文件系统的访问虚拟化, 而且还将用户、 FreeBSD 的网络子系统, 以及一些其他系统资源虚拟化。 关于这些精细控制以及调整 jail 环境访问能力的更具体的介绍, 可参见 第 16.5 节 “微调和管理”。
jail 具有以下四项特点:
目录子树 ── 进入 jail 的起点。 一旦进入了 jail, 进程就不再被允许访问这棵子树以外的对象。 传统上影响到最初 chroot(2) 设计的安全问题不会影响 FreeBSD jail。
主机名 ── 将用于 jail 的主机名。 jail 主要用于存放网络服务, 因此在每个 mail 上能够标注一个有意义的主机名, 能够在很大程度上简化系统管理员的工作。
IP 地址 ── 这个地址是指定给 jail 的, 在 jail 的生命周期内都无法改变。 通常 jail 的 IP 地址是某一个网络接口上的别名地址, 但这并不是必需的。
命令 ── 准备在 jail 中执行的可执行文件的完整路径名。 这个命令是相对于 jail 环境的根目录的, 随 jail 环境的类型不同, 可能会有很多不同之处。
除了这些之外, jail 也可以拥有自己的用户和自己的
root
用户。 自然, 这里的 root
用户的权力会受限于 jail 环境, 并且, 从宿主系统的观点看来,
jail root
用户并不是一个无所不能的用户。
此外, jail 中的 root
用户不能执行除了其对应 jail(8)
环境之外的系统中的一些关键操作。 关于
root
用户的能力和限制, 在后面的 第 16.5 节 “微调和管理” 中将加以介绍。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.