Wo liegen die Sicherheitsgrenzen für LXC-Container?

8

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?

iCode
quelle
Sie wissen, dass Sie sich darüber Sorgen machen müssen, AppArmor wird sich darum kümmern.
rɑːdʒɑ

Antworten:

8

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-triggeroder in die meisten /sysDateien 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-profileFü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.

rɑːdʒɑ
quelle
Vielen Dank für Ihre Antwort. Wollen Sie damit sagen, dass es sicher ist, wenn ich AppArmor verwende?
iCode
@iCode, Yes appArmor wurde zum Schutz von Ubuntu-Anwendungen entwickelt, und LXC bietet auch hervorragende Unterstützung in Bezug auf die Sicherheit, wenn Sie AppArmor verwenden.
rɑːdʒɑ
AppArmor ist nicht alles, zum Beispiel habe ich festgestellt, dass dmesges von jedem Container aus aufgerufen werden kann (zumindest in der Standardkonfiguration). Ich fürchte, das ist nicht das einzige Sicherheitsrisiko ...
Daniel Alder