Kubernetes Hardening

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

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.

kubescape scan --verbose

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:

kubeaudit all

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.

kube-hunter --remote some.node.com

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:

DistributionBefehl / Link

Vorkompilierte 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

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:

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

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated