Kubernetes Verharding

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Gereedskap om ’n cluster te analiseer

Steampipe - Kubernetes Compliance

Dit sal verskeie nalevingskontroles op die Kubernetes-cluster uitvoer. Dit sluit ondersteuning in vir CIS, National Security Agency (NSA) en die Cybersecurity and Infrastructure Security Agency (CISA) se tegniese kuberveiligheidsverslag vir Kubernetes-verharding.

# 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 is ’n K8s open-source hulpmiddel wat ’n multi-cloud K8s een-paneel-oorsig bied, insluitend risiko-analise, sekuriteitsnakoming, ’n RBAC-visualiseerder en skandering van image-kwesbaarhede. Kubescape scant K8s clusters, YAML-lêers, en HELM charts, en ontdek misconfigurations volgens verskeie raamwerke (soos die NSA-CISA , MITRE ATT&CK®), sagteware-kwesbaarhede, en RBAC (role-based-access-control) oortredings in vroeë stadiums van die CI/CD-pyplyn, bereken risikotelling onmiddellik en toon risiko-trends oor tyd.

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

Popeye

Popeye is ’n hulpmiddel wat lewende Kubernetes-klusters skandeer en rapporteer potensiële probleme met gedeployde hulpbronne en konfigurasies. Dit suiwer jou cluster gebaseer op wat gedeploy is en nie op wat op die skyf lê nie. Deur jou cluster te skandeer, ontdek dit miskonfigurasies en help dit jou om te verseker dat beste praktyke ingestel is, en sodoende toekomstige hoofpyn te voorkom. Dit streef daarna om die kognitiewe _oor_las te verminder wat mens ervaar wanneer jy ’n Kubernetes-cluster in die veld bedryf. Verder, as jou cluster ’n metric-server gebruik, rapporteer dit potensiële oor-/ondertoewysings van hulpbronne en probeer dit jou waarsku indien jou cluster geen kapasiteit meer het nie.

Kube-bench

The tool kube-bench is a tool that checks whether Kubernetes is deployed securely by running the checks documented in the CIS Kubernetes Benchmark.
Jy kan kies om:

  • kube-bench binne ’n container uit te voer (deel PID namespace met die host)
  • ’n container uit te voer wat kube-bench op die host installeer, en dan kube-bench direk op die host uit te voer
  • die nuutste binaries vanaf die Releases page te installeer,
  • dit vanaf bron te compileer.

Kubeaudit

[DEPRECATED] Die hulpmiddel kubeaudit is ’n command line tool en ’n Go-pakket om Kubernetes-klusters te ouditeer vir verskeie sekuriteitskwessies.

Kubeaudit kan opspoor of dit binne ’n container in ’n cluster aan die loop is. Indien so, sal dit probeer om alle Kubernetes-hulpbronne in daardie cluster te ouditeer:

kubeaudit all

Hierdie tool het ook die argument autofix om outomaties gedetekteerde kwessies reg te stel.

Kube-hunter

[DEPRECATED] Die tool kube-hunter jaag na sekuriteitskwessies in Kubernetes clusters. Die tool is ontwikkel om bewusmaking en sigbaarheid vir sekuriteitskwessies in Kubernetes-omgewings te verhoog.

kube-hunter --remote some.node.com

Trivy

[Trivy] het skandeerders wat na sekuriteitsprobleme soek, en teikens waar dit daardie probleme kan vind:

  • Container Image
  • Filesystem
  • Git Repository (remote)
  • Virtual Machine Image
  • Kubernetes

Kubei

[Lyk asof dit nie meer onderhou word nie]

[Kubei] is ’n kwesbaarheidsskandering- en CIS Docker-benchmark hulpmiddel wat gebruikers in staat stel om ’n akkurate en onmiddellike risikoassessering van hul Kubernetes-klusters te kry. Kubei skandeer alle images wat in ’n Kubernetes-kluster gebruik word, insluitend images van application pods en system pods.

KubiScan

[KubiScan] is ’n instrument om Kubernetes-klusters te skandeer vir riskante permissies in Kubernetes se Role-based access control (RBAC) autorisatiemodel.

Managed Kubernetes Auditing Toolkit

[Mkat] is ’n instrument gebou om ander tipes hoogrisiko-kontroles te toets in vergelyking met die ander instrumente. Dit het hoofsaaklik 3 verskillende modusse:

  • find-role-relationships: Wat sal vind watter AWS rolle in watter pods loop
  • find-secrets: Wat probeer geheime identifiseer in K8s hulpbronne soos Pods, ConfigMaps, en Secrets.
  • test-imds-access: Wat sal probeer pods laat loop en toegang probeer kry tot metadata v1 en v2. WAARSKUWING: Dit sal ’n pod in die kluster laat loop; wees baie versigtig want dalk wil jy dit nie doen nie!

Audit IaC-kode

KICS

[KICS] vind sekuriteitskwesbaarhede, nakomingskwessies, en infrastruktuur-wankonfigurasies in die volgende Infrastructure as Code solutions: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, and OpenAPI 3.0 specifications

Checkov

[Checkov] is ’n statiese kode-analise-instrument vir infrastructure-as-code.

Dit scan cloud infrastruktuur geprovisioneer met behulp van Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless of ARM Templates en identifiseer sekuriteits- en nakomings-wankonfigurasies deur graf-gebaseerde skandering.

Kube-score

[kube-score] is ’n instrument wat statiese kode-analise uitvoer op jou Kubernetes-objekdefinisies.

To install:

DistributionCommand / Link
Pre-built binaries for macOS, Linux, and WindowsGitHub releases
Dockerdocker pull zegl/kube-score (Docker Hub)
Homebrew (macOS and Linux)brew install kube-score
Krew (macOS and 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 -

Skandeer afhanklikheidsprobleme

Skandeer beelde

#!/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

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

Wenke

Kubernetes PodSecurityContext en SecurityContext

Jy kan die sekuriteitskonteks van die Pods (met PodSecurityContext) en van die containers wat uitgevoer gaan word (met SecurityContext) konfigureer. Vir meer inligting lees:

Kubernetes SecurityContext(s)

Kubernetes API-verharding

Dit is baie belangrik om die toegang tot die Kubernetes Api Server te beskerm, aangesien ’n kwaadwillige akteur met genoeg voorregte dit kan misbruik en die omgewing op verskeie maniere kan beskadig.
Dit is belangrik om sowel die toegang (whitelist oorspronge wat toegang tot die API Server kry en weier enige ander verbinding) as die authentication (volg die beginsel van minste voorregte) te beveilig. En beslis moet nooit anonieme versoeke toegelaat word.

Algemene versoekproses:
Gebruiker of K8s ServiceAccount –> Verifikasie –> Autorisasie –> Toelatingsbeheer.

Wenke:

  • Sluit poorte.
  • Vermy anonieme toegang.
  • NodeRestriction; Geen toegang van spesifieke nodes tot die API.
  • https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
  • Verhoed basies dat kubelets etikette met die voorvoegsel node-restriction.kubernetes.io/ byvoeg/verwyder/werk by. Hierdie etiketvoorvoegsel is voorbehou vir administrateurs om hul Node-objekte te etiketteer vir workload-isolasie, en kubelets sal nie toegelaat word om etikette met daardie voorvoegsel te wysig nie.
  • En ook, laat kubelets toe om hierdie etikette en etiketvoorvoegsels by te voeg/verwyder/te wysig.
  • Gebruik etikette om veilige workload-isolasie te verseker.
  • Voorkom dat spesifieke pods API-toegang kry.
  • Vermy dat die ApiServer aan die internet blootgestel word.
  • Voorkom ongemagtigde toegang met RBAC.
  • Beveilig die ApiServer-poort met ’n firewall en IP-witlys.

SecurityContext-verharding

Standaard word die root-gebruiker gebruik wanneer ’n Pod begin word as geen ander gebruiker gespesifiseer is nie. Jy kan jou toepassing in ’n meer veilige konteks laat loop deur ’n sjabloon soos die volgende te gebruik:

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

Algemene verharding

Jy moet jou Kubernetes-omgewing so gereeld as nodig opdateer om te verseker dat:

  • Afhanklikhede op datum.
  • Fout- en sekuriteitsopdaterings.

Release cycles: Elke 3 maande is daar ’n nuwe minor vrystelling – 1.20.3 = 1(Major).20(Minor).3(patch)

Die beste manier om ’n Kubernetes Cluster op te dateer is (van here):

  • Opgradeer die Master Node-komponente volgens hierdie volgorde:
  • etcd (alle instansies).
  • kube-apiserver (alle control plane hosts).
  • kube-controller-manager.
  • kube-scheduler.
  • cloud controller manager, indien jy een gebruik.
  • Opgradeer die Worker Node-komponente soos kube-proxy, kubelet.

Kubernetes monitering & sekuriteit:

  • Kyverno Policy Engine
  • Cilium Tetragon - eBPF-gebaseerde sekuriteitswaarneming en runtime-afdwinging
  • Network Security Policies
  • Falco - runtime-sekuriteitsmonitering en opsporing

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks