Kubernetes Hardening

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Alati za analizu klastera

Steampipe - Kubernetes Compliance

Sprovodi nekoliko provera usklađenosti nad Kubernetes klasterom. Pruža podršku za smernice CIS, kao i tehničke izveštaje National Security Agency (NSA) i Cybersecurity and Infrastructure Security Agency (CISA) koji se tiču hardening-a Kubernetes-a.

# 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 je open-source alat za K8s koji obezbeđuje multi-cloud K8s jedinstveni pregled (single pane of glass), uključujući analizu rizika, proveru bezbednosne usklađenosti, RBAC vizualizator i skeniranje ranjivosti image-ova. Kubescape skenira K8s klastere, YAML files, and HELM charts, otkrivajući pogrešne konfiguracije u skladu sa više framework-a (kao što su NSA-CISA , MITRE ATT&CK®), softverske ranjivosti i RBAC (role-based-access-control) prekršaje u ranim fazama CI/CD pipeline-a, odmah izračunava ocenu rizika i prikazuje trendove rizika tokom vremena.

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

Popeye

Popeye je utilitet koji skenira aktivni Kubernetes klaster i izveštava o potencijalnim problemima sa deployovanim resursima i konfiguracijama. On sanitizuje vaš klaster na osnovu onoga što je deployovano, a ne onoga što stoji na disku. Skeniranjem klastera otkriva pogrešne konfiguracije i pomaže vam da osigurate primenu najboljih praksi, čime se sprečavaju budući problemi. Cilj mu je da smanji kognitivni _over_load sa kojim se susrećete pri upravljanju Kubernetes klasterom u prirodnom okruženju. Nadalje, ako vaš klaster koristi metric-server, izveštava o potencijalnim over/under alokacijama resursa i pokušava da vas upozori ukoliko vaš klaster ostane bez kapaciteta.

Kube-bench

Alat kube-bench proverava da li je Kubernetes deployovan sigurno tako što izvršava provere dokumentovane u [CIS Kubernetes Benchmark].
Možete odabrati da:

  • pokrenete kube-bench iz kontejnera (deljenjem PID namespace sa hostom)
  • pokrenete kontejner koji instalira kube-bench na host, a zatim pokrenete kube-bench direktno na hostu
  • instalirate najnovije binarne fajlove sa Releases page,
  • kompajlirate ga iz izvornog koda.

Kubeaudit

[DEPRECATED] Alat kubeaudit je alat komandne linije i Go paket za audit Kubernetes clusters u vezi sa raznim bezbednosnim pitanjima.

Kubeaudit može da otkrije da li se izvršava unutar kontejnera u klasteru. Ako jeste, pokušaće da audituje sve Kubernetes resurse u tom klasteru:

kubeaudit all

Ovaj alat takođe ima argument autofix za automatsko otklanjanje otkrivenih problema.

Kube-hunter

[ZASTARELO] Alat kube-hunter traži sigurnosne slabosti u Kubernetes klasterima. Alat je razvijen da poveća svest i vidljivost sigurnosnih problema u Kubernetes okruženjima.

kube-hunter --remote some.node.com

Trivy

Trivy ima skenere koji traže sigurnosne probleme i ciljeve u kojima može da ih pronađe:

  • Image kontejnera
  • Fajl sistem
  • Git repozitorijum (remote)
  • Image virtuelne mašine
  • Kubernetes

Kubei

[Izgleda neodržavano]

Kubei je alat za skeniranje ranjivosti i CIS Docker benchmark koji korisnicima omogućava tačnu i trenutnu procenu rizika njihovih Kubernetes klastera. Kubei skenira sve image-e koji se koriste u Kubernetes klasteru, uključujući image-e aplikacionih podova i sistemskih podova.

KubiScan

KubiScan je alat za skeniranje Kubernetes klastera radi pronalaženja rizičnih dozvola u Kubernetes-ovom Role-based access control (RBAC) modelu autorizacije.

Managed Kubernetes Auditing Toolkit

Mkat je alat napravljen da testira druge vrste visokorizičnih provera u poređenju sa ostalim alatima. Uglavnom ima 3 različita režima rada:

  • find-role-relationships: Koji će otkriti koje AWS role se izvršavaju u kojim podovima
  • find-secrets: Koji pokušava da identifikuje tajne u K8s resursima kao što su Pods, ConfigMaps i Secrets.
  • test-imds-access: Koji će pokušati da pokrene podove i pokuša da pristupi metadata v1 i v2. UPOZORENJE: Ovo će pokrenuti pod u klasteru — budite veoma oprezni jer možda ne želite da to uradite!

Revizija IaC koda

KICS

KICS pronalazi sigurnosne ranjivosti, probleme usklađenosti i pogrešne konfiguracije infrastrukture u sledećim Infrastructure as Code rešenjima: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, i OpenAPI 3.0 specifikacijama

Checkov

Checkov je alat za statičku analizu koda za infrastructure-as-code.

Skenira cloud infrastrukturu postavljenu korišćenjem Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless ili ARM Templates i detektuje sigurnosne i usklađenosti pogrešne konfiguracije koristeći skeniranje zasnovano na grafu.

Kube-score

kube-score je alat koji vrši statičku analizu koda vaših Kubernetes definicija objekata.

To install:

DistribucijaKomanda / Link
Pre-built binarni paketi za macOS, Linux, i WindowsGitHub releases
Dockerdocker pull zegl/kube-score (Docker Hub)
Homebrew (macOS i Linux)brew install kube-score
Krew (macOS i Linux)kubectl krew install score

Tools to analyze YAML files & Helm Charts

Kube-linter

# Install Kube-linter
brew install kube-linter

# Run Kube-linter
## lint ./path/to/yaml/or/chart

Checkov

# Install Checkov
pip install checkov

# Run Checkov
checkov -d ./path/to/yaml/or/chart

kube‑score

# Install kube-score
brew install kube-score

# Run kube-score
kube-score score ./path/to/yaml
# or
helm template chart /path/to/chart | kube-score score -
# or if the chart needs some values
helm template chart /path/to/chart \
--set 'config.urls[0]=https://dummy.backend.internal' \
| kube-score score -

Kubesec

# Install Kubesec
## Download from https://github.com/controlplaneio/kubesec/releases

# Run Kubesec in a yaml
kubesec scan ./path/to/yaml
# or
helm template chart /path/to/chart | kubesec scan -
# or if the chart needs some values
helm template chart /path/to/chart \
--set 'config.urls[0]=https://dummy.backend.internal' \
| kubesec scan -

Skeniranje problema sa zavisnostima

Skeniranje slika

#!/bin/bash
export images=$(kubectl get pods --all-namespaces -o jsonpath="{range .items[]}{.spec.containers[].image}{'\n'}{end}" | sort | uniq)
echo "All images found: $images"
echo ""
echo ""
for image in $images; do
# Run trivy scan and save JSON output
trivy image --format json --output /tmp/result.json --severity HIGH,CRITICAL "$image" >/dev/null 2>&1
# Extract binary targets that have vulnerabilities
binaries=$(jq -r '.Results[] | select(.Vulnerabilities != null) | .Target' /tmp/result.json)
if [ -n "$binaries" ]; then
echo "- **Image:** $image"
while IFS= read -r binary; do
echo "  - **Binary:** $binary"
jq -r --arg target "$binary" '
.Results[] | select(.Target == $target) | .Vulnerabilities[] |
"    - **\(.Title)** (\(.Severity)): Affecting `\(.PkgName)` fixed in version `\(.FixedVersion)` (current version is `\(.InstalledVersion)`)."
' /tmp/result.json
done <<< "$binaries"
echo ""
echo ""
echo ""
fi
done

Skeniraj Helm charts

#!/bin/bash
# scan-helm-charts.sh
# This script lists all Helm releases, renders their manifests,
# and then scans each manifest with Trivy for configuration issues.

# Check that jq is installed
if ! command -v jq &>/dev/null; then
echo "jq is required but not installed. Please install jq and rerun."
exit 1
fi

# List all helm releases and extract namespace and release name
echo "Listing Helm releases..."
helm list --all-namespaces -o json | jq -r '.[] | "\(.namespace) \(.name)"' > helm_releases.txt

# Check if any releases were found
if [ ! -s helm_releases.txt ]; then
echo "No Helm releases found."
exit 0
fi

# Loop through each Helm release and scan its rendered manifest
while IFS=" " read -r namespace release; do
echo "---------------------------------------------"
echo "Scanning Helm release '$release' in namespace '$namespace'..."
# Render the Helm chart manifest
manifest_file="${release}-manifest.yaml"
helm get manifest "$release" -n "$namespace" > "$manifest_file"
if [ $? -ne 0 ]; then
echo "Failed to get manifest for $release in $namespace. Skipping."
continue
fi
# Scan the manifest with Trivy (configuration scan)
echo "Running Trivy config scan on $manifest_file..."
trivy config --severity MEDIUM,HIGH,CRITICAL "$manifest_file"
echo "Completed scan for $release."
done < helm_releases.txt

echo "---------------------------------------------"
echo "Helm chart scanning complete."

Saveti

Kubernetes PodSecurityContext i SecurityContext

Možete konfigurisati bezbednosni kontekst Pod-ova (sa PodSecurityContext) i kontekst kontejnera koji će se pokretati (sa SecurityContext). Za više informacija pročitajte:

Kubernetes SecurityContext(s)

Kubernetes API Hardening

Veoma je važno da zaštitite pristup Kubernetes Api Server-u jer zlonameran akter sa dovoljnim privilegijama može da ga zloupotrebi i na mnogo načina naškodi okruženju.
Važno je osigurati i pristup (whitelist origin-e za pristup API Server-u i odbiti sve druge konekcije) i authentication (prateći princip najmanjih privilegija). I definitivno nikada ne dozvoljavajte anonimne zahteve.

Uobičajen proces zahteva:
Korisnik ili K8s ServiceAccount –> Authentication –> Authorization –> Admission Control.

Saveti:

  • Zatvorite portove.
  • Izbegavajte anonimni pristup.
  • NodeRestriction; zabrani pristup API-ju sa određenih nodes.
  • https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
  • U suštini sprečava kubelets da dodaju/uklanjaju/izmenjuju labele sa prefiksom node-restriction.kubernetes.io/. Taj prefiks je rezervisan za administratore da označe svoje Node objekte za potrebe izolacije workload-a, i kubelets neće imati dozvolu da menjaju labele sa tim prefiksom.
  • I takođe, dozvoljava kubelets-ima da dodaju/uklanjaju/izmenjuju ove labele i prefikse labela.
  • Obezbedite sigurnu izolaciju workload-a pomoću labela.
  • Sprečite određenim pods pristup API-ju.
  • Izbegavajte izlaganje ApiServer-a internetu.
  • Sprečite neautorizovan pristup; koristite RBAC.
  • Za ApiServer port koristite firewall i IP whitelisting.

SecurityContext Hardening

Po defaultu će se koristiti root korisnik kada se Pod pokrene ako nije naveden drugi korisnik. Možete pokretati vašu aplikaciju u bezbednijem kontekstu koristeći šablon sličan sledećem:

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

Opšte jačanje bezbednosti

Treba da ažurirate vaše Kubernetes okruženje koliko često je potrebno da biste imali:

  • Zavisnosti ažurne.
  • Ispravke grešaka i bezbednosne zakrpe.

Release cycles: Svaka 3 meseca izlazi novo minor izdanje – 1.20.3 = 1(Major).20(Minor).3(patch)

Najbolji način da ažurirate Kubernetes Cluster je (iz here):

  • Ažurirajte komponente Master Node-a po sledećem redosledu:
  • etcd (all instances).
  • kube-apiserver (all control plane hosts).
  • kube-controller-manager.
  • kube-scheduler.
  • cloud controller manager, if you use one.
  • Ažurirajte komponente Worker Node-a kao što su kube-proxy, kubelet.

Kubernetes nadzor i bezbednost:

  • Kyverno Policy Engine
  • Cilium Tetragon - eBPF-based Security Observability and Runtime Enforcement
  • Network Security Policies
  • Falco - Runtime security monitoring & detection

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks