Was macht systemd-nspawn immer noch "ungeeignet für sichere Container-Setups"?

21

Dies ist in der Manpage für systemd-nspawn angegeben

Beachten Sie, dass systemd-nspawn trotz dieser Sicherheitsvorkehrungen nicht für sichere Containerkonfigurationen geeignet ist. Viele der Sicherheitsmerkmale können umgangen werden und sind daher in erster Linie nützlich, um versehentliche Änderungen des Hostsystems durch den Container zu vermeiden. Die beabsichtigte Verwendung dieses Programms ist das Debuggen und Testen sowie das Erstellen von Paketen, Distributionen und Software für das Boot- und Systemmanagement.

Diese Frage wurde später auf der Mailingliste im Jahr 2011 gestellt , aber die Antwort scheint veraltet zu sein.

systemd-nspawn enthält Code, CLONE_NEWNETder --private-networkjetzt mit der Option ausgeführt werden kann. Dies scheint das AF_UNIXProblem mit dem privaten Namespace abzudecken , und ich schätze, das CAP_NET_RAWund die CAP_NET_BINDgenannten Probleme.

Welche Probleme bleiben zu diesem Zeitpunkt bestehen und was macht beispielsweise LXC zusätzlich zu dem, was systemd-nspawnderzeit möglich ist?

user239558
quelle
AF_UNIX wird halb isoliert mit CLONE_NEWNET: abstrakten Sockets - getrennt, dateisystembasiert - vereint (es sei denn, es gibt keine gemeinsamen Dateisysteme zwischen Host und Container). Dies erleichtert das Starten von X-Anwendungen, sofern das Netzwerk für eine bestimmte Anwendung gesperrt ist (da Xorg sowohl das abstrakte als auch das Dateisystem-UNIX-Socket öffnet).
Vi.

Antworten:

12

LXC ist ein bisschen besser, weil es Container als Benutzer ohne Berechtigung ausführen kann . Dies ist mit systemd-nspawn möglich, jedoch nur für Szenarien, in denen Sie nur einen Benutzer (anstelle mehrerer) benötigen. Dies kann in Containerszenarien für mehrere Prozesse schwierig oder weniger sicher sein. Wenn Sie wissen möchten, warum docker, lxc und systemd-nspawn von Natur aus keine soliden Sicherheitsmechanismen sind, lesen Sie Folgendes: https://opensource.com/business/14/7/docker-security-selinux . Grundsätzlich haben Container immer noch Zugriff auf den Kernel und jeder Kernel-Exploit erhält die Kontrolle über die gesamte Maschine. Auf einem monolithischen Kernel wie Linux sind Kernel-Exploits keine Seltenheit.

CameronNemo
quelle
3
Diese Antwort ist falsch. systemd-nspawn unterstützt das Löschen von Berechtigungen für einen anderen Benutzer: freedesktop.org/software/systemd/man/systemd-nspawn.html
David Timothy Strauss
Ich bin mir ziemlich sicher, dass nur die Konsole / Shell als nicht-privilegierter Benutzer ausgeführt wird, aber alles andere als root. Kannst du das untersuchen?
CameronNemo
1
Ok, ich nehme meine letzte Aussage zurück. Es gibt jedoch keine ordnungsgemäße Subuid- / Subgid-Behandlung, sondern nur einen Benutzer ohne Berechtigung pro Container.
CameronNemo
2
Es ist kein Sicherheitsproblem, dass nur ein nicht privilegierter Benutzer pro Container betroffen ist, anstatt die vollständige Subuid- / Subgid-Verarbeitung zu unterstützen. Es ist eine Funktionseinschränkung.
David Timothy Strauss
Ja ich weiß. Ich habe nur auf den Unterschied hingewiesen.
CameronNemo