LXC 容器作为沙盒环境

eXP*_*XPi 10 security selinux container sandbox lxc

我目前正在一个安全的沙箱环境中开始一个评估不受信任的程序(学生作业)的项目。主要思想是围绕 lxc-utils 为 GlassFish 和 Java 包装器创建一个 Web 应用程序来管理 LXC 容器。它将有一个等待程序的队列,一个 Java 包装器将维护固定数量(池)的 LXC 容器,为每个程序分配一个(未使用的)容器。

每个容器都应该使用 SELinux 来保护主机系统。

我的问题是:为沙箱环境创建这样的机制是个好主意,还是有更好的解决方案来解决这个问题?它应该轻巧且安全,以防止学生的创造力。

小智 7

您没有说明为什么选择 LXC,因为它不是最安全的虚拟化解决方案。我是 KVM/XEN 和 LXC 的重度用户,我可以说一件事,说到安全性,我从不使用 Linux 容器(无论是 LXC/OpenVZ/VServer)。使用 KVM/XEN 更容易(也更可靠)。

如果是关于性能或硬件要求,那么可以 - 您可以尝试使用 LXC,但有一些规则您应该遵循:

  • libvirt 确保在使用 SELinux 时严格限制容器(感谢 LXC_driver) - 不确定它是否只是 RHEL/Centos/Fedora 案例(我不经常使用 Ubuntu/Debian)https://www.redhat.com/archives /libvir-list/2012-January/msg01006.html - 所以使用 SELinux 是一个好主意(我认为在这种情况下它是“必须的”)
  • 设置严格的 cgroups 规则,这样您的客人就不会让您的主机冻结或影响其他容器
  • 我宁愿使用基于 LVM 的容器——它总是多一层“安全”
  • 考虑网络解决方案和架构。这些容器必须相互通信吗?

从阅读这个开始- 它已经很老了,但仍然 - 那里有很多知识。还有 - 满足用户命名空间

毕竟,再想一想 - 你真的有那么多时间来玩 LXC 安全吗?KVM 就这么简单...