Kubernetes Hardening

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Alati za analizu klastera

Kubescape je K8s open-source alat koji pruža višemrežni K8s pregled, uključujući analizu rizika, usklađenost sa bezbednosnim standardima, vizualizaciju RBAC-a i skeniranje ranjivosti slika. Kubescape skenira K8s klustere, YAML fajlove i HELM grafikone, otkrivajući netačne konfiguracije prema više okvira (kao što su NSA-CISA, MITRE ATT&CK®), softverske ranjivosti i povrede RBAC (role-based-access-control) na ranim fazama CI/CD pipeline-a, trenutno izračunava ocenu rizika i prikazuje trendove rizika tokom vremena.

kubescape scan --verbose

Alatka kube-bench je alatka koja proverava da li je Kubernetes bezbedno implementiran pokretanjem provera dokumentovanih u CIS Kubernetes Benchmark. Možete izabrati da:

  • pokrenete kube-bench iznutra kontejnera (deljenje PID namespace-a sa hostom)

  • pokrenete kontejner koji instalira kube-bench na hostu, a zatim pokrenete kube-bench direktno na hostu

  • instalirate najnovije binarne datoteke sa stranice za izdanja,

  • kompajlirate ga iz izvornog koda.

Alatka kubeaudit je alatka komandne linije i Go paket za proveru Kubernetes klastera u vezi sa različitim sigurnosnim pitanjima.

Kubeaudit može otkriti da li se izvršava unutar kontejnera u klasteru. Ako je tako, pokušaće da proveri sve Kubernetes resurse u tom klasteru:

kubeaudit all

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

Alat kube-hunter traži sigurnosne slabosti u Kubernetes klasterima. Alat je razvijen kako bi povećao svijest i vidljivost sigurnosnih problema u Kubernetes okruženjima.

kube-hunter --remote some.node.com

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 slike koje se koriste u Kubernetes klasteru, uključujući slike aplikacionih podova i sistemskih podova.

KubiScan je alat za skeniranje Kubernetes klastera u potrazi za rizičnim dozvolama u Kubernetes-ovom modelu autorizacije zasnovanom na ulogama (RBAC).

Provera koda IaC

Popeye je alat koji skenira živi Kubernetes klaster i izveštava o potencijalnim problemima sa implementiranim resursima i konfiguracijama. On čisti vaš klaster na osnovu onoga što je implementirano, a ne onoga što se nalazi na disku. Skeniranjem klastera, otkriva netačne konfiguracije i pomaže vam da se uverite da su primenjene najbolje prakse, čime se sprečavaju budući problemi. Cilj mu je smanjenje kognitivnog opterećenja sa kojim se suočavate prilikom upravljanja Kubernetes klasterom u stvarnom okruženju. Takođe, ako vaš klaster koristi metrički server, izveštava o potencijalnom prekoračenju ili nedovoljnom dodeljivanju resursa i upozorava vas ako klaster ostane bez kapaciteta.

KICS pronalazi bezbednosne ranjivosti, probleme usaglašenosti i netačne konfiguracije infrastrukture u sledećim rešenjima Infrastructure as Code: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM i OpenAPI 3.0 specifikacije.

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

On skenira cloud infrastrukturu koja je implementirana korišćenjem Terraforma, Terraform plana, Cloudformationa, AWS SAM-a, Kubernetesa, Dockerfile-a, Serverless-a ili ARM šablona i otkriva netačne konfiguracije bezbednosti i usaglašenosti korišćenjem grafičke analize.

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

Za instalaciju:

DistribucijaKomanda / Link

Pre-built binarije za macOS, Linux i Windows

Docker

docker 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 (pomoću PodSecurityContext) i kontejnera koji će se pokrenuti (pomoću SecurityContext). Za više informacija pročitajte:

pageKubernetes SecurityContext(s)

Ojačavanje Kubernetes API-ja

Veoma je važno zaštititi pristup Kubernetes API serveru, jer zlonamerni korisnik sa dovoljnim privilegijama može zloupotrebiti pristup i naneti štetu okruženju na mnogo načina. Važno je obezbediti i pristup (dozvoliti samo određenim izvorima pristup API serveru i zabraniti sve ostale veze) i autentifikaciju (prateći princip najmanjih privilegija). I definitivno nikada ne dozvoljavajte anonimne zahteve.

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

Saveti:

  • Zatvorite portove.

  • Izbegavajte anonimni pristup.

  • NodeRestriction; Nema pristupa sa određenih čvorova API-ju.

  • Osnovno sprečava kubelete da dodaju/uklanjaju/ažuriraju oznake sa prefiksom node-restriction.kubernetes.io/. Taj prefiks oznake je rezervisan za administratore koji obeležavaju svoje Node objekte u svrhu izolacije radnog opterećenja, i kubeletima neće biti dozvoljeno da menjaju oznake sa tim prefiksom.

  • Takođe, omogućava kubeletima da dodaju/uklanjaju/ažuriraju ove oznake i prefikse oznaka.

  • Osigurajte sigurnu izolaciju radnog opterećenja pomoću oznaka.

  • Izbegavajte pristup API-ju određenim podovima.

  • Izbegavajte izlaganje ApiServera internetu.

  • Izbegavajte neovlašćeni pristup RBAC-u.

  • ApiServer port sa zaštitnim zidom i belom listom IP adresa.

Ojačavanje SecurityContext-a

Podrazumevano će se koristiti korisnik root kada se pokrene Pod ako nije naveden drugi korisnik. Možete pokrenuti svoju aplikaciju 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

Treba redovno ažurirati vaše Kubernetes okruženje kako bi:

  • Zavisnosti bile ažurirane.

  • Bagovi i sigurnosni propusti bili ispravljeni.

Ciklusi izdanja: Svaka 3 meseca postoji novo manje izdanje -- 1.20.3 = 1(Glavno).20(Manje).3(ispravka)

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

  • Ažurirajte komponente Master Node-a sledeći ovaj redosled:

  • etcd (sve instance).

  • kube-apiserver (svi kontrolni čvorovi).

  • kube-controller-manager.

  • kube-scheduler.

  • cloud controller manager, ako ga koristite.

  • Ažurirajte komponente Worker Node-a kao što su kube-proxy, kubelet.

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated