Kubernetes-Härtung

Reading time: 9 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Werkzeuge zur Analyse eines Clusters

**Steampipe - Kubernetes Compliance

Es wird mehrere Compliance-Prüfungen über den Kubernetes-Cluster durchführen. Es umfasst Unterstützung für CIS, National Security Agency (NSA) und Cybersecurity and Infrastructure Security Agency (CISA) Cybersecurity-Technikbericht zur Härtung von Kubernetes.

bash
# Install Steampipe
brew install turbot/tap/powerpipe
brew install turbot/tap/steampipe
steampipe plugin install kubernetes

# Start the service
steampipe service start

# Install the module
mkdir dashboards
cd dashboards
powerpipe mod init
powerpipe mod install github.com/turbot/steampipe-mod-kubernetes-compliance

# Run the module
powerpipe server

Kubescape

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.

bash
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
kubescape scan --verbose

Popeye

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

Kube-bench

Das Tool kube-bench ist ein Werkzeug, das überprüft, ob Kubernetes sicher bereitgestellt ist, indem es die in dem CIS Kubernetes Benchmark dokumentierten Prüfungen durchführt.
Sie können wählen, um:

  • kube-bench aus einem Container heraus auszuführen (PID-Namespace mit dem Host teilen)
  • einen Container auszuführen, der kube-bench auf dem Host installiert, und dann kube-bench direkt auf dem Host auszuführen
  • die neuesten Binärdateien von der Releases-Seite zu installieren,
  • es aus dem Quellcode zu kompilieren.

Kubeaudit

[VERALTET] Das Tool kubeaudit ist ein Befehlszeilenwerkzeug und ein Go-Paket, um Kubernetes-Cluster auf verschiedene Sicherheitsbedenken zu überprü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 überprüfen:

kubeaudit all

Dieses Tool hat auch das Argument autofix, um erfasste Probleme automatisch zu beheben.

Kube-hunter

[VERALTET] 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.

bash
kube-hunter --remote some.node.com

Trivy

Trivy hat Scanner, die nach Sicherheitsproblemen suchen, und Ziele, wo sie diese Probleme finden können:

  • Container-Image
  • Dateisystem
  • Git-Repository (remote)
  • Virtuelles Maschinen-Image
  • Kubernetes

Kubei

[Sieht unmaintained aus]

Kubei ist ein Tool zur Schwachstellenscannung und 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

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

Managed Kubernetes Auditing Toolkit

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

KICS

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

Checkov ist ein statisches Codeanalyse-Tool 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 Analyse.

Kube-score

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

Um zu installieren:

DistributionCommand / Link
Vorgefertigte Binärdateien für macOS, Linux und WindowsGitHub-Releases
Dockerdocker 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. Für weitere Informationen lesen Sie:

Kubernetes SecurityContext(s)

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 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 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.
  • https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
  • 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.

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:

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

Kubernetes-Überwachung & Sicherheit:

  • Kyverno Policy Engine
  • Cilium Tetragon - eBPF-basierte Sicherheitsbeobachtung und Laufzeitanwendung
  • Netzwerk-Sicherheitsrichtlinien
  • Falco - Laufzeitsicherheitsüberwachung & -erkennung

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks