Kubernetes Hardening

Reading time: 9 minutes

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

Izvršava several compliance checks over the Kubernetes cluster. Uključuje podršku za CIS, Nacionalnu bezbednosnu agenciju (NSA) i izveštaj o tehničkoj bezbednosti Cybersecurity and Infrastructure Security Agency (CISA) za učvršćivanje Kubernetes-a.

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 je K8s open-source alat koji pruža jedinstveni pregled multi-cloud K8s, uključujući analizu rizika, usklađenost sa bezbednošću, vizualizaciju RBAC-a i skeniranje ranjivosti slika. Kubescape skenira K8s klastere, YAML datoteke i HELM šeme, otkrivajući pogrešne konfiguracije prema više okvira (kao što su NSA-CISA , MITRE ATT&CK®), softverske ranjivosti i kršenja RBAC-a (kontrola pristupa zasnovana na ulogama) u ranim fazama CI/CD pipeline-a, trenutno izračunava rizik i prikazuje trendove rizika tokom vremena.

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

Popeye

Popeye je alat koji skenira aktivne Kubernetes klastere 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 vašeg klastera, otkriva pogrešne konfiguracije i pomaže vam da osigurate da su najbolje prakse na snazi, čime se sprečavaju budući problemi. Cilj mu je smanjenje kognitivnog _over_load-a s kojim se suočavate prilikom upravljanja Kubernetes klasterom u stvarnom svetu. Pored toga, ako vaš klaster koristi metric-server, izveštava o potencijalnim prekomernim/podkomernim alokacijama resursa i pokušava da vas upozori ako vaš klaster ostane bez kapaciteta.

Kube-bench

Alat kube-bench je alat koji proverava da li je Kubernetes bezbedno raspoređen pokretanjem provera dokumentovanih u CIS Kubernetes Benchmark.
Možete izabrati da:

  • pokrenete kube-bench iznutra kontejnera (deljenje PID imenskog prostora sa hostom)
  • pokrenete kontejner koji instalira kube-bench na hostu, a zatim pokrenete kube-bench direktno na hostu
  • instalirate najnovije binarne datoteke sa Releases page,
  • kompajlirate ga iz izvora.

Kubeaudit

[DEPRECATED] Alat kubeaudit je alat za komandnu liniju i Go paket za auditovanje Kubernetes klastera zbog različitih bezbednosnih problema.

Kubeaudit može otkriti da li se pokreće unutar kontejnera u klasteru. Ako je tako, pokušaće da audituje 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 traži bezbednosne slabosti u Kubernetes klasterima. Alat je razvijen kako bi povećao svest i vidljivost o bezbednosnim problemima u Kubernetes okruženjima.

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

Trivy

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

  • Slika kontejnera
  • Datotečni sistem
  • Git repozitorijum (daljinski)
  • Slika virtuelne mašine
  • Kubernetes

Kubei

[Izgleda kao da nije održavan]

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

KubiScan

KubiScan je alat za skeniranje Kubernetes klastera za rizične dozvole u modelu autorizacije zasnovanom na ulogama (RBAC) Kubernetes-a.

Managed Kubernetes Auditing Toolkit

Mkat je alat napravljen za testiranje drugih tipova visokorizičnih provera u poređenju sa drugim alatima. Ima 3 različita moda:

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

Revizija IaC Koda

KICS

KICS pronalazi bezbednosne ranjivosti, probleme usklađenosti i konfiguracione greške u sledećim rešenjima infrastrukture kao koda: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM i OpenAPI 3.0 specifikacije

Checkov

Checkov je alat za statičku analizu koda za infrastrukturu kao kod.

Skenira cloud infrastrukturu koja je obezbeđena koristeći Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless ili ARM Templates i otkriva bezbednosne i usklađenosti greške koristeći skeniranje zasnovano na grafovima.

Kube-score

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

Da biste instalirali:

DistribucijaKomanda / Link
Pre-izgrađeni binarni fajlovi 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

Saveti

Kubernetes PodSecurityContext i SecurityContext

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

Kubernetes SecurityContext(s)

Kubernetes API Ojačavanje

Veoma je važno zaštititi pristup Kubernetes Api Serveru jer bi zlonameran akter sa dovoljno privilegija mogao da ga zloupotrebi i na mnogo načina ošteti okruženje.
Važno je osigurati i pristup (whitelist porekla za pristup API Serveru i odbiti sve druge veze) i autentifikaciju (prateći princip najmanjih privilegija). I definitivno nikada ne dozvoliti anonimne zahteve.

Uobičajen proces zahteva:
Korisnik ili K8s ServiceAccount –> Autentifikacija –> Autorizacija –> Kontrola prijema.

Saveti:

  • Zatvorite portove.
  • Izbegavajte anonimni pristup.
  • NodeRestriction; Nema pristupa sa specifičnih čvorova do API-ja.
  • https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
  • U suštini sprečava kubelete da dodaju/uklanjaju/aktualizuju oznake sa prefiksom node-restriction.kubernetes.io. Ovaj prefiks oznake je rezervisan za administratore da označe svoje Node objekte u svrhu izolacije radnog opterećenja, a kubeleti neće moći da menjaju oznake sa tim prefiksom.
  • Takođe, omogućava kubeletima da dodaju/uklanjaju/aktualizuju ove oznake i prefikse oznaka.
  • Osigurajte sa oznakama sigurnu izolaciju radnog opterećenja.
  • Izbegavajte specifične podove iz API pristupa.
  • Izbegavajte izlaganje ApiServer-a internetu.
  • Izbegavajte neovlašćen pristup RBAC.
  • ApiServer port sa vatrozidom i IP whitelist-om.

Ojačavanje SecurityContext-a

Podrazumevano će se koristiti korisnik root kada se Pod pokrene ako nije naveden nijedan drugi korisnik. Možete pokrenuti svoju aplikaciju unutar sigurnijeg konteksta koristeći šablon sličan sledećem:

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

Opšte učvršćivanje

Trebalo bi da ažurirate svoje Kubernetes okruženje koliko god je potrebno da biste imali:

  • Ažurirane zavisnosti.
  • Ispravke grešaka i sigurnosne zakrpe.

Ciklus izdanja: Svakih 3 meseca dolazi novo manje izdanje -- 1.20.3 = 1(Glavno).20(Manje).3(zakrpa)

Najbolji način za ažuriranje Kubernetes klastera je (iz ovde):

  • Ažurirajte komponente Master Node-a prateći ovu sekvencu:
  • etcd (sve instance).
  • kube-apiserver (svi hostovi kontrolne ravni).
  • kube-controller-manager.
  • kube-scheduler.
  • cloud controller manager, ako ga koristite.
  • Ažurirajte komponente Worker Node-a kao što su kube-proxy, kubelet.

Kubernetes nadzor i sigurnost:

  • Kyverno Policy Engine
  • Cilium Tetragon - eBPF-bazirana sigurnosna vidljivost i sprovođenje u radu
  • Politike mrežne sigurnosti
  • Falco - Nadzor i detekcija sigurnosti u radu

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