Mit verlangsamter Geschwindigkeit gekuckt: Docker and SELinux by Daniel Walsh from Red Hat führte mich auf folgende, wichtige Seiten zu docker im Rahmen eines professionellen Linux-Systems:
- Secure Your Containers with this One Weird Trick
- Container Tidbits: Adding Capabilities to a Container
- What capabilities do I really need in my container?
und weiterführend Docker and SELinux.
Dabei kaue ich schon die ganze Zeit an meinem System, per ftp (tls & mod_auth_file.c – enforced) upgeloadete Files über https an ein Java-Modul übergeben zu können. Teile davon finden sich z.B. unter Mesqualito/docker-proftpd (GitHub). Davor hatte ich verschiedene proftpd-docker-images anderer Administratoren durchprobiert und blieb jedesmal irgendwo stecken…
Und bei aller gewünschten Funktionalität immer beachten: http://stopdisablingselinux.com!
Hier findet sich auch eine gute Erklärung zur „Discretionary Access Control (DAC)“ mit den gewohnten Lese-/Schreib-/Ausführungsrechten für Prozesse und Benutzer und der durch den Kernel kontrollierten „Mandatory Access Control (MAC)“, bei der anhand „policies“ festgesetzt wird, welcher Typ von Prozess (oder Benutzer) welche Berechtigungen in Bezug auf welches Objekt hat. SELinux‘ MAC kann auch Rechte ausschließen, die Linux‘ DAC scheinbar freigegeben hat (z.B. rwxrwxrwx – /home/user_home bleibt für user2 und ggf. auch für root dennoch gesperrt).
In diesem Kontext muss ebenso auf die „Capabilities“ (=> pscap) geachtet werden, die docker (aka Linux-Container lxc) heranzieht.
Wichtig ebenso: SELinux type-enforcement (“ a process running with the label ftpd_t can have read access to a file labeled ftpd_config_t…“) – siehe auch: SELinux check…