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

"Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

"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.

F28d4f1634bce85c90b76b197b1413d4?s=128

Andreas Schmidt

November 10, 2015
Tweet

Transcript

  1. © 2015 Cassini Consulting Dustin Huptas Andreas Schmidt „Hochseetauglich“: Sicherheitsaspekte

    von Docker-Umgebungen Mannheim, 10. November 2015
  2. 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
  3. 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
  4. READY FOR TAKEOFF? 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  5. 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
  6. Build Chain Registry Docker Host Docker Daemon Push PULL 10.

    November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  7. Build Chain 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  8. Latest & Greatest Pinned Versions vs. 10. November 2015 "Hochseetauglich":

    Sicherheitsaspekte von Docker-Umgebungen
  9. 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  10. 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
  11. Konfigurationsmanagement Credentials in Images? Credentials in ENV-Variablen? 10. November 2015

    "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  12. Wenn in (Daten-)Containern, dann nur verschlüsselt K/V-Stores Agent injected ENV

    credentials 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  13. Registry 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  14. 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  15. 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  16. 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  17. 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
  18. Content Trust und Notary Unsignierte Images

  19. 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
  20. Docker HOST Lokale Images 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von

    Docker-Umgebungen
  21. Härtung des Hosts selbst GRSecurity Audit-Daemon SELinux und AppArmor 10.

    November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  22. Docker Daemon 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  23. 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
  24. Daemon isolieren (z.B. SELinux, AppArmor) Zugriffe auditieren Zugriffswege definieren 10.

    November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  25. [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
  26. 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
  27. 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
  28. Container @runtime 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  29. §  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
  30. Namespaces Capabilities CGroups SELinux & AppArmor Seccomp 10. November 2015

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

    10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  32. Testing 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  33. 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
  34. Automatisierte Security-Checks 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  35. Automatisierte Security-Checks 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  36. Automatisierte Security-Checks 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen

  37. 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
  38. Q & A

  39. Weiterführende Links §  http://securedocker.org/news/ §  https://github.com/GDSSecurity/Docker-Secure-Deployment-Guidelines §  https://github.com/de-wiring/tests-docker-hardening §  https://github.com/de-wiring/puppet-docker-hardening

    §  https://jaxenter.com/jax-magazine/issues/121250 10. November 2015 "Hochseetauglich": Sicherheitsaspekte von Docker-Umgebungen
  40. 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
  41. 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