Kubernetes Hardening
Last updated
Last updated
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Kubescape è uno strumento open-source K8s che fornisce un'unica interfaccia multi-cloud K8s, inclusa l'analisi dei rischi, la conformità alla sicurezza, il visualizzatore RBAC e la scansione delle vulnerabilità delle immagini. Kubescape scansiona i cluster K8s, i file YAML e i grafici HELM, rilevando misconfigurazioni secondo più 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.
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 Releases page,
compilarlo dal sorgente.
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:
Questo strumento ha anche l'argomento autofix
per correggere automaticamente i problemi rilevati.
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.
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 propri 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 è uno strumento per la scansione dei cluster Kubernetes alla ricerca di permessi rischiosi nel modello di autorizzazione Role-based access control (RBAC) di Kubernetes.
Mkat è uno strumento progettato 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 pod
find-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!
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 configurazioni errate 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 in produzione. 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à.
KICS trova vulnerabilità di sicurezza, problemi di conformità e configurazioni errate dell'infrastruttura nelle seguenti soluzioni Infrastructure as Code: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM e specifiche OpenAPI 3.0
Checkov è uno strumento di analisi statica del codice per l'infrastructure-as-code.
Scansiona l'infrastruttura cloud fornita utilizzando Terraform, il piano Terraform, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless o ARM Templates e rileva configurazioni errate di sicurezza e conformità utilizzando la scansione basata su grafi.
kube-score è uno strumento che esegue analisi statica del codice delle definizioni degli oggetti Kubernetes.
Per installare:
Binaries precompilati per macOS, Linux e Windows
Docker
docker pull zegl/kube-score
(Docker Hub)
Homebrew (macOS e Linux)
brew install kube-score
Krew (macOS e Linux)
kubectl krew install score
Puoi configurare il contesto di sicurezza dei Pod (con PodSecurityContext) e dei container che verranno eseguiti (con SecurityContext). Per ulteriori informazioni leggi:
Kubernetes SecurityContext(s)È 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:
Chiudi le porte.
Evita l'accesso anonimo.
NodeRestriction; Nessun accesso da nodi specifici all'API.
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.
Evita che pod specifici accedano all'API.
Evita l'esposizione dell'ApiServer a Internet.
Evita l'accesso non autorizzato RBAC.
Porta dell'ApiServer con firewall e whitelist IP.
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:
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 Lavoratore come kube-proxy, kubelet.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)