Container Sicherheit

Faktoren für die Sicherheit der Container-Techniken:

  • Herkunft der genutzten Images

  • Wegen der Kernel-syscall Techniken (siehe namespaces) problematisch!

Tipp

Bitte seccomp >= Version 2.2.1

Anm./Empfehlung zu Thema namespaces:

# 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:

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

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 permissive

    Status ermitteln mit: sestatus oder ls -Z (bei CentOS; bei Debian, openSUSE sollte SELinux deaktiv sein)

    (Auszug/Zeile:) Current Mode: enforcing

    Ausschalten mit setenforce 0

    Dauerhafte Konfiguration in /etc/sysconfig/selinux

  • Netfilter/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 verlangen 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: