将程序安装程序到 chroot / jail 的最佳方法是什么?

将程序安装程序到 chroot / jail 的最佳方法是什么?

在基于 Debian 的系统上...

我已经使用类似于以下脚本的脚本创建了一个最小的 chroot/jailhttps://github.com/pmenhart/make_chroot_jail/blob/master/make_chroot_jail.sh目标是创建一个除了运行所需程序(出于安全考虑)之外基本上什么都不能做的 jail。我的问题是,一旦设置了 jail,将程序安装到 jail 中的最佳方法是什么?由于 jail 很小,没有 apt 之类的包管理器,也没有构建工具。

我是否必须将程序安装到普通帐户并将所有必需文件复制到 chroot 目录?如果是这样,我该如何跟踪所做的所有更改以了解我需要做什么?我可以轻松跟踪诸如 rkhunter 之类的小程序,但无法跟踪诸如 MySQL 之类的较大程序,因为要复制的文件和要修改的配置文件太多了。

或者,有没有办法将最小的包管理器(例如 apt)安装到监狱中,安装所需的程序,最后删除包管理器?

有没有我不知道的更好的方法可以做到这一点?

谢谢!

在有人提出其他建议之前:

  • 我知道维护多个 chroot 安装会带来额外的负担
  • 我知道它并没有像你希望的那样增加安全性,因为配置不当的 chroot 可能会被打破。容器可能是更好的选择。
  • 我知道有些程序已经内置了类似 chroot 的功能,但我想知道安装程序的通用方法。

答案1

  1. 设置 chroot jail 的方法有很多种。我个人见过 50 多种不同的脚本。所有 jail 都类似,但有大有小的差异,因此没有通用的方法可以在其中执行任何操作。

  2. chroot jails 在安装软件方面最常见的用途是从源代码安装所有内容。有时 chroot jails 专门用于从源代码安装软件,避免在本地机器上安装来自软件包的依赖项(例如 zlib、libpng 或其他常用库)。

  3. 不幸的是,许多不同的 chroot jail 脚本都有一个共同点,那就是它们没有任何“升级模式”,因此每次您想要升级基本系统软件包或 jail 内的软件时,都必须重新设置此 jail。这当然可以编写脚本,但这与正常的软件包升级不同。

  4. 搜索 OpenVZ 或 LXC 半虚拟化技术。它们都用于创建“容器”(具有共享内核的独立系统)。它们都基于 chroot 概念,但在内核中的许多其他层上增加了分离。

LXC 较新且更现代,但 OpenVZ 提供更好的安全隔离。在这两种系统中,您都可以安装几乎完整的系统,包括包管理器、包中的库等,因此您可以像在基本系统中一样正常安装和升级软件。

相关内容