Installation Docker auf Debian 9

Ziel war es einen Docker Dienst auf einem öffentlichen Server zu installieren um zukünftig über den Mechanismus der Container einfacher verschiedene Dienste zu fahren die sich mit Ihren Abhängigkeiten nicht in die Quere kommen sollen.

Die bisherigen Beschreibungen sahen allesamt recht einfach aus. Zusätzlich wollte ich noch vorhandene Sicherheitsempfehlungen nachgehen und bin auf Docker Bench gestoßen das wohl die gängigen Empfehlungen im System prüft.

Eigentlich lief alles nach Doku. Dies sind meine Notizen ohne Anspruch auf Korrektheit.

Die Basisbeschreibung stammt von hier

   sudo apt-get update
   sudo apt-get install apt-transport-https ca-certificates  curl gnupg2 software-properties-common
   curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
   sudo apt-key fingerprint 0EBFCD88
       pub   rsa4096 2017-02-22 [SCEA]
             9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
       uid        [ unbekannt ] Docker Release (CE deb) <docker@docker.com>
       sub   rsa4096 2017-02-22 [S]
   sudo add-apt-repository \
      "deb [arch=amd64] https://download.docker.com/linux/debian \
      $(lsb_release -cs) \
      stable"
   sudo apt-get update
   sudo apt-get install docker-ce
   sudo systemctl status docker
   sudo usermod -aG docker meinuser
   id -nG
      meinuser docker ..
   docker run hello-world
       Hello from Docker!
       This message shows that your installation appears to be working correctly.
  sudo systemctl enable docker
     Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
     Executing: /lib/systemd/systemd-sysv-install enable docker

Damit war Docker installiert, das Hello World Beispiel erfolgreich gestartet und der Dienst sollte sich automatisch starten.

Jetzt der Sicherheitsscheck auf Basis dieser Beschreibung

git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security/
./docker-bench-security.sh

Der Check selbst brachte das gleiche Ergebnis wie in dem Dokument und bis auf die separate Partition konnte ich allen Empfehlungen folgen

Die Überwachung der Dockerverzeichnisse

   sudo apt-get install auditd
   vi /etc/audit/rules.d/audit.rules
      -w /usr/bin/docker -p wa
      -w /var/lib/docker -p wa
      -w /etc/docker -p wa
      -w /lib/systemd/system/docker.service -p wa
      -w /lib/systemd/system/docker.socket -p wa
      -w /etc/default/docker -p wa
      -w /etc/docker/daemon.json -p wa
      -w /usr/bin/docker-containerd -p wa
      -w /usr/bin/docker-runc -p wa
   sudo systemctl restart auditd

Die Beschränkungen des Docker Daemons

   sudo vi /etc/docker/daemon.json

   {
       "icc": false,
       "userns-remap": "default",
       "log-driver": "syslog",
       "disable-legacy-registry": true,
       "live-restore": true,
       "userland-proxy": false,
       "no-new-privileges": true
   }

Docker Trust

  echo "DOCKER_CONTENT_TRUST=1" | sudo tee -a /etc/environment

Dann blieben noch zwei Warnungen übrig.

  ./docker-bench-security.sh  |  grep WARN
  [WARN] 1.1  - Ensure a separate partition for containers has been created
  [WARN] 2.11 - Ensure that authorization for Docker client commands is enabled

Die Partition kann ich aktuell nicht separieren und die andere Warnung kann man wohl erst mal ignorieren kann da man keinen externen Zugriff erlaubt.

  The audit will continue to flag this test as a WARN, though access to the default local-only Docker socket is protected by requiring membership in the docker group so this can be safely ignored.