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:
sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/
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:
lxc.aa_profile = unconfined
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:
sudo apparmor_parser -r /etc/apparmor.d/lxc-containers
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.aa_profile = lxc-CN-profile
lxc-execute
gibt kein Apparmor-Profil ein, aber der Container, den es erzeugt, wird begrenzt.