Upgrade to Pro — share decks privately, control downloads, hide ads and more …

"Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

Dustin Huptas
November 10, 2015

"Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

Mit dem Erfolg der Docker Container Engine werden früher oder später die ersten Container aus den Build Chains in die Produktion fließen. Höchste Zeit, die eigene Umgebung auf Sicherheitsaspekte hin zu untersuchen. Glücklicherweise bietet Docker eine ganze Reihe von Sicherungsmaßnahmen an, viele davon sind sogar standardmäßig aktiv. Dennoch lauern Stolperfallen, die zu Sicherheitslücken führen können.

Wir stellen ein ganzheitliches Modell mit den Ebenen Host, Docker Daemon und Container für die Sicherheitsbetrachtung von Docker-Umgebungen vor und zeigen, welche Schalter und Knöpfe es gibt, um die eigenen Container und deren Betriebsumgebung hochseetauglich zu machen.

Dustin Huptas

November 10, 2015
Tweet

More Decks by Dustin Huptas

Other Decks in Technology

Transcript

  1. 2 10.11.15 Cassini Consulting Cassini consulting #devops #linux #configmgt #security

    #virtualization #Containers #networking #ipv6 Andreas Schmidt @aschmidt75 Infra-coding, #serverspec, #containers & security, #IOT #protocols & Devices
  2. 3 10.11.15 Cassini Consulting Cassini consulting #devops #linux #configmgt #security

    #virtualization #Containers #networking #ipv6 Dustin Huptas @dhpts System Architecture, Networking, Security, Dev‘ing the Ops
  3. Die Entwicklung von Docker und Security seit 2013 „Docker containers

    can haz networking now!“ Remote API Container Breakout PoC Authorization Bypass on Docker Hub Docker Hub Outage CVE-2014- 8178/8179 Challenges Websockets Official Repos / Docker Hub Docker 1.3.3/1.4.0: Security Fixes Docker Security Bench Trusted Registry Content Trust Improvements 2013 2014 2015 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  4. Build Chain Registry Docker Host Docker Daemon Push PULL 10.

    November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  5. Base Images: "Make or Buy?" TAR'en Image in Tarball konvertieren

    docker import <tarball> 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen Userland in lokalem Verzeichnis installieren OS in Image installieren, aufräumen ODER
  6. Wenn in (Daten-)Containern, dann nur verschlüsselt K/V-Stores Agent injected ENV

    credentials 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  7. Content Trust und Notary Quelle: https://docs.google.com/document/d/1Xn9kuhICOFj_P37ZWng8LeR_32NAj4Ytm42XAVWuTHw/edit# 10. November 2015 "Hochseetauglich":

    Sicherheitsaspekte von Docker-Umgebungen Notary Server für Signaturprüfung von Metadaten Basiert auf The Update Framework (TUF) Die Signaturen der Image Hashes werden überprüft
  8. Content Trust und Notary Signierte Images root@debian-jessie:~# env DOCKER_CONTENT_TRUST=1 docker

    pull dewiring/trustit:latest Pull (1 of 1): dewiring/ trustit:latest@sha256:c58ee9f9d1b1a0b59471cac2c089ac995dd559949ee088533fc6f4a0dcd271 9f sha256:c58ee9f9d1b1a0b59471cac2c089ac995dd559949ee088533fc6f4a0dcd2719f: Pulling from dewiring/trustit 2c49f83e0b13: Already exists 4a5e6db8c069: Already exists 88ab9df21bce: Already exists 2c900b53c032: Already exists 8d86df29cb44: Already exists Digest: sha256:c58ee9f9d1b1a0b59471cac2c089ac995dd559949ee088533fc6f4a0dcd2719f Status: Downloaded newer image for dewiring/ trustit@sha256:c58ee9f9d1b1a0b59471cac2c089ac995dd559949ee088533fc6f4a0dcd2719f Tagging dewiring/ trustit@sha256:c58ee9f9d1b1a0b59471cac2c089ac995dd559949ee088533fc6f4a0dcd2719f as dewiring/trustit:latest
  9. Härtung des Hosts selbst GRSecurity Audit-Daemon SELinux und AppArmor 10.

    November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  10. Docker Daemon §  Der Daemon läuft unter root. §  API

    ist umfangreich, bietet viele Funktionen. §  Docker bietet Authentifizierung, aber keine Autorisierung auf das API. §  Wer Zugriff auf das API hat, besitzt weitreichende Fähigkeiten, die dem root-Account entsprechen. §  Alternativen wie runC.io (Open Container Project) sind anders aufgebaut (daemon-less). 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  11. Daemon isolieren (z.B. SELinux, AppArmor) Zugriffe auditieren Zugriffswege definieren 10.

    November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  12. [root@localhost ~]# rpm -qa|grep docker docker-1.8.2-1.gitf1db8f2.fc22.x86_64 docker-selinux-1.8.2-1.gitf1db8f2.fc22.x86_64 [root@localhost ~]# ps

    -efZ|grep docker system_u:system_r:docker_t:s0 root 870 1 0 16:16 ? 00:00:00 /usr/bin/docker -d --selinux-enabled [root@localhost ~]# ps -efZ |grep svirt_lxc_net_t system_u:system_r:svirt_lxc_net_t:s0:c178,c327 root 1074 870 0 16:17 pts/1 00:00:00 /bin/bash 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  13. root@vagrant-ubuntu-vivid-64:/etc/apparmor.d# apparmor_status apparmor module is loaded. 6 profiles are loaded.

    6 profiles are in enforce mode. /sbin/dhclient /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/NetworkManager/nm-dhcp-helper /usr/lib/connman/scripts/dhclient-script /usr/sbin/tcpdump docker-default 0 profiles are in complain mode. 2 processes have profiles defined. 2 processes are in enforce mode. /sbin/dhclient (549) docker-default (2923) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined. root@vagrant-ubuntu-vivid-64:/etc/apparmor.d# ps -efZ|grep docker unconfined root 2684 1 0 15:46 ? 00:00:03 /usr/bin/docker -d -H fd:// docker-default root 2923 2684 0 15:52 pts/1 00:00:00 /bin/bash 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  14. Zugriff auf das API beschränken? (1) Docker-API über Socket-File zugreifbar

    machen §  Berechtigungen des Sockets einschränken §  Sicherstellen, dass keine User in der Docker-Gruppe sind §  Zugriff von außen über SSH (2) Docker-API über Netzwerk erlauben §  TLS-Zertifikate, Server- UND Clientseitig §  Public-Keys verteilen §  Socket ausschalten (3) Agent-basierter Ansatz §  z.B. über Socket oder TLS (nur auf lokalem Netzwerkinterface) §  Agent kapselt Zugriffe auf API §  Agent besitzt eigenes API, mit Ansatz zur Autorisierung 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  15. §  Container nicht als Benutzer root laufen lassen (USER-Direktive im

    Dockerfile verwenden, -u/--user). §  Nicht --privileged laufen lassen. §  --volume und --device wenn möglich read-only einbinden, --read-only, wenn sinnvoll verwenden. §  Nur Ports EXPOSEn, die von außen wirklich gebraucht werden. §  Logging und Monitoring Container-native aufsetzen. Allgemeine Security-Überlegungen für Docker Container 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  16. Namespaces Capabilities CGroups SELinux & AppArmor Seccomp 10. November 2015

    "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  17. Namespaces Capabilities CGroups SELinux & AppArmor Seccomp Testautomatisierung und -abdeckung!

    10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  18. Docker Security Benchmark §  Ausführlicher Guide um Docker Hosts, Daemon,

    Images, Container zu härten. §  Inklusive Prüfroutinen §  benchmarks.cisecurity.org §  Werkzeuge zur Auto- matisierung verfügbar. 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  19. Härtung bleibt wichtig – jetzt halt für Container Docker hilft,

    das Sicherheitsniveau von Applikationsprozessen zu verbessern. "UI für Security" An den (zahlreichen) Baustellen tut sich etwas 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  20. Docker Security History Challenges §  https://blog.docker.com/2013/03/docker-containers-can-haz-networking-now/ §  https://blog.docker.com/2013/04/list-of-publicly-available-docker-images/ §  https://blog.docker.com/2013/05/new-registry-goes-live/

    §  https://blog.docker.com/2013/06/docker-0-4-remote-api-build-openstack-integration/ §  https://blog.docker.com/2014/06/docker-container-breakout-proof-of-concept-exploit/ §  https://groups.google.com/forum/#!msg/docker-dev/F8LLeAZhiYE/RmlGPNcouXAJ §  https://blog.docker.com/2014/08/disclosure-of-authorization-bypass-on-the-docker-hub/ §  https://groups.google.com/forum/#!topic/docker-user/IrjXTHA6jJc §  https://www.docker.com/docker-cve-database (CVE-2014-6407, CVE-2014-6408) §  https://blog.docker.com/2015/01/docker-hub-jan-5-outage/ §  https://blog.docker.com/2015/10/security-release-docker-1-8-3-1-6-2-cs7/ (CVE-2014-8178, CVE-2014-8179) Improvements §  https://blog.docker.com/2013/07/docker-0-5-0-external-volumes-advanced-networking-self-hosted-registry/ §  https://blog.docker.com/2013/08/containers-docker-how-secure-are-they/ §  https://blog.docker.com/2013/08/websockets-dockerfile-upgrade-better-registry-support-expert-mode-and-more/ §  https://blog.docker.com/2013/11/introducing-trusted-builds/ §  https://blog.docker.com/2014/02/docker-and-security/ §  https://blog.docker.com/2014/06/announcing-docker-hub-and-official-repositories/ §  https://blog.docker.com/2014/07/new-dockercon-video-docker-security-renamed-from-docker-and-selinux/ §  https://blog.docker.com/2014/10/docker-1-3-signed-images-process-injection-security-options-mac-shared-directories/ §  https://blog.docker.com/2014/12/advancing-docker-security-docker-1-4-0-and-1-3-3-releases/ §  https://blog.docker.com/2015/03/secured-at-docker-diogo-monica-and-nathan-mccauley/ §  https://blog.docker.com/2015/05/understanding-docker-security-and-best-practices/ §  https://blog.docker.com/2015/05/docker-security-tools/ §  https://blog.docker.com/2015/07/new-tool-v1-registry-docker-trusted-registry-v2-open-source/ §  https://blog.docker.com/2015/08/docker-1-8-content-trust-toolbox-registry-orchestration/ §  https://blog.docker.com/2015/08/content-trust-docker-1-8/ 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  21. Cassini Consulting Dustin Huptas Andreas Schmidt Oberwallstraße 24 10117 Berlin

    Deutschland Alle Angaben basieren auf dem derzeitigen Kenntnisstand. Änderungen vorbehalten. Dieses Dokument von Cassini Consulting ist ausschließlich für den Adressaten bzw. Auftraggeber bestimmt. Es bleibt bis zur einer ausdrücklichen Übertragung von Nutzungsrechten Eigentum von Cassini. Jede Bearbeitung, Verwertung, Vervielfältigung und/oder gewerbsmäßige Verbreitung des Werkes ist nur mit Einverständnis von Cassini zulässig. 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen