Kubernetes Hardening

Sostieni HackTricks

Strumenti per analizzare un cluster

Kubescape è un tool open-source per K8s che fornisce una visione unificata multi-cloud di K8s, inclusa l'analisi dei rischi, la conformità alla sicurezza, la visualizzazione di RBAC e la scansione delle vulnerabilità delle immagini. Kubescape esegue scansioni sui cluster K8s, file YAML e chart HELM, rilevando configurazioni errate secondo diversi framework (come il NSA-CISA, MITRE ATT&CK®), vulnerabilità software e violazioni di RBAC (controllo degli accessi basato sui ruoli) nelle fasi iniziali del pipeline CI/CD, calcola istantaneamente il punteggio di rischio e mostra le tendenze dei rischi nel tempo.

kubescape scan --verbose

Lo strumento kube-bench è uno strumento che controlla se Kubernetes è stato implementato in modo sicuro eseguendo i controlli documentati nel CIS Kubernetes Benchmark. Puoi scegliere di:

  • eseguire kube-bench da dentro un container (condivisione dello spazio dei processi con l'host)

  • eseguire un container che installa kube-bench sull'host e poi eseguire kube-bench direttamente sull'host

  • installare le ultime versioni binarie dalla pagina delle versioni,

  • compilarlo dal codice sorgente.

Lo strumento kubeaudit è uno strumento da riga di comando e un pacchetto Go per verificare cluster Kubernetes per vari problemi di sicurezza diversi.

Kubeaudit può rilevare se viene eseguito all'interno di un container in un cluster. In tal caso, cercherà di verificare 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 le vulnerabilità di sicurezza nei cluster Kubernetes. Lo strumento è stato sviluppato per aumentare la consapevolezza e la visibilità dei problemi di sicurezza negli ambienti Kubernetes.

kube-hunter --remote some.node.com

Kubei è uno strumento di scansione delle vulnerabilità e del benchmark CIS Docker che consente agli utenti di ottenere una valutazione accurata e immediata del rischio dei loro cluster Kubernetes. Kubei esegue la scansione di tutte le immagini utilizzate in un cluster Kubernetes, inclusi le immagini dei pod delle applicazioni e dei pod di sistema.

KubiScan è uno strumento per la scansione del cluster Kubernetes per le autorizzazioni rischiose nel modello di autorizzazione basato su ruoli (RBAC) di Kubernetes.

Mkat è uno strumento progettato per testare altri tipi di controlli ad alto rischio rispetto agli altri strumenti. Principalmente ha 3 modalità diverse:

  • find-role-relationships: Trova quali ruoli AWS sono in esecuzione in quali pod

  • find-secrets: Cerca di identificare segreti nelle risorse K8s come Pod, ConfigMaps e Secrets.

  • test-imds-access: Cerca di eseguire pod e di accedere ai metadati v1 e v2. ATTENZIONE: Questo eseguirà un pod nel cluster, fai molta attenzione perché potresti non voler farlo!

Audit del codice IaC

Popeye è un'utilità che esegue la scansione del cluster Kubernetes in tempo reale e segnala potenziali problemi con le risorse e le configurazioni implementate. Pulisce il tuo cluster in base a ciò che è implementato e non a ciò che è memorizzato su disco. Scansionando il tuo cluster, rileva le errate configurazioni e ti aiuta a garantire che le migliori pratiche siano in atto, prevenendo così futuri problemi. Si propone di ridurre il sovraccarico cognitivo che si affronta quando si opera un cluster Kubernetes in ambiente reale. Inoltre, se il tuo cluster utilizza un metric-server, segnala sovra/ sotto-allocamenti potenziali delle risorse e cerca di avvisarti nel caso in cui il tuo cluster esaurisca la capacità.

KICS individua vulnerabilità di sicurezza, problemi di conformità e errate configurazioni dell'infrastruttura nei seguenti soluzioni di 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'infrastruttura come codice.

Scansiona l'infrastruttura cloud fornita utilizzando Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless o ARM Templates e rileva errate configurazioni di sicurezza e conformità utilizzando la scansione basata su grafo.

kube-score è uno strumento che esegue l'analisi statica del codice delle definizioni degli oggetti Kubernetes.

Per installare:

DistribuzioneComando / Link

Binari 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

Suggerimenti

Kubernetes PodSecurityContext e SecurityContext

È possibile configurare il contesto di sicurezza dei Pod (con PodSecurityContext) e dei contenitori che verranno eseguiti (con SecurityContext). Per ulteriori informazioni leggere:

Kubernetes SecurityContext(s)

Harden di Kubernetes API

È molto importante proteggere l'accesso al server API di Kubernetes poiché un attore malintenzionato con sufficienti privilegi potrebbe abusarne e danneggiare in molti modi l'ambiente. È importante proteggere sia l'accesso (autorizzare gli origini a accedere al server API e negare qualsiasi altra connessione) che l'autenticazione (seguendo il principio del principio del minimo privilegio). E sicuramente mai consentire richieste anonime.

Processo di richiesta comune: Utente o ServiceAccount K8s –> Autenticazione –> Autorizzazione –> Controllo di ammissione.

Suggerimenti:

  • Chiudere le porte.

  • Evitare 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 ai kubelet non sarà consentito modificare le etichette con quel prefisso.

  • E inoltre, consente ai kubelet di aggiungere/rimuovere/aggiornare queste etichette e prefissi di etichette.

  • Assicurarsi con le etichette l'isolamento sicuro del carico di lavoro.

  • Evitare l'accesso API di pod specifici.

  • Evitare l'esposizione di ApiServer su Internet.

  • Evitare l'accesso non autorizzato RBAC.

  • Porta ApiServer con firewall e IP whitelisting.

Harden di SecurityContext

Per impostazione predefinita, l'utente root verrà utilizzato quando viene avviato un Pod se non viene specificato un altro utente. È possibile eseguire l'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 l'ambiente Kubernetes con la frequenza necessaria per avere:

  • Dipendenze aggiornate.

  • Patch per bug e 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):

  • Aggiornare 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 usi uno.

  • Aggiornare i componenti del nodo Worker come kube-proxy, kubelet.

Supporta HackTricks

Last updated