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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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 podovimafind-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:
| Distribucija | Komanda / Link |
|---|---|
| Pre-built binarni paketi za macOS, Linux, i Windows | GitHub releases |
| Docker | docker 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 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
- https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- https://kubernetes.io/docs/concepts/policy/pod-security-policy/
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks Cloud

