使用最小的 LXC 容器作为高级且安全的 chroot 来隔离服务

kur*_*eko 3 linux security gentoo container

首先,我不是安全专家,我以前从未使用过 LXC。

我正在尝试尽可能地强化 Gentoo 强化服务器。为此,我正在考虑使用 LXC,也许与 KVM 结合使用,以尽可能隔离网络服务。

我阅读了 LXC unix 手册页,但对我来说 Linux 容器是如何设置的仍然很模糊。在互联网上查找更多信息,我只找到了有关在 Linux 容器中运行整个系统的文档,这不是我想要做的。

我想使用 LXC 的目的是在容器内仅运行一个应用程序,其中仅包含应用程序所需的严格的最小文件/资源​​。我想要一个容器内运行一个完整的系统,避免甚至有busybox的。

例如,我想隔离ntpd服务,据我所知能够同步系统时钟,我不能在VM中运行它。但是我可以在 . 中运行它chroot,或者我想我可以在 Linux 容器中运行它以获得更好的隔离和安全性。
为此,我必须:

  1. 确定在设置 chroot jail 时 ntpd 需要哪些文件。
  2. 这是我不知道该做什么以及如何做的地方:LXC 配置、模板、将我的文件放在哪里以设置容器等。
  3. 运行它 lxc-execute

有什么可能吗?构建、运行和管理这样一个容器的各个步骤是什么?

all*_*tic 5

从历史上看,LXC 有许多引人注目的安全问题,阻碍了它真正被隔离,但主线 Linux 内核中的基础设施增强已经缓解了大部分(如果不是全部)这些问题。

有关捆绑 LXC 的连续 Ubuntu 版本中观察到的安全问题/增强功能的概述,请参见此处

我发现这个Oracle Unbreakable Enterprise Kernel 文档对于解释如何创建应用程序级容器特别有用。

从文档:

应用程序容器不是使用模板脚本创建的。相反,应用程序容器会挂载主机的全部或部分根文件系统,以提供对应用程序所需的二进制文件和库的访问。您可以使用 lxc-execute 命令在容器中调用 lxc-init(/sbin/init 的简化版本)。lxc-init挂载/proc、/dev/shm、/dev/mqueue等任意需要的目录,执行指定的应用程序,然后等待执行完毕。当应用程序退出时,容器实例不复存在。