Kubernetes Hardening
Tools zur Analyse eines Clusters
Kubescape ist ein K8s Open-Source-Tool, das eine Multi-Cloud-K8s-Gesamtü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 Risikoscore 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 innerhalb eines Containers 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 zur Überprüfung der CIS Docker-Benchmark, 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 des Kubernetes-Clusters auf riskante Berechtigungen im Rollenbasierten Zugriffskontrollmodell (RBAC) von Kubernetes.
Audit des IaC-Codes
Popeye ist ein Dienstprogramm, das den 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 das 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 einen Kapazitätsengpass hat, falls Ihr Cluster einen Metrik-Server verwendet.
KICS findet Sicherheitslücken, Compliance-Probleme und Infrastrukturfehler in den folgenden Lösungen für Infrastruktur als Code: 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 Code-Analyse 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:
pageKubernetes 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 (Whitelist von Ursprüngen zum Zugriff auf den API-Server und Ablehnung jeglicher anderer Verbindung) als auch die Authentifizierung zu sichern (nach dem Prinzip des geringsten Privilegs). Und definitiv keine anonymen 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. Dieser Label-Prä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.
Und erlaubt es auch Kubelets, diese Labels und Label-Präfixe hinzuzufügen/entfernen/aktualisieren.
Stellen Sie mit Labels die sichere Arbeitslastisolierung sicher.
Bestimmte Pods vom API-Zugriff ausschließen.
Exposition des ApiServers ins Internet vermeiden.
Unberechtigten Zugriff RBAC vermeiden.
ApiServer-Port mit Firewall und IP-Whitelisting sichern.
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 eingespielt sind.
Versionszyklen: Alle 3 Monate gibt es ein neues Minor-Release -- 1.20.3 = 1(Major).20(Minor).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-Node-Komponenten wie kube-proxy, kubelet.
Last updated