docker ohne Paßwort -> chgrp + setgid eine sichere Lösung?

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

docker ohne Paßwort -> chgrp + setgid eine sichere Lösung?

Beitrag von MartinV » 19.02.2017 00:21:28

Hallo!

Ich nutze oft docker, um wine in einer Sandbox laufen zulassen.
Nervig dabei: Ich muß jedesmal mein root Paßwort eingeben.
Als Lösung wird im Netz oft genannt, man könne den Benutzer der Gruppe docker zuordnen, dann braucht man kein Paßwort mehr, mit dem Nachteil, daß der Benutzer damit faktisch root-Rechte bekommt. :roll:
Nun habe ich testweise das docker-binary der Gruppe docker gegeben und das setgid Bit gesetzt:

Code: Alles auswählen

chgrp docker /usr/bin/docker 
chmod g+s /usr/bin/docker
Jetzt kann ich docker starten, ohne das root-Paßwort einzugeben und ohne Mitglied der Gruppe docker zu sein.
Ist das eine sichere Lösung? (Ich weiß, daß es auch mit /etc/sudoers möglich ist, will ich an dieser Stelle aber nicht.)
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: docker ohne root -> setgid eine sichere Lösung?

Beitrag von breakthewall » 19.02.2017 03:24:14

MartinV hat geschrieben:Hallo!

Ich nutze oft docker, um wine in einer Sandbox laufen zulassen.
Hallo

Aus meiner Sicht beginnt hier eigentlich schon der primäre Fehler. Denn die Aufgabe von Docker ist es, Systeme isoliert in Containern zu betreiben, nicht vereinzelte Anwendungen zu isolieren. Sprich der eigentliche Fokus von Docker, liegt auf etwas gänzlich Anderem. Für diese Belange wäre Firejail eine weit bessere Option, die genau für so etwas designt wurde. Letztlich verfügt Firejail auch bereits über ein Sandbox-Profil für Wine. Ein weiterer Vorteil wäre, dass Firejail auch mit Nutzerrechten funktioniert, weil Firejail prinzip-bedingt eine Setuid-Binary ist, die erst eine entsprechende Sandbox mit Rootrechten etabliert, aber letztlich auf Nutzerrechte reduziert mit dem isolierten Prozess gestartet wird. Dagegen läuft Docker mit Rootrechten, und müsste ohnehin anderweitig gesichert werden. Und technisch gesehen greifen sowohl Docker als auch Firejail, auf dieselben Kernel-Funktionen zurück. Normalerweise sollte man sehr vorsichtig mit Setgid/Setuid-Rechten sein, und besser nicht daran herumschrauben, weil diese Rechte zwar einerseits viel Komfort beherbergen, aber auch unmittelbare Einfallstore sein können beim kleinsten Fehler.

Wenn man mal von einer gewöhnlichen Standardinstallation von Debian ausgeht, dann existieren schon mal an die 30 oder mehr Setgid/Setuid-Binarys für etliche Zwecke. Und je nach Desktop kann das durchaus noch wachsen, aufgrund von Komfortfunktionen. Ab Installation entziehe ich all diesen Setgid/Setuid-Binarys ihre Rechte, mit Ausnahme von su und Firejail. Damit wird die mögliche Angriffsfläche schon erheblich reduziert. Für Docker würde ich auch eine Systemd-Unit-File anlegen, um Docker darüber zusätzlich isoliert auszuführen.

Antworten