20.05.2021

IT-Grundschutz Baustein für Consul

BSI IT-Grundschutz Baustein Entwurf

Wir im Bundesamt für Soziale Sicherung haben in den vergangenen 3,5 Jahren unsere gesamte Anwendungslandschaft von klassischen VMs und Application Servern mit mehreren Applikationen hin zu einer dynamischen verteilten Infrastruktur auf Basis von Container-Technologien entwickelt.

Einer der ersten Bausteine dieser inzwischen vollständigen Cloud-Infrastruktur war Hashicorp Consul, welches zu Beginn zunächst als Service-Discovery zum Einsatz kam, gefolgt von Service-Configuration und zuletzt Service-Mesh Funktionalitäten. Für dieses Werkzeug ist dieser Baustein Entwurf, der gerne kommentiert werden kann. Eure Anregungen schickt ihr bitte an devSupport@bas.bund.de!

“Service-Discovery, Service-Configuration und Service-Mesh mit Hashicorp Consul”

Beschreibung

Einleitung

In statischen Infrastrukturen werden Servern und Diensten feste IP Adressen zugewiesen. Per DNS ist der Server anhand seiner IP oder eines Domänennamens auffindbar. In dynamischen Infrastrukturen, in denen Dienste in Containern auf beliebigen Hosts ggf. mit automatisch zugewiesenen Ports (neu-)starten können nach einem Ausfall oder auf Grund von Skalierungsanforderungen, wird für das Auffinden eine sogenannte Service-Discovery eingesetzt. Dabei melden sich Anwendungen und Dienste beim Start an einer zentralen Registry an. Die Kommunikation übernimmt dabei ein Client Agent, der auf jedem an der Kommunikation beteiligten Server installiert sein muss. Ein Dienst, der einen anderen Dienst auffinden möchte, fragt seinen lokalen Client Agent nach dieser bestimmten Identität. Der Client Agent kommuniziert nun mit der zentralen Registry, um die entsprechende (auch aktuell ansprechbare) Adresse zu erfahren. Im Anschluss kann der Client-Agent des Anfragenden direkt mit dem Client-Agent des Zielsystems kommunizieren.

Zielsetzung

Ziel des Bausteins ist der Schutz einer Consul Instanz und der Informationen, die durch Consul bereitgestellt oder im weitesten Sinne damit verarbeitet werden.

Abgrenzung

In diesem Baustein werden die für eine Service-Discovery spezifischen Gefährdungen und Anforderungen betrachtet. Der Betrieb erfordert entweder einen Server oder Container, deren allgemeine Sicherheitsempfehlungen zusätzlich beachtet werden müssen (siehe z.B. SYS.1.3 Server unter Linux und Unix, SYS.1.2.2 Windows Server 2012 bzw. SYS.1.6 Container). Zusätzlich sind die Maßnahmen aus CON.3 Datensicherungskonzept, sowie OPS.1.1.3.A15 Regelmäßige Aktualisierung von IT-Systemen und Software zu beachten.

Gefährdungslage

Remote Code Execution

Ein Angreifer kann mit der Consul Exec-Funktion beliebige Befehle im Cluster ausführen, falls diese im default deaktivierte Funktionalität aktiviert, aber der Zugriff nicht mit ACLs abgesichert ist.

Unautorisierter Zugriff auf Daten

Alle Anfragen müssen authentifiziert und autorisiert sein, um unautorisierten Zugriff auf Daten zu verhindern. Dies erfordert, dass ACLs im Cluster mit einem default deny aktiviert sind. Des Weiteren kann ein Angreifer mit Zugriffsrechten auf Daten- oder Konfigurationsverzeichnisse Zugriff auf sensible Daten oder Tokens erhalten.

Abhören von Agent-zu-Agent, Agent-zu-CA oder Service-zu-Service Kommunikation

Ist die Kommunikation zwischen den Agents, Services oder dem Consul-Server und dem konfigurierten Zertifizierungsstellenanbieter für Connect nicht verschlüsselt, kann die Übertragung abgehört werden.

Anforderungen

Basis-Anforderungen

APP.bd.4.A1 Sensible Daten in Konfigurationen

Beim Einsatz von zentralen Konfigurationen DÜRFEN KEINE sensible Daten wie Zugangsdaten im Klartext abgelegt sein.

APP.bd.4.A2 Hochverfügbarkeit

Da es sich um eine zentrale Komponente handelt, MUSS der Betrieb hochverfügbar ausgelegt werden (Cluster). Bei Virtualisierung SOLLTE darauf geachtet werden, dass die virtuellen Maschinen auf unterschiedlichen Hosts betrieben werden. Bei Verwendung von Container-Technologien SOLLTEN geeignete restart-on-failure Mechanismen konfiguriert sein.

APP.bd.4.A3 Root Rechte des Agents

Der Consul Agents MUSS NICHT mit Root Rechten laufen, sondern benötigt lediglich Zugriff auf ein Datenverzeichnis.

Standard-Anforderungen

APP.bd.4.A4 Verwendung von TLS

Die Kommunikation zwischen Agents und dem Server SOLLTE verschlüsselt erfolgen. Dabei SOLLTE eine eigene CA verwendet werden.

APP.bd.4.A5 Zugriffsbeschränkung durch ACLs

Es SOLLTEN ACLs (Access Control Lists) konfiguriert werden, um eine unautorisierte Nutzung der UI oder API zu unterbinden.

APP.bd.4.A6 Überwachung der Komponenten

Die Komponenten SOLLTEN geeignet überwacht werden. Dazu zählt die Einbindung in zentrale Monitoring- und Log-Management-Dienste. Es SOLLTE dabei vor allem die Verfügbarkeit, die Ressourcenauslastung und Fehlerzustände überwacht und erkannt werden.

APP.bd.4.A7 Versionsverwaltung für Konfigurationen

Notwendige Konfigurationen SOLLTEN nicht manuell erfolgen, sondern mit Hilfe von Konfigurationsdateien. Diese Konfigurationsdateien SOLLTEN an einer zentralen Stelle verfügbar sein sowie in die Versionsverwaltung und die Datensicherung eingebunden werden.

APP.bd.4.A8 Gossip Encryption

Die verschlüsselte Gossip Kommunikation SOLLTE NICHT deaktiviert werden. Die notwendigen Schlüssel SOLLTEN regelmäßig rotiert werden.

APP.bd.4.A9 Script Checks deaktivieren

Ist die HTTP-API der Consul Agents aktiviert, SOLLTEN Script Checks deaktiviert sein, um eine Remote Code Ausführung zu verhindern.

APP.bd.4.A10 Remote Execution deaktivieren

Die Möglichkeit der Ausführung von Remote Code über Consul exec SOLLTE deaktiviert bleiben.

APP.bd.4.A11 Rotieren von Credentials

Es SOLLTEN kurzlebige und regelmäßig rotierende Credentials verwendet werden für ACL Tokens, Zertifikate und Gossip Keys.

APP.bd.4.A12 Cipher Suites

Es SOLLTEN die aktuell empfohlenen Cipher Suites konfiguriert werden. Für TLS 1.3 gelten aktuell alle hinterlegten Cipher Suites als sicher und müssen daher nicht explizit konfiguriert werden.

APP.bd.4.A13 HTTP Response Header

Es SOLLTEN zusätzliche Security Header für HTTP API Antworten konfiguriert werden wie z.B. X-XSS-Protection.

APP.bd.4.A14 Geeignete Verbindungs-Limits

Es SOLLTEN für die entsprechende Umgebung geeignete Verbindungs-Limits konfiguriert werden, wie z.B. gleichzeitige Zugriffe des selben Clients, Timeouts oder maximale Verbindungen.

APP.bd.4.A15 Service-zu-Service Regeln

Die Kommunikation von Services unter Connect SOLLTEN per Intentions eingeschränkt werden auf zugelassene Kommunikationsbeziehungen.

APP.bd.4.A16 Automatisiertes Ausrollen / Widerrufen der Konfiguration

Die Konfiguration SOLLTE möglichst automatisiert in das laufende Cluster übertragen werden, um wiederholbare Prozesse zu etablieren und menschliche Fehler zu reduzieren.

APP.bd.4.A17 Infrastrukturkomponenten verwenden eigene Zugänge mit eigenen Zugriffsrechten

Für Infrastruktur-Komponenten (z.B. TLS-Proxies oder Anwendungsverteiler (application scheduler)) SOLLTEN dezidierte Zugänge verwendet und explizite Zugriffsrechte definiert werden

Anforderungen bei erhöhtem Schutzbedarf

APP.bd.4.A18 Verwendung von mTLS

Kommunikations-Anfragen an den Consul Agent SOLLTEN authentifiziert und autorisiert werden per mTLS, zusätzlich zum Einsatz von ACLs.

APP.bd.4.A19 Feingranulare ACL Policies

Die in dem ACL-System konfigurierten Policies SOLLTEN möglichst feingranular sein, um das Prinzip von least privileged zu unterstützen.

APP.bd.4.A20 Aktives Widerrufen von Zugriffsrechten

Die Zugriffsrechte für menschliche Nutzer in Consul SOLLTEN aktiv widerrufen werden, sobald sich der Nutzer nicht mehr authentifiziert ist oder deaktiviert wurde.

Trulli
Kreuzreferenztabelle zu elementaren Gefährdungen

Bild von Joseph Mucira auf Pixabay



Zurück zum Blog