Kubernetes Hardening
Tools zur Analyse eines Clusters
Kubescape ist ein K8s Open-Source-Tool, das eine Multi-Cloud-K8s-Übersicht bietet, einschließlich Risikoanalyse, Sicherheitskonformität, RBAC-Visualisierung und Scannen von Bildschwachstellen. Kubescape scannt K8s-Cluster, YAML-Dateien und HELM-Charts, erkennt Fehlkonfigurationen gemäß mehrerer Frameworks (wie dem NSA-CISA, MITRE ATT&CK®), Software-Schwachstellen und RBAC-Verstöße (rollenbasierte Zugriffskontrolle) in frühen Phasen des CI/CD-Pipelines, berechnet das Risiko sofort und zeigt Risikotrends im Laufe der Zeit an.
Das Tool kube-bench ist ein Tool, das überprüft, ob Kubernetes sicher bereitgestellt ist, indem es die in der CIS Kubernetes Benchmark dokumentierten Überprüfungen ausführt. Sie können wählen:
kube-bench innerhalb eines Containers ausführen (PID-Namespace mit dem Host teilen)
Einen Container ausführen, der kube-bench auf dem Host installiert und dann kube-bench direkt auf dem Host ausführt
Die neuesten Binärdateien von der Releases-Seite installieren,
Es aus dem Quellcode kompilieren.
Das Tool kubeaudit ist ein Befehlszeilentool und ein Go-Paket zum Auditing von Kubernetes-Clustern hinsichtlich verschiedener Sicherheitsbedenken.
Kubeaudit kann erkennen, ob es in einem Container in einem Cluster ausgeführt wird. In diesem Fall wird versucht, alle Kubernetes-Ressourcen in diesem Cluster zu überprüfen:
Dieses Tool verfügt auch über das Argument autofix
, um automatisch erkannte Probleme zu beheben.
Das Tool kube-hunter sucht nach Sicherheitsschwachstellen in Kubernetes-Clustern. Das Tool wurde entwickelt, um das Bewusstsein und die Sichtbarkeit für Sicherheitsprobleme in Kubernetes-Umgebungen zu erhöhen.
Kubei ist ein Tool zur Schwachstellenanalyse und CIS Docker-Benchmark-Tool, das es Benutzern ermöglicht, eine genaue und sofortige Risikobewertung ihrer Kubernetes-Cluster zu erhalten. Kubei scannt alle Bilder, die in einem Kubernetes-Cluster verwendet werden, einschließlich Bilder von Anwendungspods und Systempods.
KubiScan ist ein Tool zur Überprüfung von Kubernetes-Clustern auf riskante Berechtigungen im Rollenbasierten Zugriffskontrollmodell (RBAC) von Kubernetes.
Mkat ist ein Tool, das entwickelt wurde, um andere Arten von hochriskanten Checks im Vergleich zu anderen Tools zu testen. Es hat hauptsächlich 3 verschiedene Modi:
find-role-relationships
: Ermittelt, welche AWS-Rollen in welchen Pods ausgeführt werden.find-secrets
: Versucht, Geheimnisse in K8s-Ressourcen wie Pods, ConfigMaps und Secrets zu identifizieren.test-imds-access
: Versucht, Pods auszuführen und auf die Metadaten v1 und v2 zuzugreifen. WARNUNG: Dies führt einen Pod im Cluster aus, seien Sie sehr vorsichtig, da Sie dies möglicherweise nicht tun möchten!
Audit des IaC-Codes
Popeye ist ein Dienstprogramm, das live Kubernetes-Cluster scannt und potenzielle Probleme mit bereitgestellten Ressourcen und Konfigurationen meldet. Es bereinigt Ihren Cluster basierend auf dem, was bereitgestellt ist, und nicht auf dem, was auf der Festplatte liegt. Durch Scannen Ihres Clusters erkennt es Fehlkonfigurationen und hilft Ihnen sicherzustellen, dass bewährte Verfahren eingehalten werden, um zukünftige Kopfschmerzen zu vermeiden. Es zielt darauf ab, die kognitive Überlastung zu reduzieren, mit der man konfrontiert ist, wenn man einen Kubernetes-Cluster in freier Wildbahn betreibt. Darüber hinaus meldet es potenzielle Ressourcenüber- oder -unterauslastungen, wenn Ihr Cluster über Kapazität läuft.
KICS findet Sicherheitslücken, Compliance-Probleme und Infrastrukturfehlkonfigurationen in den folgenden Infrastruktur als Code-Lösungen: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM und OpenAPI 3.0-Spezifikationen
Checkov ist ein statisches Code-Analysetool für Infrastruktur als Code.
Es scannt Cloud-Infrastruktur, die mit Terraform, Terraform-Plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless oder ARM-Vorlagen bereitgestellt wurde, und erkennt Sicherheits- und Compliance-Fehlkonfigurationen mithilfe von graphenbasiertem Scannen.
kube-score ist ein Tool, das eine statische Codeanalyse Ihrer Kubernetes-Objektdefinitionen durchführt.
Zur Installation:
Distribution | Befehl / Link |
---|---|
Vorkompilierte Binärdateien für macOS, Linux und Windows | |
Docker |
|
Homebrew (macOS und Linux) |
|
Krew (macOS und Linux) |
|
Tipps
Kubernetes PodSecurityContext und SecurityContext
Sie können den Sicherheitskontext der Pods (mit PodSecurityContext) und der Container, die ausgeführt werden sollen (mit SecurityContext), konfigurieren. Lesen Sie für weitere Informationen:
Kubernetes SecurityContext(s)Kubernetes-API-Härtung
Es ist sehr wichtig, den Zugriff auf den Kubernetes-API-Server zu schützen, da ein bösartiger Akteur mit ausreichenden Berechtigungen diesen missbrauchen und die Umgebung auf vielfältige Weise beschädigen könnte. Es ist wichtig, sowohl den Zugriff (Ursprünge für den Zugriff auf den API-Server whitelisten und jede andere Verbindung ablehnen) als auch die Authentifizierung (nach dem Prinzip des geringsten Privilegs) zu sichern. Und definitiv niemals anonyme Anfragen zulassen.
Gängiger Anfrageprozess: Benutzer oder K8s-Servicekonto –> Authentifizierung –> Autorisierung –> Zulassungssteuerung.
Tipps:
Ports schließen.
Anonymen Zugriff vermeiden.
NodeRestriction; Kein Zugriff von bestimmten Knoten auf die API.
Verhindert im Wesentlichen, dass Kubelets Labels mit einem node-restriction.kubernetes.io/-Präfix hinzufügen/entfernen/aktualisieren. Dieses Labelpräfix ist für Administratoren reserviert, um ihre Knotenobjekte für Zwecke der Arbeitslastisolierung zu kennzeichnen, und Kubelets dürfen Labels mit diesem Präfix nicht ändern.
Ermöglicht Kubelets auch das Hinzufügen/Entfernen/Aktualisieren dieser Labels und Labelpräfixe.
Stellen Sie mit Labels die sichere Arbeitslastisolierung sicher.
Bestimmte Pods vom API-Zugriff ausschließen.
Exponieren Sie den ApiServer nicht im Internet.
Unberechtigten Zugriff RBAC vermeiden.
ApiServer-Port mit Firewall und IP-Whitelisting.
SecurityContext-Härtung
Standardmäßig wird der Root-Benutzer verwendet, wenn ein Pod gestartet wird, wenn kein anderer Benutzer angegeben ist. Sie können Ihre Anwendung in einem sichereren Kontext ausführen, indem Sie eine Vorlage ähnlich der folgenden verwenden:
Allgemeine Härtung
Sie sollten Ihre Kubernetes-Umgebung so häufig wie nötig aktualisieren, um sicherzustellen, dass:
Abhängigkeiten auf dem neuesten Stand sind.
Fehler- und Sicherheitspatches installiert sind.
Versionszyklen: Alle 3 Monate gibt es eine neue Nebenversion -- 1.20.3 = 1(Hauptversion).20(Nebenversion).3(Patch)
Der beste Weg, ein Kubernetes-Cluster zu aktualisieren, ist (von hier):
Aktualisieren Sie die Master-Komponenten in folgender Reihenfolge:
etcd (alle Instanzen).
kube-apiserver (alle Steuerungsebene-Hosts).
kube-controller-manager.
kube-scheduler.
Cloud-Controller-Manager, wenn Sie einen verwenden.
Aktualisieren Sie die Worker-Komponenten wie kube-proxy, kubelet.
Last updated