Translated ['', 'src/pentesting-cloud/kubernetes-security/kubernetes-har

This commit is contained in:
Translator
2025-11-17 12:19:18 +00:00
parent 871945a31e
commit ac97698e5c

View File

@@ -1,12 +1,12 @@
# Kubernetes Hardening
# Ojačavanje Kubernetes-a
{{#include ../../../banners/hacktricks-training.md}}
## Alati za analizu klastera
### [**Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-kubernetes-compliance)
### [Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-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.
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.
```bash
# Install Steampipe
brew install turbot/tap/powerpipe
@@ -27,30 +27,30 @@ powerpipe server
```
### [**Kubescape**](https://github.com/armosec/kubescape)
[**Kubescape**](https://github.com/armosec/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](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo) , [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/)), 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.
[**Kubescape**](https://github.com/armosec/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](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo) , [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/)), 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.
```bash
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
kubescape scan --verbose
```
### [**Popeye**](https://github.com/derailed/popeye)
[**Popeye**](https://github.com/derailed/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.
[**Popeye**](https://github.com/derailed/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**](https://github.com/aquasecurity/kube-bench)
Alat [**kube-bench**](https://github.com/aquasecurity/kube-bench) je alat koji proverava da li je Kubernetes bezbedno raspoređen pokretanjem provera dokumentovanih u [**CIS Kubernetes Benchmark**](https://www.cisecurity.org/benchmark/kubernetes/).\
The tool [**kube-bench**](https://github.com/aquasecurity/kube-bench) is a tool that checks whether Kubernetes is deployed securely by running the checks documented in the [**CIS Kubernetes Benchmark**](https://www.cisecurity.org/benchmark/kubernetes/).\
Možete izabrati da:
- pokrenete kube-bench iznutra kontejnera (deljenje PID imenskog prostora sa hostom)
- 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 datoteke sa [Releases page](https://github.com/aquasecurity/kube-bench/releases),
- kompajlirate ga iz izvora.
- instalirate najnovije binarne fajlove sa [Releases page](https://github.com/aquasecurity/kube-bench/releases),
- kompajlirate ga iz izvornog koda.
### [**Kubeaudit**](https://github.com/Shopify/kubeaudit)
**[DEPRECATED]** Alat [**kubeaudit**](https://github.com/Shopify/kubeaudit) je alat za komandnu liniju i Go paket za **auditovanje Kubernetes klastera** zbog različitih bezbednosnih problema.
**[DEPRECATED]** The tool [**kubeaudit**](https://github.com/Shopify/kubeaudit) is a command line tool and a Go package to **audit Kubernetes clusters** for various different security concerns.
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 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
```
@@ -58,99 +58,146 @@ Ovaj alat takođe ima argument `autofix` za **automatsko ispravljanje otkrivenih
### [**Kube-hunter**](https://github.com/aquasecurity/kube-hunter)
**[DEPRECATED]** Alat [**kube-hunter**](https://github.com/aquasecurity/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.
**[DEPRECATED]** Alat [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) otkriva bezbednosne slabosti u Kubernetes klasterima. Alat je razvijen da poveća svest i vidljivost bezbednosnih problema u Kubernetes okruženjima.
```bash
kube-hunter --remote some.node.com
```
### [Trivy](https://github.com/aquasecurity/trivy)
[Trivy](https://github.com/aquasecurity/trivy) ima skener koji traži bezbednosne probleme i ciljeve gde može da pronađe te probleme:
[Trivy](https://github.com/aquasecurity/trivy) ima skenere koji traže bezbednosne probleme i ciljeve gde može da pronađe te probleme:
- Slika kontejnera
- Datotečni sistem
- Git repozitorijum (daljinski)
- Slika virtuelne mašine
- Image kontejnera
- Fajl sistem
- Git Repository (remote)
- Image virtuelne mašine
- Kubernetes
### [**Kubei**](https://github.com/Erezf-p/kubei)
**[Izgleda kao da nije održavan]**
**Izgleda da nije održavan**
[**Kubei**](https://github.com/Erezf-p/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.
[**Kubei**](https://github.com/Erezf-p/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**](https://github.com/cyberark/KubiScan)
[**KubiScan**](https://github.com/cyberark/KubiScan) je alat za skeniranje Kubernetes klastera za rizične dozvole u modelu autorizacije zasnovanom na ulogama (RBAC) Kubernetes-a.
[**KubiScan**](https://github.com/cyberark/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](https://github.com/DataDog/managed-kubernetes-auditing-toolkit)
[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) je alat napravljen za testiranje drugih tipova visokorizičnih provera u poređenju sa drugim alatima. Ima 3 različita moda:
[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) 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 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!
- **`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!
## **Revizija IaC Koda**
## **Audit IaC Code**
### [**KICS**](https://github.com/Checkmarx/kics)
[**KICS**](https://github.com/Checkmarx/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
[**KICS**](https://github.com/Checkmarx/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**](https://github.com/bridgecrewio/checkov)
[**Checkov**](https://github.com/bridgecrewio/checkov) je alat za statičku analizu koda za infrastrukturu kao kod.
[**Checkov**](https://github.com/bridgecrewio/checkov) je alat za statičku analizu koda za infrastructure-as-code.
Skenira cloud infrastrukturu koja je obezbeđena koristeći [Terraform](https://terraform.io), Terraform plan, [Cloudformation](https://aws.amazon.com/cloudformation/), [AWS SAM](https://aws.amazon.com/serverless/sam/), [Kubernetes](https://kubernetes.io), [Dockerfile](https://www.docker.com), [Serverless](https://www.serverless.com) ili [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) i otkriva bezbednosne i usklađenosti greške koristeći skeniranje zasnovano na grafovima.
Skenira cloud infrastrukturu provision-ovanu koristeći [Terraform](https://terraform.io), Terraform plan, [Cloudformation](https://aws.amazon.com/cloudformation/), [AWS SAM](https://aws.amazon.com/serverless/sam/), [Kubernetes](https://kubernetes.io), [Dockerfile](https://www.docker.com), [Serverless](https://www.serverless.com) ili [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) i otkriva bezbednosne probleme i probleme usklađenosti, kao i pogrešne konfiguracije koristeći skeniranje zasnovano na grafovima.
### [**Kube-score**](https://github.com/zegl/kube-score)
[**kube-score**](https://github.com/zegl/kube-score) je alat koji vrši statičku analizu koda vaših definicija Kubernetes objekata.
[**kube-score**](https://github.com/zegl/kube-score) je alat koji vrši statičku analizu koda vaših Kubernetes definicija objekata.
Da biste instalirali:
To install:
| Distribucija | Komanda / Link |
| Distribution | Command / Link |
| --------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Pre-izgrađeni binarni fajlovi za macOS, Linux i Windows | [GitHub releases](https://github.com/zegl/kube-score/releases) |
| Pre-built binaries for macOS, Linux, and Windows | [GitHub releases](https://github.com/zegl/kube-score/releases) |
| Docker | `docker pull zegl/kube-score` ([Docker Hub)](https://hub.docker.com/r/zegl/kube-score/) |
| Homebrew (macOS i Linux) | `brew install kube-score` |
| [Krew](https://krew.sigs.k8s.io/) (macOS i Linux) | `kubectl krew install score` |
| Homebrew (macOS and Linux) | `brew install kube-score` |
| [Krew](https://krew.sigs.k8s.io/) (macOS and Linux) | `kubectl krew install score` |
## Tools to analyze YAML files & Helm Charts
### [**Kube-linter**](https://github.com/stackrox/kube-linter)
```bash
# Install Kube-linter
brew install kube-linter
# Run Kube-linter
## lint ./path/to/yaml/or/chart
```
### [Checkov](https://github.com/bridgecrewio/checkov)
```bash
# Install Checkov
pip install checkov
# Run Checkov
checkov -d ./path/to/yaml/or/chart
```
### [kubescore](https://github.com/zegl/kube-score)
```bash
# 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](https://github.com/controlplaneio/kubesec)
```bash
# 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 Podova** (sa _PodSecurityContext_) i **kontejnera** koji će biti pokrenuti (sa _SecurityContext_). Za više informacija pročitajte:
Možete konfigurisati **bezbednosni kontekst Pod-ova** (sa _PodSecurityContext_) i **kontejnere** koji će biti pokrenuti (sa _SecurityContext_). Za više informacija pročitajte:
{{#ref}}
kubernetes-securitycontext-s.md
{{#endref}}
### Kubernetes API Ojačavanje
### Ojačavanje bezbednosti Kubernetes API-ja
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**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (prateći princip **najmanjih** **privilegija**). I definitivno **nikada** **ne dozvoliti** **anonimne** **zahteve**.
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**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (prateći princip **najmanjih** **privilegija**). I definitivno **nikada** **ne dozvolite** **anonimne** **zahteve**.
**Uobičajen proces zahteva:**\
Korisnik ili K8s ServiceAccount > Autentifikacija > Autorizacija > Kontrola prijema.
**Uobičajeni proces zahteva:**\
Korisnik ili K8s ServiceAccount > Autentifikacija > Autorizacija > Admission Control.
**Saveti**:
- Zatvorite portove.
- Izbegavajte anonimni pristup.
- NodeRestriction; Nema pristupa sa specifičnih čvorova do API-ja.
- NodeRestriction; Nema pristupa API-ju sa određenih nodova.
- [https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction](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.
- 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.
- Izbegavajte neovlašćen pristup RBAC.
- ApiServer port sa vatrozidom i IP whitelist-om.
- Sprečite neautorizovan pristup koristeći RBAC.
- Konfigurišite firewall i IP whitelistu za ApiServer port.
### 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:
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:
```yaml
apiVersion: v1
kind: Pod
@@ -179,30 +226,30 @@ allowPrivilegeEscalation: true
- [https://kubernetes.io/docs/tasks/configure-pod-container/security-context/](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
- [https://kubernetes.io/docs/concepts/policy/pod-security-policy/](https://kubernetes.io/docs/concepts/policy/pod-security-policy/)
### Opšte učvršćivanje
### Opšte ojačavanje bezbednosti
Trebalo bi da ažurirate svoje Kubernetes okruženje koliko god je potrebno da biste imali:
Treba redovno ažurirati vaše Kubernetes okruženje onoliko često koliko je potrebno da imate:
- Ažurirane zavisnosti.
- Ispravke grešaka i sigurnosne zakrpe.
- Ažurne zavisnosti.
- Ispravke grešaka i bezbednosne zakrpe.
[**Ciklus izdanja**](https://kubernetes.io/docs/setup/release/version-skew-policy/): Svakih 3 meseca dolazi novo manje izdanje -- 1.20.3 = 1(Glavno).20(Manje).3(zakrpa)
[**Release cycles**](https://kubernetes.io/docs/setup/release/version-skew-policy/): 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** [**ovde**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**):**
**Najbolji način za ažuriranje Kubernetes klastera je (iz** [**here**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**):**
- Ažurirajte komponente Master Node-a prateći ovu sekvencu:
- etcd (sve instance).
- kube-apiserver (svi hostovi kontrolne ravni).
- 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, ako ga koristite.
- Ažurirajte komponente Worker Node-a kao što su kube-proxy, kubelet.
- cloud controller manager, if you use one.
- Ažurirajte Worker Node komponente kao što su kube-proxy, kubelet.
## Kubernetes nadzor i sigurnost:
## Kubernetes monitoring & security:
- 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
- Cilium Tetragon - eBPF-based posmatranje bezbednosti i runtime sprovođenje
- Network Security Policies
- Falco - Runtime monitoring bezbednosti & detekcija
{{#include ../../../banners/hacktricks-training.md}}