Container Sicherheit¶
Faktoren für die Sicherheit der Container-Techniken:
Herkunft der genutzten Images
Wegen der Kernel-syscall Techniken (siehe namespaces) problematisch!
Empfehlungen:
Implementierungen mittels
cgroups(Control Groups für Nutzung von Limits)Applikationen in Container möglichst nicht mit root
Fähigkeiten der Images einschränken
User-Namespace aktiv
seccomp/SELinux/Apparmor
keine SUID im Container
aktuelle Kernel
Container-Host härten, aktualisieren, patchen
Container-Host Zugriffe einschränken
Netzwerk sichern / konfigurieren
seccomp¶
Der Secure Computing Mode ist eine Kernelunterstützung und sollte gecheckt werden.
Tipp
Bitte seccomp >= Version 2.2.1
# cat /boot/config-$(uname -r) | grep CONFIG_SECCOMP=
CONFIG_SECCOMP=y
# rpm -qa | grep seccomp
libseccomp2-2.3.2-lp150.1.9.x86_64
joeb@opensuse:~/rst/docker>
Links:
Hinweis
Also: SELinux und auch Firewalltechnken (Netfilter/iptables, firewalld, …) bedenken.
Zu diesen vertiefenden Themen in Produktionsumgebungen an dieser Stelle keine weiteren Ausführungen.
Faktoren für Security¶
Ganz wichtige aber eben auch ganz dicke Bretter…
AppArmor (Application Armor)
SELinux (Security Enhanced Linux) - wollen wir für Test auf
permissiveStatus ermitteln mit:
sestatusoderls -Z(bei CentOS; bei Debian, openSUSE sollte SELinux deaktiv sein)(Auszug/Zeile:) Current Mode: enforcing
Ausschalten mit
setenforce 0Dauerhafte Konfiguration in
/etc/sysconfig/selinuxNetfilter/iptables (bzw. Dienste firewalld, ufw)
Anm.: auch immer mal verantwortlich bei vermeintlichen Docker Technik Problemen!
Sicherheitstechnik¶
Container sind zwar durch Namespaces isoliert. Doch das ist bei Weitem nicht derselbe Schutz, wie es bei echten Virtualisierungen erreicht werden kann.
Technische Ansätze zur Isolierung zum Host:
Namespaces (siehe UIDs, GIDs, PIDs pro Container)
Mount-Namespaces auf Kernelebene (sicherer als chroot)
eigener Netzwerkstack
Gefahr
Docker Prozess verlangt nach root!
Siehe Rechte für
ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 7. Jan 12:35 /var/run/docker.sock
Aus Vereinfachungs- und Seminargründen entscheiden wir uns dennoch für
usermod -aG docker joeb
Ansätze zur Verbesserung der Sicherheit und Grundverständnisse hierzu:
Docker Daemon in Rootless Mode¶
Wir können den Docker Daemon auch ohne Root-Rechte nutzen. Das erfordert allerdings einigen Installations- und Konfigurationsaufwand.
Die nötigen Schritte und Installationen zeigt die Docker Dokumentation: