Przemyslaw Koch
Mehr Kubernetes-Sicherheit zum Schutz für Cloud-Instanzen
Immer wieder gelingt es Angreifern, über mangelhaft geschützte Kubernetes-Konsolen in Cloud-Umgebungen einzudringen und dort dann etwa Schad-Software zu verstecken.
Nahezu jeden Monat erscheinen immer wieder zu Berichten über Cloud-Umgebungen, die nicht sicher genug sind und die das Opfer von Datendiebstählen wurden. In dieser Situation kommt es vielen Beobachtern schon nahezu erfrischend vor, wenn sie wie in diesem Fall keine Neuigkeiten über schlecht gesicherte S3-Buckets (Simple Storage Service) bei Amazon Web Services (AWS) lesen müssen.
Mitarbeiter von RedLock haben herausgefunden, dass viele administrative Konsolen bei AWS, Microsoft Azure und der Google Cloud Platform nicht durch Passwörter geschützt waren, so dass Hacker leicht darauf zugreifen konnten. Dabei bemerkten die Sicherheitsforscher in zumindest einem Fall, dass Angreifer heimlich in einem gehackten Container nach Bitcoins schürften und die betroffenen Cloud-Instanzen in aus der Ferne gesteuerte Bots verwandelten.
Es gibt mehrere Gründe, warum es dazu kommen konnte. Die Sicherheit von Kubernetes selbst hat jedoch nur wenig damit zu tun. Kubernetes wurde schlicht übernommen, um auf die damit verwalteten Container zuzugreifen und sie zu missbrauchen. Die größten Probleme dabei waren der Mangel an einem sicheren Konfigurationsmanagement sowie zu wenig Überwachung und zu wenige Alerts.
Wie sich die Sicherheit von Kubernetes verbessern lässt
Es gibt mehrere Möglichkeiten, um die Sicherheit von Kubernetes zu erhöhen. Der wichtigste Punkt ist dabei ein zuverlässiger Schutz der Haupt-Konsole durch eine solide Authentifizierung, die auf starken Passwörtern und Multifaktor-Authentifizierung basiert. Dabei sollte ein separater Login-Server für den Anmeldeprozess der Admins genutzt werden. Der direkte Einsatz von Kubernetes-Konsolen im Internet ist niemals eine gute Idee. Fatal ist es zudem, wenn allzu einfache oder gar keine Passwörter genutzt werden, wie es laut RedLock immer wieder vorkommt. Teilweise sollen auch noch die Default-Zugänge aktiviert gewesen sein.
Neben einem streng kontrollierten Zugriff auf die Kubernetes-Konsole gibt es weitere Maßnahmen, die IT-Verantwortliche treffen können, um die Sicherheit ihrer Cloud-Umgebungen zu erhöhen:
- Unternehmen sollten die stärkste Authentifizierungslösung für Kubernetes verwenden, die ihnen zur Verfügung steht. Ideal sind zusätzliche Directory-Services und ein weiterer Faktor zur Authentifizierung wie Zertifikate. Kubernetes selbst bietet verschiedene Optionen an. Sie reichen vom einfachen Benutzername/Passwort-System bis zu ausgefeilteren Lösungen auf Basis von OpenID Connect. Mehr Informationen über die Authentifizierungsmöglichkeiten finden sich auf der Webseite von Kubernetes.
- Es sollten nur vertrauenswürdige Images verwendet werden, die bereits standardmäßig weitgehend sicher konfiguriert sind. Außerdem sollte der Status aller eingesetzten Images kontinuierlich mit Hilfe von Scannern und lokalen Tools überprüft werden. Zu diesem Zweck und für die Kontrolle von Containern gibt es viele kommerzielle und auch kostenfreie Open-Source-Tools. Bei den von RedLock beschriebenen kompromittierten Systemen bemerkten die Admins nämlich nicht, dass heimlich Mining-Tools für Bitcoin in ihren Containern hochgeladen und installiert wurden. Dieser Punkt belegt, wie wenig Wert sie auf die Kontrolle und Überwachung ihrer Container legten.
- Container mit Namespaces sollten zusätzlich mit Hilfe so genannter administrativer Boundaries geschützt werden. Das sorgt dafür, dass Ressourcen vor bestimmten Gruppen verborgen werden können, so dass unterschiedliche Authentifizierungskontrollen genutzt werden können, um die Zugriffe zu verwalten. Darüber hinaus sollten Pods und Container so eingerichtet werden, dass sie im laufenden Betrieb möglichst wenig Rechte benötigen.
- Der Verbrauch an CPU und Arbeitsspeicher sollte limitiert werden. Standardmäßig ist dies nicht der Fall, so dass alle mit Kubernetes verwalteten Container im Prinzip unbegrenzt Rechenkraft und RAM anfordern können. Diese zusätzlichen Ressourcen können dann für DoS-Attacken (Denial of Service) oder das Schürfen von Bitcoins missbraucht werden.
- Unterschiedliche Pods, Dienste und Container sollten, wo immer möglich, durch eine Segmentierung des Netzwerks voneinander getrennt werden.
- Alle Vorkommnisse in der Umgebung sollten genauestens aufgezeichnet werden. Kubernetes und andere Container-Technologien wie Docker bieten viele Logging-Funktionen auf dem Node- und Cluster-Level sowie im administrativen Bereich. Sowohl Security-, Operations- als auch Entwicklungs-Teams profitieren von umfangreichen Protokollen, die alle Aktivitäten und Ereignisse in der Umgebung exakt aufzeichnen. Die meisten dieser Logs sind von sich aus Syslog-kompatibel oder lassen sich in einem Format wie JSON Diese Daten können dann leicht analysiert und in viele verbreitete Event-Managementsysteme integriert werden.
Zusätzlich zu diesen Empfehlungen für Kubernetes sollten Cloud-Nutzer auch bei der Abrechnung der von ihnen genutzten Dienste bestimmte Grenzen setzen, die dem normalen Verbrauch entsprechen. Wenn diese Begrenzungen überschritten werden, sollten automatisch Warnmeldungen verschickt werden. Aber selbst, wenn eine Cloud-Instanz erfolgreich gehackt wurde, gibt es keine Entschuldigung dafür, wenn dieser Zustand über einen längeren Zeitraum hinweg nicht bemerkt wird. Viele der größeren Cloud-Provider bieten zudem weitere Möglichkeiten, um ihre Umgebungen als Ganzes zu überwachen.
Folgen Sie SearchSecurity.de auch auf Twitter, Google+, Xing und Facebook!