Kubernetes Hardening

Support HackTricks

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-Visualizer 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.

kubescape scan --verbose

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 (mit gemeinsamem PID-Namespace mit dem Host) ausführen

  • 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 prüfen.

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 prüfen:

kubeaudit all

Dieses Tool hat auch das Argument autofix, um erkannt Probleme automatisch 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.

kube-hunter --remote some.node.com

Kubei ist ein Tool zur Schwachstellenscannung und zur CIS Docker-Benchmark, das es Benutzern ermöglicht, eine genaue und sofortige Risikobewertung ihrer Kubernetes-Cluster zu erhalten. Kubei scannt alle Images, die in einem Kubernetes-Cluster verwendet werden, einschließlich der Images von Anwendungs-Pods und System-Pods.

KubiScan ist ein Tool zum Scannen von Kubernetes-Clustern auf riskante Berechtigungen im rollenbasierten Zugriffskontrollmodell (RBAC) von Kubernetes.

Mkat ist ein Tool, das entwickelt wurde, um andere Arten von Hochrisikoprüfungen im Vergleich zu anderen Tools 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!

Audit IaC Code

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 Verfahren 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 Über-/Unterallokationen von Ressourcen 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 Tool zur statischen Codeanalyse 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 graphbasiertem Scannen.

kube-score ist ein Tool, das eine statische Codeanalyse Ihrer Kubernetes-Objektdokumentationen durchführt.

Um zu installieren:

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. Für weitere Informationen lesen Sie:

Kubernetes API-Härtung

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 zu missbrauchen 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 Berechtigung) 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 Arbeitslastisolationszwecke zu erfüllen, 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 auf RBAC.

  • ApiServer-Port mit Firewall und IP-Whitelist.

Härtung des SecurityContext

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:

apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: sec-ctx-vol
emptyDir: {}
containers:
- name: sec-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
securityContext:
runAsNonRoot: true
volumeMounts:
- name: sec-ctx-vol
mountPath: /data/demo
securityContext:
allowPrivilegeEscalation: true

Allgemeine Härtung

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, 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.

Support HackTricks

Last updated