Meine Frage betrifft die Sicherheit eines LXC-Containers.
Wenn ich mehrere Container auf meiner Box ausführe und Benutzern einen separaten SSH-Zugriff auf ihren eigenen Container gewähren kann, kann sich einer dieser Container in die anderen Container auf dieser Box oder sogar auf den Host-Computer hacken?
Wo liegen die Sicherheitsgrenzen für LXC-Container?
Antworten:
Wie ich über LXC gesehen habe, speichert es Containerinformationen und (mit dem Standard-Sicherungsspeicher) Root-Dateisysteme unter / var / lib / lxc. Vorlagen zur Containererstellung speichern in der Regel auch zwischengespeicherte Verteilungsinformationen unter / var / cache / lxc.
Daher ist der Zugriff auf das Root-Dateisystem im Allgemeinen nur für Administratoren zulässig, es sei denn, beim Erstellen liegt ein Missbrauch oder eine falsche Konfiguration der Benutzerprofile vor.
Möglicherweise sind Ubuntu-Entwickler bereits an diesem Punkt angelangt und haben mithilfe von AppArmor eine sichere Lösung bereitgestellt.
LXC wird mit einem Apparmor-Profil geliefert, das den Host vor versehentlichem Missbrauch von Berechtigungen im Container schützen soll. Beispielsweise kann der Container nicht in
/proc/sysrq-trigger
oder in die meisten/sys
Dateien schreiben .Das Profil usr.bin.lxc-start wird durch Ausführen von lxc-start eingegeben. Dieses Profil verhindert hauptsächlich, dass lxc-start neue Dateisysteme außerhalb des Root-Dateisystems des Containers bereitstellt. Vor dem Ausführen der Init des Containers fordert LXC einen Wechsel zum Profil des Containers an. Standardmäßig ist dieses Profil die in definierte lxc-container-default-Richtlinie
/etc/apparmor.d/lxc/lxc-default
. Dieses Profil verhindert, dass der Container auf viele gefährliche Pfade zugreift und die meisten Dateisysteme bereitstellt.Wenn Sie feststellen, dass lxc-start aufgrund eines legitimen Zugriffs fehlschlägt, der durch die Apparmor-Richtlinie verweigert wird, können Sie das lxc-start-Profil folgendermaßen deaktivieren:
Dadurch wird lxc-start uneingeschränkt ausgeführt, der Container selbst wird jedoch weiterhin eingeschränkt. Wenn Sie auch die Beschränkung des Containers deaktivieren möchten
usr.bin.lxc-start
, müssen Sie zusätzlich zum Deaktivieren des Profils Folgendes hinzufügen:in die Konfigurationsdatei des Containers. Wenn Sie einen Container in einem benutzerdefinierten Profil ausführen möchten, können Sie unter ein neues Profil erstellen
/etc/apparmor.d/lxc/
. Sein Name muss mit lxc- beginnen, damit lxc-start zu diesem Profil wechseln kann. Laden Sie die Richtlinie nach dem Erstellen mit:Das Profil wird nach einem Neustart automatisch geladen, da es von der Datei bezogen wird
/etc/apparmor.d/lxc-containers
.lxc-CN-profile
Fügen Sie der Konfigurationsdatei die folgende Zeile hinzu , damit Container CN dies neu verwendet:lxc-execute
gibt kein Apparmor-Profil ein, aber der Container, den es erzeugt, wird begrenzt.quelle
dmesg
es von jedem Container aus aufgerufen werden kann (zumindest in der Standardkonfiguration). Ich fürchte, das ist nicht das einzige Sicherheitsrisiko ...