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


21

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

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

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

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

此时仍存在哪些问题,例如LXC除了systemd-nspawn当前可以做什么以外还做什么?


AF_UNIX与CLONE_NEWNET以下内容进行半隔离:抽象套接字-独立的,基于文件系统的-统一的(除非主机与容器之间没有共享的文件系统)。这使得启动X应用程序限制特定应用程序的网络变得很方便(因为Xorg同时打开了抽象套接字和文件系统UNIX套接字)。
六。

Answers:


12

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


3
这个答案是不正确的。systemd-nspawn支持向其他用户放弃特权:freedesktop.org/software/systemd/man/systemd-nspawn.html
David Timothy Strauss

我可以肯定,所有操作都是以非特权用户身份运行控制台/ shell,而其他所有操作均以root用户身份运行。你可以调查一下吗?
CameronNemo

1
好吧,我把我的最后一条话带回来。但是,它没有适当的subuid / subgid处理,每个容器只有一个非特权用户。
CameronNemo

2
每个容器只能下降到一个没有特权的用户,而不是支持完整的subuid / subgid处理,这不是安全问题。这是功能限制。
大卫·蒂莫西·斯特劳斯

是的,我知道。我只是指出了区别。
CameronNemo 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.