Ojačavanje Kubernetes-a

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

Obavlja više provera usklađenosti nad Kubernetes klasterom. Uključuje podršku za CIS, National Security Agency (NSA) i Cybersecurity and Infrastructure Security Agency (CISA) tehničke izveštaje za ojačavanje 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 pruža multi-cloud jedinstveni pregled K8s okruženja, uključujući analizu rizika, usklađenost bezbednosti, RBAC vizualizator i skeniranje ranjivosti image-a. Kubescape skenira K8s klastere, YAML fajlove i HELM charts, detektuje 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 utility koja skenira živi Kubernetes cluster i izveštava o potencijalnim problemima sa raspoređenim resursima i konfiguracijama. Sanitizuje vaš klaster na osnovu onoga što je raspoređeno, a ne onoga što se nalazi na disku. Skeniranjem klastera detektuje misconfigurations i pomaže vam da osigurate primenu best practices, čime se sprečavaju buduće glavobolje. Cilj mu je da smanji kognitivni _over_load sa kojim se susrećete pri radu sa Kubernetes klasterom u stvarnom okruženju. Pored toga, ako vaš klaster koristi metric-server, izveštava o potencijalnim prekomernim/premalim alokacijama resursa i pokušava da vas upozori ako vaš klaster ostane bez kapaciteta.

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.
Možete izabrati da:

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

Kubeaudit

[DEPRECATED] The tool kubeaudit is a command line tool and a Go package to audit Kubernetes clusters for various different security concerns.

Kubeaudit može da detektuje da li se pokreće unutar kontejnera u klasteru. Ako je tako, pokušaće da audit-uje sve Kubernetes resurse u tom klasteru:

kubeaudit all

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

Kube-hunter

[DEPRECATED] Alat kube-hunter otkriva bezbednosne slabosti u Kubernetes klasterima. Alat je razvijen da poveća svest i vidljivost bezbednosnih problema u Kubernetes okruženjima.

kube-hunter --remote some.node.com

Trivy

Trivy ima skenere koji traže bezbednosne probleme i ciljeve gde može da pronađe te probleme:

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

Kubei

Izgleda da nije održavan

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

KubiScan

KubiScan je alat za skeniranje Kubernetes klastera u potrazi za rizičnim dozvolama u Kubernetes-ovom Role-based access control (RBAC) modelu autorizacije.

Managed Kubernetes Auditing Toolkit

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

  • find-role-relationships: Koji će pronaći koji AWS role se pokreću u kojim pods-ima
  • find-secrets: Koji pokušava da identifikuje secrets 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 ovo uradite!

Audit IaC Code

KICS

KICS pronalazi bezbednosne 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 provision-ovanu koristeći Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless ili ARM Templates i otkriva bezbednosne probleme i probleme usklađenosti, kao i pogrešne konfiguracije koristeći skeniranje zasnovano na grafovima.

Kube-score

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

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 -

Saveti

Kubernetes PodSecurityContext i SecurityContext

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

Kubernetes SecurityContext(s)

Ojačavanje bezbednosti Kubernetes API-ja

Veoma je važno zaštititi pristup Kubernetes Api Server-u jer zlonameran akter sa dovoljno privilegija može zloupotrebiti server i na mnogo načina oštetiti okruženje.
Važno je obezbediti i pristup (whitelist origin-a koji smeju da pristupe API Server-u i odbiti sve ostale konekcije) i autentifikaciju (prateći princip najmanjih privilegija). I definitivno nikada ne dozvolite anonimne zahteve.

Uobičajeni proces zahteva:
Korisnik ili K8s ServiceAccount –> Autentifikacija –> Autorizacija –> Admission Control.

Saveti:

  • Zatvorite portove.
  • Izbegavajte anonimni pristup.
  • NodeRestriction; Nema pristupa API-ju sa određenih nodova.
  • https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
  • U suštini sprečava kubelets da dodaju/uklanjaju/azuriraju label-e sa prefiksom node-restriction.kubernetes.io/. Ovaj prefiks label-e je rezervisan za administratore da označavaju Node objekte za potrebe izolacije workload-a, i kubelet-ima neće biti dozvoljeno da menjaju label-e sa tim prefiksom.
  • I takođe, dozvoljava kubelet-ima da dodaju/uklanjaju/azuriraju ove label-e i prefikse label-a.
  • Obezbedite pomoću label-a sigurnu izolaciju workload-a.
  • Sprečite da specifični pod-ovi pristupaju API-ju.
  • Izbegavajte izlaganje ApiServer-a internetu.
  • Sprečite neautorizovan pristup koristeći RBAC.
  • Konfigurišite firewall i IP whitelistu za ApiServer port.

Ojačavanje SecurityContext-a

Po defaultu će se koristiti root korisnik kada se pokrene Pod ako nije naveden drugi korisnik. Aplikaciju možete pokrenuti u sigurnijem 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 ojačavanje bezbednosti

Treba redovno ažurirati vaše Kubernetes okruženje onoliko često koliko je potrebno da imate:

  • Ažurne zavisnosti.
  • 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 za ažuriranje Kubernetes klastera je (iz here):

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

Kubernetes monitoring & security:

  • Kyverno Policy Engine
  • Cilium Tetragon - eBPF-based posmatranje bezbednosti i runtime sprovođenje
  • Network Security Policies
  • Falco - Runtime monitoring bezbednosti & detekcija

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