on it road .com

配置 chroot 监狱

1.要实现chroot jail并运行/bin/bash,在人工根目录(本例中为/home/oracle/jail)中创建bin目录,并将/bin/bash复制到该目录中:

$ mkdir /home/oracle/jail/bin
$ cp /bin/bash /home/oracle/jail/bin
  1. /bin/bash 命令动态链接到共享库。
    这些库也必须复制到 chroot jail 中。
    使用 ldd 命令确定 /bin/bash 命令需要哪些库:
# ldd /bin/bash
	linux-vdso.so.1 =>  (0x00007fff11bff000)
	libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003728800000)
	libdl.so.2 => /lib64/libdl.so.2 (0x0000003d56400000)
	libc.so.6 => /lib64/libc.so.6 (0x0000003d56800000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003d56000000)
  1. 将这些文件分别复制到人工根目录下的lib64 目录中。
    创建 lib64 目录并将共享库复制到此目录中:
$ mkdir /home/oracle/jail/lib64
$ cp /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/oracle/jail/lib64
  1. 现在所有需要的文件都在它们预期的位置,运行 chroot 命令(以 root 身份)会产生以下结果:
# chroot /home/oracle/jail
  1. 这次命令成功,/bin/bash程序执行。
    输入 pwd 打印当前目录显示 /,即使实际目录是 /home/oracle/jail:
# pwd
/

pwd 命令运行是因为它是一个 shell 内置命令。
运行任何其他命令都会失败,因为 bash 找不到该命令。
该过程假定它位于根目录中,并且不可见或者不了解层次结构中此目录之上的任何文件。
例如,运行 ls 命令失败:

# ls
bash: ls: command not found
  1. 使用exit 命令退出chroot jail。
# exit
exit
#
Linux chroot jail

顾名思义,chroot 操作会更改正在运行的进程及其子进程的明显根目录。
它允许我们使用/以外的根目录运行程序(进程)。
程序无法查看或者访问指定目录树之外的文件。

例如,我们可以运行一个程序并将其根目录指定为/home/user/jail。
在这种情况下,程序的根目录实际上是/home/user/jail。
该程序将不知道或者无法访问层次结构中此目录之上的任何文件。

这个人工根目录称为 chroot jail 。
其目的是限制潜在攻击者的目录访问。
chroot jail 锁定给定进程及其使用的任何用户 ID,以便用户只能看到该进程正在运行的目录。
对于该进程,它
看起来它是在根目录下运行的。

chroot jail 不打算:

  • 防止特权(root)用户故意篡改。

  • 用于阻止特权用户对系统设备的低级别访问。
    chroot root 用户仍然可以创建设备节点并在其上挂载文件系统。

要成功启动 chroot 进程,必须在 chroot 目录的预期位置填充所有必需的程序文件、配置文件、设备节点和共享库。

使用 chroot 实用程序

  1. 要使用 chroot jail,请使用以下命令(new_root 必须是现有目录):
# chroot new_root [command]
  1. new_root 目录成为人工根目录。
    chroot 更改为 new_root 并运行可选命令。
    如果没有指定命令作为参数,chroot 将更改为 new_root 并运行 SHELL 环境变量或者 /bin/sh 如果未设置 SHELL 的值。

  2. 例如,假设SHELL设置为/bin/bash,并且/home/user/jail目录存在,运行chroot命令结果如下:

# chroot /home/user/jail
chroot: failed to run command ‘/bin/bash’: No such file or directory
  1. /home/user/jail 目录的名称为 /。
    chroot 在这个 chroot jail 中找不到 /bin/bash 并返回错误消息。
    要实现 chroot jail,请在运行 chroot 命令之前创建新的根目录结构并将所有必需的文件复制到这个新的根目录中。
日期:2020-09-17 00:14:26 来源:oir作者:oir