是什么让 systemd-nspawn 仍然“不适合安全容器设置”?

use*_*558 24 security systemd lxc

这在systemd-nspawn的手册页中有说明

请注意,即使采取了这些安全预防措施,systemd-nspawn 也不适合安全容器设置。许多安全功能可能会被规避,因此主要用于避免容器对主机系统的意外更改。该程序的预期用途是调试和测试以及构建与引导和系统管理相关的软件包、发行版和软件。

这个问题随后在 2011 年的邮件列表中被问到,但答案似乎已经过时。

systemd-nspawn 包含现在CLONE_NEWNET使用该--private-network选项执行的代码。这似乎涵盖了私有AF_UNIX命名空间问题,我猜提到了CAP_NET_RAWCAP_NET_BIND问题。

在这一点上还有什么问题,例如 LXC 除了systemd-nspawn目前可以做什么之外还能做什么?

Cam*_*emo 12

LXC 好一点,因为它可以作为非特权用户运行容器。这对于 systemd-nspawn 是可能的,但仅适用于您只需要一个用户(而不是多个)的场景,这对于容器场景中的多进程来说可能很困难或不太安全。如果你想知道为什么 docker、lxc 和 systemd-nspawn 本质上不是一个可靠的安全机制,请阅读:https ://opensource.com/business/14/7/docker-security-selinux 。基本上,容器仍然可以访问内核,任何内核漏洞都可以控制整个机器。在像 Linux 这样的单片内核上,内核漏洞并不少见。

  • 这个答案是不正确的。systemd-nspawn 支持删除不同用户的权限:http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html (3认同)
  • 每个容器只能下降到一个非特权用户而不是支持完整的 subuid/subgid 处理不是安全问题。这是一个功能限制。 (3认同)