it-swarm.com.de

Docker führt Containerprozesse als Root aus - sollte ich mir Sorgen machen?

Ich verwende ein (QNAP) NAS mit Docker-Funktionalität (" Containerstation "). Ich dachte, es wäre viel sicherer, Apps über Container anstelle von Apps von zu installieren das Geschäft (oder Geschäfte von Drittanbietern).

Viele Pakete sind in ihrem offiziellen Store veraltet und QNAP führt alle Programme und Apps als root/admin (sogar als Webserver) aus. Daher dachte ich, Docker wäre eine Lösung.

Jetzt habe ich einige Docker-Instanzen bereitgestellt und ihre Prozesse scheinen auch als root/admin ausgeführt zu werden.

(enter image description here

Was mich denken lässt: Ist es ein falsches Sicherheitsgefühl, das ich in diesem Moment habe? Oder ist die Verwendung der Docker-Container viel sicherer als die "normale" Wurzel?

9
Critical joe

Ich gehe davon aus, dass Sie sich Sorgen über containerisierte Anwendungen machen, die als Root ausgeführt werden.

wurzel im Behälter ist ein Risiko. Es interagiert immer noch mit dem Kernel als Root. Und wenn es einer Anwendung gelingt, aus dem Container auszubrechen, verfügt sie über Root-Rechte auf dem Host.

Root im Container hat jedoch Funktionen im Vergleich zu root auf dem Host eingeschränkt. Z.B. Es verfügt nicht über die für mount erforderliche Funktion SYS_ADMIN. Vermeiden Sie jedoch nach Möglichkeit das Wurzeln im Behälter, um die Risiken zu minimieren.

Wenn Ihre containerisierten Anwendungen keine Root-Berechtigungen benötigen, können Sie Container mit einem nicht privilegierten Benutzer ausführen. Am einfachsten ist es, die Option --user UID:GID In docker run Anzugeben.

Ich gehe jedoch davon aus, dass Sie Root-Rechte für Ihre containerisierten Anwendungen benötigen. Docker bietet Benutzernamensraum , um dies zu beheben.

Ich gebe hier kein Beispiel-Setup an, da ich mit dem Namespace von Benutzern nicht wirklich vertraut bin. Ich habe es einmal eingerichtet und kann bestätigen, dass es funktioniert. Ich empfehle, die Dokumentation zu lesen: https://docs.docker.com/engine/security/userns-remap/

Kurz gesagt: Das Benutzer-Namespace-Setup führt einen "gefälschten" Root-Benutzer in einem Container aus, der auf dem Host einem nicht privilegierten Benutzer zugeordnet ist. Wenn die Anwendung ausbricht, verfügt sie nicht über Root-Rechte auf dem Host.


Abgesehen davon können Sie die Containerfunktionen reduzieren, um die Containersicherheit zu verbessern. Verwenden Sie die Option --cap-drop=xyz Und lassen Sie alles fallen, was Ihr Container nicht benötigt. Oder noch besser, verwenden Sie --cap-drop=ALL Und fügen Sie nur Funktionen hinzu, die mit z. --cap-add=CHOWN. Schauen Sie sich https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities an

Eine weitere Option zur Verbesserung der Containersicherheit ist --security-opt=no-new-privileges.

8
mviereck