ADMIN

2020

12

2020-11-29T12:00:00

Applikationsmanagement

PRAXIS

050

Open-Source-Tipp

Applikationsmangement

Container Manager

Container-Scanning mit oscap-podman

Sichtbar machen

von Thorsten Scherf

Veröffentlicht in Ausgabe 12/2020 - PRAXIS

Um veraltete Software-Installationen oder fehlerhafte Konfigurationen zu finden, existieren eine Vielzahl an unterschiedlichen Scannern. Immer mehr Anwendungen laufen allerdings in Containern ab. Für klassische Scanner-Tools sind diese somit gar nicht sichtbar. Der Open-Source-Tipp zeigt, wie sich dieses Problem mit­hilfe von OpenSCAP lösen lässt.

Im Open-Source-Umfeld existiert mit OpenSCAP eine Umsetzung des Security Content Automation Protocols (SCAP) [1]. Das Protokoll setzt sich aus mehreren Komponenten zusammen, die üblicherweise im Dateiformat vorliegen. Die wichtigsten hiervon sind:
- XCCDF (Extensible Configuration Checklist Description Format): Mithilfe von XCCDF-Dateien erzeugen Sie eine Checkliste und definieren, welche Tests als Teil eines Security-Scans durchzuführen sind.
- OVAL (Open Vulnerability and Assessment Language): Die OVAL-Sprache beschreibt einen Test und definiert, wie dieser im Einzelnen aussehen soll.
Im Open-Source-Umfeld existiert mit OpenSCAP eine Umsetzung des Security Content Automation Protocols (SCAP) [1]. Das Protokoll setzt sich aus mehreren Komponenten zusammen, die üblicherweise im Dateiformat vorliegen. Die wichtigsten hiervon sind:
- XCCDF (Extensible Configuration Checklist Description Format): Mithilfe von XCCDF-Dateien erzeugen Sie eine Checkliste und definieren, welche Tests als Teil eines Security-Scans durchzuführen sind.
- OVAL (Open Vulnerability and Assessment Language): Die OVAL-Sprache beschreibt einen Test und definiert, wie dieser im Einzelnen aussehen soll.
- CPE (Common Platform Enumeration): Um einzelne Komponenten eines Tests eindeutig zu kennzeichnen, kommt CPE zum Einsatz.
- CVE (Common Vulnerabilities and Exposures): Ganz ähnlich wie CPE-IDs sorgen CVE-Nummern dafür, eine bekannte Sicherheitsschwachstelle mit einer eindeutigen Kennzeichnung zu versehen.
DataStreams fassen mehrere SCAP-Komponenten innerhalb einer Datei zusammen. Die Dateien sind dann in der Regel Teil einer Policy, die sich zum Scannen eines Systems verwenden lässt. Es wird zwischen Source DataStreams (SDS) und Result DataStreams im Asset-Reporting-Format (ARF) unterschieden. Die SDS setzen sich aus den Dateien zusammen, die für den Scan eines Systems auf Basis eines bestimmten Profils erforderlich sind. ARF-Streams bündeln die einzelnen Ergebnisse des Scans in einer Datei. Diese können Administratoren dann in einem Webbrowser betrachten.
Viele Hersteller bieten mittlerweile SCAP-Komponenten für ihre Software oder auch diverse Sicherheitsrichtlinien an. Ein gutes Beispiel ist das Center for Internet Security (CIS), das die bekannten CIS-Benchmarks herausgibt, oder der Security Technical Implementation Guide (STIG) der Defense Information Systems Agency (DISA). Um die gewünschten SCAP-Komponenten leichter zu finden, existieren spezielle Suchmaschinen wie beispielsweise das National Checklist Program Repository (NCP) [2].
Hilfreicher Security Guide
Einen guten Einstieg in die SCAP-Welt bietet der SCAP Security Guide (SSG) [3]. Dieser stellt Regelwerke basierend auf verschiedenen Richtlinien, beispielsweise auch den zuvor erwähnten STIGs, für unterschiedliche Betriebssysteme zur Verfügung. Mit dem Linux-Tool "scap-workbench" [4] existiert ein grafischer Scanner, mit dessen Hilfe Sie Ihre Systeme auf Basis von SCAP-Richtlinien überprüfen können.
Um einen solchen Scan auch ohne grafisches Tool durchzuführen, greifen Sie auf der Kommandozeile auf das Tool "oscap" zurück. Wie auch der Security Guide und die scap-workbench ist das Tool für unterschiedliche Linux-Distributionen verfügbar. Die Regelwerke aus dem Security Guide zeigt Ihnen das Bild an. Alternativ sehen Sie diese auch innerhalb einer Shell mit dem folgenden Befehl:
ls -1 /usr/share/xml/scap/ssg/content/
Um nähere Informationen zu einer Policy zu erhalten, rufen Sie oscap info, gefolgt vom Pfad des Regelwerks auf:
oscap info /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
Wie Sie vielleicht schon innerhalb des grafischen Scanners gesehen haben, kann eine einzelne Policy durchaus verschiedene Profile enthalten. Diese setzen sich zumeist aus unterschiedlichen Tests zusammen. Welches Profil bei einem Scan zum Einsatz kommen soll, müssen Sie der scap-workbench oder auch dem Kommandozeilentool oscap jeweils mitteilen.
Das folgende Beispiel führt nun einen Scan des lokalen Systems auf Basis des Standardprofils aus der Policy für die Linux-Distribution Fedora durch:
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results-arf fedora-scan.xml --report fedora-scan-report.html /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
Das Ergebnis aus der Datei "fedora-scan-report.html" können Sie sich anschließend mit einem Browser ansehen. Setzen Sie eine andere Distribution ein, suchen Sie in dem Ordner "/usr/share/xml/scap/ssg/ content/" einfach nach der passenden Policy. Danach lassen Sie sich die zur Verfügung stehenden Profile anzeigen und verwenden wieder oscap oder die scap-workbench, um den eigentlichen Scan durchzuführen.
Das Linux-Tool "scap-workbench" überprüft Systeme basierend auf SCAP-Regelwerken.
Container-Scanning mittels oscap-podman
Wie sieht es aber aus, wenn Sie auch Ihre Container beziehungsweise Container-Images scannen wollen? Für das Scannen von lokalen Containern bietet OpenSCAP das Tool "oscap-podman" an. Hiermit können Sie die SCAP-Richtlinien sowohl auf Container-Images als auch Container selbst anwenden, solange diese dem OCI-Standard (Open Container Initiative) entsprechen. Dies funktioniert nahezu analog zum vorherigen Beispiel. Alles, was Sie benötigen, sind die passenden SCAP-Richtlinien und das gewünschte Profil aus der Richtlinie. Dass der Container-Manager "podman" ebenfalls installiert ist, wird an dieser Stelle vorausgesetzt.
Für die Container-Plattformen, die auf Kubernetes basieren, lassen sich mithilfe von sogenannten "object annotations" [5] auch sicherheitsrelevante Informationen in die Beschreibung eines Images hinzufügen. Diese stehen dann zusammen mit den jeweiligen Images über den Container-Katalog der Registry zur Verfügung. Mithilfe von podman images lässt sich die gewünschte ID des Container-Images herausfinden. Entsprechend zeigt podman ps -a die IDs sämtlicher Container-Instanzen auf Ihrem System an. Der Befehl zum Scannen eines Images mit der ID "00ff39a8bf19" lautet dann wie folgt:
oscap-podman 00ff39a8bf19 xccdf eval --profile xccdf_org.ssgproject. content_profile_standard --results-arf fedora-scan.xml --report fedora-image-scan-report.html /usr/ share/xml/scap/ssg/content/ssg-fedora-ds.xml
Das Ergebnis des Scans finden Sie dann wieder in der Datei "fedora-image-scan-report.html". Um einen einzelnen Container selbst zu scannen, verwenden Sie einfach die ID der Container-Instanz anstatt des Images.
Fazit
Der Open-Source-Tipp im letzten Monat zeigte, wie Sie beim Start einer neuen Container-Instanz überprüfen, ob die eingesetzte Container-Registry über eine neue Version des Container-Images verfügt. Somit lässt sich sicherstellen, dass jeweils das aktuelle Image aus der Registry zum Einsatz kommt. Mithilfe von oscap-podman können Sie SCAP-Richtlinien auf Container-Images anwenden, um herauszufinden, ob die eingesetzten Images veraltet sind oder vielleicht sogar bekannte Schwachstellen aufweisen.
(jm)
Link-Codes
[1] OpenSCAP Security Scanner: https://www.open-scap.org/
[2] SCAP Content Repository: https://nvd.nist.gov/ncp/repository/