如何设置 Linux Chroot Jails如何设置 Linux Chroot Jails如何设置 Linux Chroot Jails如何设置 Linux Chroot Jails
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何设置 Linux Chroot Jails

发表 admin at 2025年2月28日
类别
  • 未分类
标签

尤其是那些致力于关键服务的 Linux 系统需要专家级的知识来配合核心安全措施。

不幸的是,即使采取了关键的安全措施,安全漏洞仍然会进入安全系统。管理和保护系统的一种方法是限制攻击发生后可能造成的损害。

在本教程中,我们将讨论使用 chroot Jail 来管理遭受攻击时系统损坏的过程。我们将了解如何使用虚假 root 权限将进程和子进程隔离到特定环境。这样做会将进程限制为特定目录并拒绝对其他系统区域的访问。

chroot监狱简介

chroot 监狱是一种使用虚假 root 权限将进程及其子进程与主系统隔离的方法。

如前所述,使用假根权限隔离特定进程可以限制恶意攻击时造成的损害。 Chroot 服务仅限于其目录中的目录和文件,并且在服务重新启动时不持久。

为什么要使用 chroot 监狱

chroot监狱的主要目的是作为一种安全措施。通过从实时媒体安装设备来恢复丢失的密码时,Chroot 也很有用。

设置 chroot Jail 有多种优点和缺点。这些包括:

优点

  • 限制访问:在安全受到损害的情况下,唯一受损的目录是 chroot 监狱内的目录。

  • 命令限制:用户或进程受到监狱中允许的命令的限制。

缺点

  • 设置起来可能很困难。

  • 它需要大量工作 - 如果您需要比默认允许的命令更多的命令,则必须手动包含它。

如何创建一个基本的 Chroot Jail

在此过程中,我们将创建一个基本的 chroot 监狱,其中包含仅限于该文件夹的 3 个命令。这将有助于说明如何创建监狱并分配各种命令。

首先创建一个主文件夹。你可以把这个文件夹想象成主系统中的/文件夹。文件夹的名称可以是任何名称。在我们的例子中,我们称之为 /chrootjail

sudo mkdir /chrootjail

我们将使用此目录作为假根目录,其中包含我们将分配给它的命令。对于我们将使用的命令,我们将需要 bin 目录(包含命令可执行文件)和目录(包含命令的配置文件)等。

在 /chrootjail 文件夹内,创建这两个文件夹:

sudo mkdir /chrootjail/{etc,bin}

下一步是为我们想要包含在监狱中的命令创建动态链接库的目录。对于本示例,我们将使用 bash、ls 和 grep 命令。

使用ldd命令列出这些命令的依赖关系,如下所示:

sudo ldd /bin/bash /bin/ls /bin/grep

如果您不在 bin 文件夹内,则需要传递要使用的命令的完整路径。例如,ldd /bin/bash 或 ldd /bin/grep

从上面的 ldd 输出中,我们需要 lib64 和 /lib/x86_64-linux-gnu 目录。在监狱目录中,创建这些文件夹。

sudo mkdir -p /chrootjail{lib/x86_64-linux-gnu, lib64}

创建动态库目录后,我们可以使用树列出它们,如下所示:

随着我们的进展,您将开始清楚地了解 chroot 监狱的含义。

我们正在创建一个类似于Linux系统的普通根目录的环境。不同的是,在这个环境中,只允许特定的命令,并且访问受到限制。

现在我们已经创建了垃圾箱。等等,lib和lib64,我们可以在各自的目录中添加所需的文件。

让我们从二进制文件开始。

sudo cp /bin/bash /chrootjail/bin && sudo cp /bin/ls /chrootjail/bin && sudo cp /bin/grep /chrootjail/bin

复制了我们需要的命令的二进制文件后,我们需要每个命令的库。您可以使用 ldd 命令查看要复制的文件。

让我们从 bash 开始。对于 bash,我们需要以下库:

/lib/x86_64-linux-gnu/libtinfo.so.6
/lib/x86_64-linux-gnu/libdl.so.2
/lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2

我们可以使用一个简单的for循环将所有库中的每个库复制到/chrootjail/lib/x86_64-linux-gnu,而不是一一复制所有这些文件

让我们对 ls 和 grep 命令重复此过程:

对于 ls 命令:

对于 grep 命令:

接下来,在 lib64 目录中,我们有一个跨所有二进制文件的共享库。我们可以使用简单的 cp 命令简单地复制它:

接下来,让我们编辑主 bash 登录文件(位于 Debian 中的 /etc/bash.bashrc 中),以便我们可以根据自己的喜好调整 bash 提示符。使用简单的 echo 和 tee 命令,如下所示:

sudo echo 'PS1="CHROOTJAIL #"' | sudo tee /chrootjail/etc/bash.bashrc

完成上述所有步骤后,我们可以使用 chroot 命令登录监狱环境,如图所示。

sudo chroot /chrootjail /bin/bash

您将获得 root 权限,提示符类似于上面 echo 和 tee 命令中创建的提示符。

登录后,您将看到您只能访问创建监狱时包含的命令。如果您需要更多命令,则必须手动添加它们。

注意:由于您已包含 bash shell,因此您将可以访问所有 bash 内置命令。这允许您使用 exit 命令退出监狱。

结论

本教程介绍了 chroot Jail 是什么以及我们如何使用它来创建与主系统隔离的环境。您可以使用指南中讨论的技术为关键服务创建隔离环境。

为了练习您所学到的知识,请尝试创建一个 apache2 监狱。

©2015-2025 Norria support@norria.com