Kubernetes Hardening
Last updated
Last updated
Lernen & üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kubescape ist ein K8s Open-Source-Tool, das eine Multi-Cloud-K8s-Einzelansicht bietet, einschließlich Risikoanalyse, Sicherheitskonformität, RBAC-Visualisierung und Scannen von Bildanfälligkeiten. Kubescape scannt K8s-Cluster, YAML-Dateien und HELM-Diagramme, erkennt Fehlkonfigurationen gemäß mehreren Rahmenwerken (wie dem NSA-CISA, MITRE ATT&CK®), Softwareanfälligkeiten und RBAC (role-based-access-control)-Verstöße in frühen Phasen der CI/CD-Pipeline, berechnet sofort den Risikowert 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 im CIS Kubernetes Benchmark dokumentierten Prüfungen durchführt. Sie können wählen, ob Sie:
kube-bench aus einem Container heraus 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ühren
die neuesten Binärdateien von der Releases-Seite installieren,
es aus dem Quellcode kompilieren.
Das Tool kubeaudit ist ein Befehlszeilentool und ein Go-Paket, um Kubernetes-Cluster auf verschiedene Sicherheitsbedenken zu auditieren.
Kubeaudit kann erkennen, ob es innerhalb eines Containers in einem Cluster ausgeführt wird. Wenn ja, wird es versuchen, alle Kubernetes-Ressourcen in diesem Cluster zu auditieren:
Dieses Tool hat auch das Argument autofix
, um automatisch erkannte Probleme zu beheben.
Das Tool kube-hunter sucht nach Sicherheitsanfälligkeiten 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 Werkzeug zur Schwachstellenscannung und CIS Docker-Benchmark, das Benutzern eine genaue und sofortige Risikobewertung ihrer Kubernetes-Cluster ermöglicht. Kubei scannt alle Bilder, die in einem Kubernetes-Cluster verwendet werden, einschließlich Bilder von Anwendungs-Pods und System-Pods.
KubiScan ist ein Werkzeug zum Scannen von Kubernetes-Clustern auf riskante Berechtigungen im rollenbasierten Zugriffskontrollmodell (RBAC) von Kubernetes.
Mkat ist ein Werkzeug, das entwickelt wurde, um andere Arten von Hochrisikoprüfungen im Vergleich zu anderen Werkzeugen zu testen. Es hat hauptsächlich 3 verschiedene Modi:
find-role-relationships
: Der herausfindet, welche AWS-Rollen in welchen Pods ausgeführt werden
find-secrets
: Der versucht, Geheimnisse in K8s-Ressourcen wie Pods, ConfigMaps und Secrets zu identifizieren.
test-imds-access
: Der versucht, Pods auszuführen und auf die Metadaten v1 und v2 zuzugreifen. WARNUNG: Dies wird einen Pod im Cluster ausführen, seien Sie sehr vorsichtig, da Sie dies möglicherweise nicht tun möchten!
Popeye ist ein Dienstprogramm, das live Kubernetes-Cluster scannt und potenzielle Probleme mit bereitgestellten Ressourcen und Konfigurationen meldet. Es bereinigt Ihr 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 Praktiken vorhanden sind, um zukünftige Kopfschmerzen zu vermeiden. Es zielt darauf ab, die kognitive Überlastung zu reduzieren, die man beim Betrieb eines Kubernetes-Clusters in der Wildnis hat. Darüber hinaus, wenn Ihr Cluster einen Metric-Server verwendet, meldet es potenzielle Ressourcenüber-/unterzuweisungen und versucht, Sie zu warnen, falls Ihr Cluster die Kapazität erschöpft.
KICS findet Sicherheitsanfälligkeiten, Compliance-Probleme und Infrastrukturfehlkonfigurationen in den folgenden Infrastructure as Code-Lösungen: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM und OpenAPI 3.0-Spezifikationen.
Checkov ist ein statisches Codeanalysewerkzeug für Infrastructure-as-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 graphbasierter Scannung.
kube-score ist ein Werkzeug, das eine statische Codeanalyse Ihrer Kubernetes-Objektdokumentationen durchführt.
Um zu installieren:
Vorgefertigte Binärdateien für macOS, Linux und Windows
Docker
docker pull zegl/kube-score
(Docker Hub)
Homebrew (macOS und Linux)
brew install kube-score
Krew (macOS und Linux)
kubectl krew install score
Sie können den Sicherheitskontext der Pods (mit PodSecurityContext) und der Container, die ausgeführt werden sollen (mit SecurityContext), konfigurieren. Für weitere Informationen lesen Sie:
Kubernetes SecurityContext(s)Es ist sehr wichtig, den Zugang zum Kubernetes Api Server zu schützen, da ein böswilliger Akteur mit ausreichenden Berechtigungen in der Lage sein könnte, ihn auszunutzen und die Umgebung auf viele Arten zu schädigen. Es ist wichtig, sowohl den Zugang (Whitelist-Ursprünge für den Zugriff auf den API-Server und alle anderen Verbindungen abzulehnen) als auch die Authentifizierung (nach dem Prinzip der geringsten Privilegien) zu sichern. Und auf keinen Fall anonyme Anfragen erlauben.
Allgemeiner Anfrageprozess: Benutzer oder K8s ServiceAccount –> 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 Label-Präfix ist für Administratoren reserviert, um ihre Node-Objekte zu Labeln, um Arbeitslastisolierung zu ermöglichen, und Kubelets wird nicht erlaubt, Labels mit diesem Präfix zu ändern.
Und außerdem erlaubt es Kubelets, diese Labels und Label-Präfixe hinzuzufügen/zu entfernen/zu aktualisieren.
Stellen Sie mit Labels die sichere Arbeitslastisolierung sicher.
Verhindern Sie, dass bestimmte Pods auf die API zugreifen.
Vermeiden Sie die Exposition des ApiServers zum Internet.
Vermeiden Sie unbefugten Zugriff RBAC.
ApiServer-Port mit Firewall und IP-Whitelist.
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 verwenden, die der folgenden ähnlich ist:
Sie sollten Ihre Kubernetes-Umgebung so häufig wie nötig aktualisieren, um Folgendes zu gewährleisten:
Abhängigkeiten auf dem neuesten Stand.
Fehler- und Sicherheitsupdates.
Release-Zyklen: Alle 3 Monate gibt es ein neues Minor-Release -- 1.20.3 = 1(Haupt).20(Minor).3(Patch)
Der beste Weg, um ein Kubernetes-Cluster zu aktualisieren, ist (von hier):
Aktualisieren Sie die Master-Node-Komponenten in folgender Reihenfolge:
etcd (alle Instanzen).
kube-apiserver (alle Control-Plane-Hosts).
kube-controller-manager.
kube-scheduler.
cloud controller manager, falls Sie einen verwenden.
Aktualisieren Sie die Worker-Node-Komponenten wie kube-proxy, kubelet.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)