/ Features

Bye-Bye blinde Passagiere - Enginsight scannt jetzt Docker Container

Von der Schifffahrt abgeschaut, macht die Containertechnik Admins und Entwicklern das Leben sehr viel einfacher. Oft gleichen Docker Container allerdings einer Blackbox, in der sich alles Mögliche befinden kann. Dass das kein theoretisches Problem ist, beweist der jüngste Fall von bösartigen Krypto-Minern im offiziellen Docker Repository. Hier kann Enginsight jetzt Abhilfe schaffen, so dass Sie keine Angst mehr vor blinden Passagieren haben müssen.

↪ Gleich zum CI/CD Workflow-Beispiel (GitLab)

Container und Docker

Mit Containern bezeichnet man eine Softwaretechnik, bei der Prozesse, Anwendungen und Dienste in abgeschottete Bereiche (sogenannte Container) "eingesperrt" werden. Genau wie sich die Fracht auf einem großen Schiff in getrennten, verschlossenen Frachtcontainern befindet. Wo früher noch Fässer und Kisten einzeln an Bord gebracht werden mussten, je nach Größe mit unterschiedlichen Methoden, sind die heutigen Schiffscontainer genormt. Sie haben also immer die gleichen Abmessungen und lassen sich z. B. mit den immer gleichen Krahn Anlagen verladen.

In der IT lassen sich mit Hilfe von Containern (Server-)Anwendungen mit allen benötigten Komponenten wie Hilfsprogrammen, Bibliotheken und Konfigurationsdateien zu Paketen zusammenschnüren. Diese Pakete lassen sich dann bequem übers Netz verteilen, z. B. über die Container-Plattform Docker. Wegen der vielen Vorteile basieren mittlerweile fast alle modernen Softwarearchitekturen auf Docker-Containern. In den CI/CD Prozessen, also der kontinuierlichen Integration und dem Deployment von Software werden Docker Container mittlerweile komplett automatisiert erstellt und deployed.

Das Sicherheitsproblem

Im Internet gibt es viele Guides, die einem helfen die Sicherheit eines Docker Container zu optimieren. Oftmals finden sich darin Tipps wie "Benutze keine Images aus Repositories, die nicht vertrauenswürdig sind" oder "Starte den Container immer mit der -u Flag, so dass die Ausführung nicht als root, sondern als normaler User erfolgt". Diese Tipps sind auch sinnvoll und haben ihre Berechtigung, aber wie es tatsächlich um die Sicherheit innerhalb eines Docker Containers steht, ist sehr schwer herauszufinden. Der oben bereits erwähnte Fall von bösartigen Krypto-Minern im offiziellen Docker Repository illustriert dieses Problem anschaulich.

Hinzu kommt, dass herkömmliche Tools, wenn überhaupt nur öffentliche Images scannen und keine Privaten. Enginsight bietet einen neuen innovativen Ansatz, wie sie sicherstellen können, dass sie nur Container deployen, die keine nachweisbaren Sicherheitslücken enthalten. Mit Hilfe unserer API können Sie das Innere des Docker-Containers selbst auf Schwachstellen untersuchen.

Das Ganze lässt sich auch wunderbar in die CI/CD integrieren. Man definiert, dass z. B. bei gefundenen Schwachstellen der Deployment Prozess abgebrochen werden soll. Der Entwickler ist dann gezwungen die Sicherheitslücken mit Updates zu patchen, anschließend kann ganz normal deployed werden. So integriert man bereits in den Entwicklungsprozess selbst einen Sicherheitsschritt, ganz ohne die Installation von zusätzlicher Software.

Beispiel-Workflow mit GitLab

Im Folgenden demonstrieren wir Ihnen einen einfach CI/CD Workflow auf Basis von GitLab. Wir werden eine neue Sicherheits-Stage erstellen, so dass es z. B. neben "Build", "Test" und "Deploy" auch noch "Security" gibt. In dieser Stage wird dann die Sicherheit des Docker Containers überprüft. Um die Security Stage zu testen, nehmen wir einfach ein offizielles CentOS 7 Docker Image, dass nicht über den Tag "latest" bereitgestellt wird.

Alle beschriebenen Beispiele und Vorlagen finden Sie unter: https://github.com/enginsight/secure-docker-example

Bitte beachten Sie, dass in diesem Szenario temporär ein neuer Host angelegt wird. Sie benötigen also in Ihrem Enginsight Account noch mindestens ein freies Asset. Der Host wird nach dem Scan automatisch wieder gelöscht.

  1. Zunächst müssen Sie sich auf der Enginsight Plattform in Ihrem Account einen neuen Access Key anlegen. Wie das genau funktioniert, können Sie hier in unserer Dokumentation nachlesen.

acesskey

  1. Wählen Sie auf GitLab das entsprechende Projekt aus, für dass Sie die Stage Security hinzufügen wollen. Unter Settings -> CI/CD müssen Sie beim Punkt "Secret Variables" den Access Key, das Access Key Secret und die URL der Enginsight API hinterlegen.

secrets-2

  1. Kopieren Sie das vulnerabilities.sh Skript in Ihr Projekt zu Ihrer .gitlab-ci.yml Datei. Das Skript finden Sie unter dem oben genannten GitHub-Link. Das Skript kann auch in einem beliebigen Unterordner platziert werden, dann muss aber der Pfad in .gitlab-ci.yml angepasst werden.

  2. Passen Sie nun Ihre .gitlab-ci.yml Datei an. Fügen Sie die Stage Security zu ihren bisherigen Stages hinzu. Der "Insecure Container" enthält das offizielle CentOS 7 Docker Image, dass nicht über den Tag "latest" bereitgestellt wurde. Mit dem rot markierten Befehl wird der Docker Container gescannt. Nutzen Sie nicht die CI von GitLab, dann fügen Sie einfach diesen Befehl an der passenden Stelle in Ihrem CI Prozess ein.

git-ci-2

Im vulnerabilities.sh Skript ist spezifiziert, dass der Job fehlschlagen soll, sobald Sicherheitslücken gefunden wurden. Das kann aber natürlich auch geändert werden. So, dass der Job z. B. nur fehlschlägt, wenn Sicherheitslücken mit einem Score von mindesten 7 o. ä. gefunden wurden.

Anschließend kann man im Logfile nachschauen, welche Sicherheitslücken gefunden wurden. Wie man sehen kann, birgt auch ein offizielles CentOS 7 Image durchaus ein ernstzunehmendes Sicherheitsrisiko. Es wurden 14 Sicherheitslücken gefunden, mit einem maximalen CVE Score von 7.5.

cve

Updaten wir nun das CentOS 7 mit yum auf die neueste Version und führen das Image nochmal neu mit dem Namen "Secure Container" aus. Wenn wir nun den Scan durchführen, werden keine Sicherheitslücken gefunden und der Job ist erfolgreich.

Bitte beachten Sie, dass das Skript nur für CentOS und Red Hat ausgelegt ist. Bei Debian oder Ubuntu Systemen, ersetzen Sie "yum" mit "apt-get".

Unbenannt1

Möchten Sie die neue Funktion gerne testen? Dann registrieren Sie sich einfach bei uns und probieren Sie alle Enginsight Funktionen 14 Tage lang kostenlos aus.

Unser Kundenmanager Tim Brettschneider beantwortet gerne alle Ihre Fragen!

tim-1

Schreiben Sie uns einfach eine E-Mail an hello@enginsight.com. oder rufen Sie uns an unter der Nummer +49 3641 2714966.