Kubernetes Hardening

Support HackTricks

Tools per analizzare un cluster

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 le misconfigurazioni 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.

kubescape scan --verbose

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.

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.

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

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 è 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!

Audit IaC Code

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 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à.

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:

DistribuzioneComando / Link

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

Tips

Kubernetes PodSecurityContext e SecurityContext

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)

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:

  • 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.

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

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(correzione)

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.

Supporta HackTricks

Last updated