Kubernetes Hardening
Reading time: 9 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Strumenti per analizzare un cluster
**Steampipe - Kubernetes Compliance
Esegue diversi controlli di conformità sul cluster Kubernetes. Include supporto per CIS, National Security Agency (NSA) e Cybersecurity and Infrastructure Security Agency (CISA) rapporto tecnico sulla cybersecurity per il rafforzamento di Kubernetes.
# 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 è uno strumento open-source K8s che fornisce un'unica interfaccia multi-cloud K8s, inclusi analisi dei rischi, conformità alla sicurezza, visualizzatore RBAC e scansione delle vulnerabilità delle immagini. Kubescape scansiona i cluster K8s, i file YAML e i grafici HELM, rilevando configurazioni errate secondo diversi framework (come il NSA-CISA, MITRE ATT&CK®), vulnerabilità software e violazioni RBAC (controllo degli accessi basato sui ruoli) nelle fasi iniziali della pipeline CI/CD, calcola istantaneamente il punteggio di rischio e mostra le tendenze di rischio nel tempo.
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
kubescape scan --verbose
Popeye
Popeye è un'utilità che scansiona i cluster Kubernetes attivi e riporta potenziali problemi con le risorse e le configurazioni distribuite. Sanitizza il tuo cluster in base a ciò che è distribuito e non a ciò che è memorizzato su disco. Scansionando il tuo cluster, rileva le misconfigurazioni e ti aiuta a garantire che le migliori pratiche siano in atto, prevenendo così futuri mal di testa. Mira a ridurre il carico cognitivo che si affronta quando si opera un cluster Kubernetes nel mondo reale. Inoltre, se il tuo cluster utilizza un metric-server, riporta potenziali sovra/sotto allocazioni delle risorse e cerca di avvisarti nel caso in cui il tuo cluster esaurisca la capacità.
Kube-bench
Lo strumento kube-bench è uno strumento che verifica se Kubernetes è distribuito in modo sicuro eseguendo i controlli documentati nel CIS Kubernetes Benchmark.
Puoi scegliere di:
- eseguire kube-bench all'interno di un container (condividendo lo spazio dei nomi PID con l'host)
- eseguire un container che installa kube-bench sull'host e poi eseguire kube-bench direttamente sull'host
- installare gli ultimi binari dalla pagina delle Release,
- compilarlo dal sorgente.
Kubeaudit
[DEPRECATO] Lo strumento kubeaudit è uno strumento da riga di comando e un pacchetto Go per auditare i cluster Kubernetes per vari problemi di sicurezza.
Kubeaudit può rilevare se sta girando all'interno di un container in un cluster. Se sì, cercherà di auditare tutte le risorse Kubernetes in quel cluster:
kubeaudit all
Questo strumento ha anche l'argomento autofix
per correggere automaticamente i problemi rilevati.
Kube-hunter
[DEPRECATED] Lo strumento kube-hunter cerca vulnerabilità di sicurezza nei cluster Kubernetes. Lo strumento è stato sviluppato per aumentare la consapevolezza e la visibilità sui problemi di sicurezza negli ambienti Kubernetes.
kube-hunter --remote some.node.com
Trivy
Trivy ha scanner che cercano problemi di sicurezza e obiettivi dove possono trovare tali problemi:
- Immagine del Container
- File System
- Repository Git (remoto)
- Immagine della Macchina Virtuale
- Kubernetes
Kubei
[Sembra non essere mantenuto]
Kubei è uno strumento di scansione delle vulnerabilità e benchmark CIS Docker che consente agli utenti di ottenere una valutazione del rischio accurata e immediata dei loro cluster kubernetes. Kubei scansiona tutte le immagini utilizzate in un cluster Kubernetes, comprese le immagini dei pod delle applicazioni e dei pod di sistema.
KubiScan
KubiScan è uno strumento per la scansione del cluster Kubernetes per permessi rischiosi nel modello di autorizzazione Role-based access control (RBAC) di Kubernetes.
Managed Kubernetes Auditing Toolkit
Mkat è uno strumento costruito per testare altri tipi di controlli ad alto rischio rispetto agli altri strumenti. Ha principalmente 3 modalità diverse:
find-role-relationships
: Che troverà quali ruoli AWS sono in esecuzione in quali podfind-secrets
: Che cerca di identificare segreti nelle risorse K8s come Pods, ConfigMaps e Secrets.test-imds-access
: Che cercherà di eseguire pod e tentare di accedere ai metadati v1 e v2. ATTENZIONE: Questo eseguirà un pod nel cluster, fai molta attenzione perché potresti non volerlo fare!
Audit IaC Code
KICS
KICS trova vulnerabilità di sicurezza, problemi di conformità e misconfigurazioni dell'infrastruttura nelle seguenti soluzioni Infrastructure as Code: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM e specifiche OpenAPI 3.0
Checkov
Checkov è uno strumento di analisi statica del codice per l'infrastructure-as-code.
Scansiona l'infrastruttura cloud fornita utilizzando Terraform, piano Terraform, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless o ARM Templates e rileva misconfigurazioni di sicurezza e conformità utilizzando la scansione basata su grafi.
Kube-score
kube-score è uno strumento che esegue analisi statica del codice delle definizioni degli oggetti Kubernetes.
Per installare:
Distribuzione | Comando / Link |
---|---|
Binaries precompilati per macOS, Linux e Windows | GitHub releases |
Docker | docker pull zegl/kube-score (Docker Hub) |
Homebrew (macOS e Linux) | brew install kube-score |
Krew (macOS e Linux) | kubectl krew install score |
Tips
Kubernetes PodSecurityContext e SecurityContext
Puoi configurare il contesto di sicurezza dei Pods (con PodSecurityContext) e dei container che verranno eseguiti (con SecurityContext). Per ulteriori informazioni leggi:
Indurimento dell'API Kubernetes
È molto importante proteggere l'accesso al Kubernetes Api Server poiché un attore malintenzionato con privilegi sufficienti potrebbe abusarne e danneggiare l'ambiente in molti modi.
È importante garantire sia l'accesso (whitelist delle origini per accedere all'API Server e negare qualsiasi altra connessione) sia la autenticazione (seguendo il principio del minimo privilegio). E sicuramente mai consentire richieste anonime.
Processo di richiesta comune:
Utente o K8s ServiceAccount –> Autenticazione –> Autorizzazione –> Controllo di ammissione.
Suggerimenti:
- Chiudere le porte.
- Evitare l'accesso anonimo.
- NodeRestriction; Nessun accesso da nodi specifici all'API.
- https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction
- Fondamentalmente impedisce ai kubelet di aggiungere/rimuovere/aggiornare etichette con un prefisso node-restriction.kubernetes.io/. Questo prefisso di etichetta è riservato agli amministratori per etichettare i loro oggetti Node per scopi di isolamento del carico di lavoro, e i kubelet non saranno autorizzati a modificare le etichette con quel prefisso.
- E inoltre, consente ai kubelet di aggiungere/rimuovere/aggiornare queste etichette e prefissi di etichetta.
- Assicurati con le etichette l'isolamento sicuro del carico di lavoro.
- Evitare che pod specifici accedano all'API.
- Evitare l'esposizione dell'ApiServer a Internet.
- Evitare l'accesso non autorizzato RBAC.
- Porta dell'ApiServer con firewall e whitelist IP.
Indurimento del SecurityContext
Per impostazione predefinita, l'utente root verrà utilizzato quando un Pod viene avviato se non viene specificato alcun altro utente. Puoi eseguire la tua applicazione all'interno di un contesto più sicuro utilizzando un modello simile al seguente:
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
- https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- https://kubernetes.io/docs/concepts/policy/pod-security-policy/
Indurimento Generale
Dovresti aggiornare il tuo ambiente Kubernetes con la frequenza necessaria per avere:
- Dipendenze aggiornate.
- Correzioni di bug e di sicurezza.
Cicli di rilascio: Ogni 3 mesi c'è un nuovo rilascio minore -- 1.20.3 = 1(Maggiore).20(Minore).3(patch)
Il modo migliore per aggiornare un Cluster Kubernetes è (da qui):
- Aggiorna i componenti del nodo Master seguendo questa sequenza:
- etcd (tutte le istanze).
- kube-apiserver (tutti gli host del piano di controllo).
- kube-controller-manager.
- kube-scheduler.
- cloud controller manager, se ne utilizzi uno.
- Aggiorna i componenti del nodo Worker come kube-proxy, kubelet.
Monitoraggio e sicurezza di Kubernetes:
- Kyverno Policy Engine
- Cilium Tetragon - Sicurezza basata su eBPF, osservabilità e applicazione in tempo reale
- Politiche di Sicurezza della Rete
- Falco - Monitoraggio e rilevamento della sicurezza in tempo reale
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.