InfraFenceInfraFence

Live Security Operations

Inizia

Rilevamento delle intrusioni sui nodi Kubernetes

Ultimo aggiornamento:

Ogni nodo Kubernetes resta un server Linux: ha SSH, un firewall nel kernel, i file di sistema e, spesso, un ingress controller che riceve traffico da internet. Il chart Helm di InfraFence porta l'agente su ogni nodo, così ogni nodo viene sorvegliato e difeso come qualsiasi altro server nella tua dashboard.

Questa pagina dice cosa copre l'agente su un nodo, e cosa invece non copre. Non sostituisce i controlli di sicurezza di Kubernetes.

Come funziona

  • Il chart esegue l'agente come DaemonSet: un pod su ogni nodo, control plane compreso, distribuito un nodo alla volta.
  • Una sola chiave di cluster registra tutti i nodi. La crei nella dashboard in Impostazioni › Kubernetes; inizia con IFK- e viene mostrata una sola volta. Revocarla impedisce a nuovi nodi di unirsi; i nodi già registrati continuano a funzionare.
  • Ogni nodo compare nella dashboard come un server a sé, raggruppato per nome del cluster. Starter copre un server, quindi può registrarsi un solo nodo; da Basic in su non c'è limite e ogni nodo si paga come un server.
helm install infrafence-agent oci://ghcr.io/infrafence/charts/infrafence-agent \
  --namespace infrafence --create-namespace \
  --set apiKey="IFK-..." \
  --set clusterName="production"

Prerequisiti: Kubernetes 1.22 o successivo e Helm 3. La dashboard mostra lo stesso comando con la tua chiave già inserita. Valori, aggiornamenti e disinstallazione sono in Kubernetes.

Cosa copre su un nodo

AmbitoCosa fa l'agente
SSH e il nodo stessoLegge i log del nodo da /var/log, ferma il brute force SSH e assegna un punteggio di rischio alle sessioni SSH. I ban finiscono nell'iptables del nodo, nelle catene dell'agente.
Traffico di ingressTrova i pod di ingress-nginx e Traefik sul nodo e ne legge i log di accesso sotto /var/log/pods, con le stesse regole contro gli attacchi web di qualsiasi server. Traefik non scrive log di accesso finché non lo attivi.
Pod sul nodoSegnala, tramite l'API di Kubernetes con accesso in sola lettura, i pod del suo nodo e gli host di ingress del cluster. Crash loop, OOM kill, errori di pull delle immagini ed evizioni dei pod del suo nodo arrivano alla dashboard come eventi.
Uscita, DNS, fileControlla le connessioni in uscita dal nodo, le risposte DNS, il malware e l'integrità dei file di sistema, come su qualsiasi server Linux.
AggiornamentiCon autoUpdate.enabled, un agente autorizzato ad aggiornarsi verifica la firma cosign della nuova immagine e sposta il proprio DaemonSet su di essa tramite digest.

Cosa non copre

  • Il traffico dei pod può non passare dalle regole firewall del nodo. I ban valgono dove il traffico raggiunge il nodo stesso (SSH, servizi dell'host, pod sulla rete dell'host come un ingress controller con hostNetwork). Il traffico che il plugin CNI o kube-proxy inoltrano ai pod può non passare da INPUT o DOCKER-USER, dove stanno le regole dell'agente. La dashboard lo segnala nella pagina del nodo.
  • Nessuna regola dentro il cluster. L'agente non scrive NetworkPolicy, liste di blocco dell'ingress né regole CNI: i ban restano nell'iptables del nodo.
  • Non è un admission controller né un monitor delle syscall a runtime. Non controlla i manifest prima che vengano eseguiti, e non traccia le chiamate di sistema dentro i container. I controlli di Kubernetes, come RBAC e le NetworkPolicy, restano a te.
  • Richiede pod privilegiati con rete dell'host. Un cluster gestito che li vieta non può eseguire il chart.
  • Ban, whitelist e blocchi per paese valgono per IPv4.

Cosa installa il chart

  • Un DaemonSet con rete dell'host, spazio dei PID dell'host e pod privilegiati, che servono all'agente per gestire il firewall del nodo e vederne i processi.
  • Un ServiceAccount che può leggere pod, nodi, eventi, namespace, ConfigMap, ingress e NetworkPolicy, più get e patch sui DaemonSet, che l'agente usa solo per aggiornare il proprio.
  • Un Secret con la chiave di cluster.
  • Mount dell'host: /var/log e i socket di Docker e containerd in sola lettura, e /etc/infrafence in lettura e scrittura per la registrazione del nodo.

Il sorgente del chart è nel repository dell'agente: charts/infrafence-agent. Se il cluster è gestito da ArgoCD o Flux, disattiva gli aggiornamenti automatici e aggiorna invece il tag dell'immagine nel tuo repository:

autoUpdate:
  enabled: false

Ogni release pubblica anche infrafence-agent-linux-amd64-k8s e infrafence-agent-linux-arm64-k8s: l'agente compilato con il client di Kubernetes, come nell'immagine del chart, firmato come ogni release (Verificare una release). Le sue funzioni per Kubernetes si attivano solo quando gira in un pod. Per un singolo host Docker, vedi Sicurezza degli host Docker.

Domande

Ogni nodo conta come un server?
Sì. Ogni nodo si registra come un server a sé e da Basic in su si paga come un server. Su Starter può registrarsi un solo nodo.
Cosa succede quando un nodo viene ricostruito?
Un nodo che si registra di nuovo, dopo una ricostruzione o con /etc/infrafence svuotata, mantiene il suo server nella dashboard e riceve un nuovo token.
Posso usarlo con ArgoCD o Flux?
Sì. Imposta autoUpdate.enabled a false, così l'agente non modifica il proprio DaemonSet, e aggiorna il tag dell'immagine nel tuo repository.

Provalo gratis su 1 server

Starter protegge completamente un server, gratis e senza carta di credito.

  1. 01

    Crea un account gratuito, poi apri Server › Aggiungi server per ottenere il token di installazione. È valido per un'ora.

    Crea il token
  2. 02

    Poi esegui questo comando come root sul server:

    curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>