17.1.概述

由于系统管理是一项艰巨的任务,因此已经开发出许多工具来让管理员的生活更轻松。这些工具通常可以拓展系统的安装、配置和维护方式。jail 就是可以用来拓展 FreeBSD 系统安全性的工具之一,jail 从 FreeBSD 4.X 开始可用,并且在实用性、性能、可靠性和安全性方面持续增强。

jail 建立在 chroot(2) 概念的基础上,该概念用于更改一组进程的根目录。这将创建一个与系统其余部分分开的安全环境。在 chroot 环境中创建的进程无法访问其外部的文件或资源。因此,破坏在 chroot 环境中运行的服务不会让攻击者破坏整个系统。但是,chroot 存在几个限制。它适用于不需要太多灵活性或复杂高级功能的简单任务。随着时间的流逝,已经发现了许多方法可以逃逸出 chroot 环境,使其不再是确保服务安全的理想解决方案。

jail 在几个方面改进了传统 chroot 环境的模型。在传统的 chroot 环境中,进程仅受其可以访问的文件系统部分的限制。其余的系统资源、系统用户、正在运行的进程和网络子系统由 chroot 进程和主机系统的进程共享。jail 通过虚拟化对文件系统、用户集和网络子系统的访问来扩展此模型。更细粒度的控件可用于调整对 jail 环境的访问。jail 可以被视为一种系统级的虚拟化。

jail 有四个要素:

  • 目录子树:进入 jail 的起点目录。一旦进入 jail,任何一个进程都不能逃出这个子树。

  • 主机名:将由 jail 使用。

  • IP 地址:分配给 jail。jail 的 IP 地址通常是现有网络接口的别名地址。

  • 命令:要在 jail 内运行的可执行文件的路径名。该路径相对于 jail 环境的根目录。

jail 有自己的 root 账号和自己的用户,这些 root 账号仅限于 jail 环境。jail 的用户在关联的 jail 环境之外对系统执行操作是被禁止的。

本章概述了用于管理 FreeBSD jail 的术语和命令。对于系统管理员和高级用户来说 Jail 都是一个强大的工具。

读完本章,你就会知道:

  • 什么是 jail,它在 FreeBSD 中的可能性用处。

  • 如何建立、启动和停止 jail。

  • jail 管理的基础知识,包括 Jail 内部与外部。

重要

jail 是一个强大的工具,但它不是安全问题的万金油。虽然 jail 内的进程不可能自行溢出,但有几种方法可以让 jail 外的非特权用户与 jail 内的特权用户串通,以获得主机环境中的高权限。

通过阻止主机环境中的非特权用户访问 jail 根目录,可以缓解大多数此类攻击。一般地,不应向具有 jail 访问权限的不受信的用户授予主机环境的访问权限。