15.1.概述

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

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

Jail 在几个方面改进了传统 chroot 环境的概念。在传统的 chroot 环境中,进程仅受其可以访问的文件系统部分的限制。其余的系统资源、系统用户、正在运行的进程和网络子系统由 chroot 进程和主机系统的进程共享。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 特权访问权限的不受信任的用户授予对主机环境的访问权限。