Salta ai contenuti

Tetragon - Cheatsheet Sicurezza Runtime eBPF

Tetragon - Cheatsheet Sicurezza Runtime eBPF

Tetragon è uno strumento di sicurezza runtime e osservabilità basato su eBPF open-source del progetto Cilium (CNCF). Hook nel kernel per catturare eventi rilevanti per la sicurezza — esecuzione di processi, accesso ai file, connessioni di rete, uso di capacità e escalation di privilegi — con overhead molto basso, e può applicare la politica in-kernel (kill o override di syscall) piuttosto che solo avvisare. Viene eseguito su Kubernetes o standalone su un host Linux.

Requisiti

  • Kernel Linux con BTF (/sys/kernel/btf/vmlinux presente) — la maggior parte delle distro moderne
  • Root / container privilegiato (eBPF ha bisogno di CAP_BPF / CAP_SYS_ADMIN)

Installazione

Kubernetes (Helm)

helm repo add cilium https://helm.cilium.io
helm repo update
helm install tetragon cilium/tetragon -n kube-system
kubectl rollout status -n kube-system ds/tetragon -w

Host standalone (Docker)

docker run --name tetragon --rm --pull always \
  --pid=host --cgroupns=host --privileged \
  -v /sys/kernel:/sys/kernel \
  quay.io/cilium/tetragon:latest

Installa la CLI tetra

# Linux amd64
curl -L https://github.com/cilium/tetragon/releases/latest/download/tetra-linux-amd64.tar.gz | tar -xz
sudo mv tetra /usr/local/bin/
tetra version

Osservazione degli Eventi

ComandoDescrizione
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compactFlusso di eventi live (Kubernetes)
docker exec tetragon tetra getevents -o compactFlusso di eventi live (standalone)
tetra geteventsFlusso di eventi JSON completo
tetra getevents --processesSolo eventi di exec/exit del processo
tetra getevents --pods my-podFiltra per pod
`tetra getevents -o jsonjq`

L’output compatto mostra un riepilogo a riga singola per evento, es. exec di processo, apertura di file o connessione, annotato con pod/binario/argomenti.

TracingPolicy (Cosa Osservare)

Il comportamento di Tetragon è guidato da risorse personalizzate TracingPolicy (o YAML locale in modalità standalone). Una politica si attacca a kprobe/tracepoint/ganci LSM e facoltativamente aggiunge azioni.

apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
  name: monitor-sensitive-files
spec:
  kprobes:
  - call: "security_file_permission"
    syscall: false
    args:
    - index: 0
      type: "file"
    selectors:
    - matchArgs:
      - index: 0
        operator: "Prefix"
        values:
        - "/etc/shadow"
        - "/etc/sudoers"
ComandoDescrizione
kubectl apply -f policy.yamlCarica una TracingPolicy (Kubernetes)
kubectl get tracingpoliciesElenca le politiche attive
kubectl delete tracingpolicy NAMERimuovi una politica
tetra tracingpolicy add policy.yamlCarica una politica (standalone gRPC)
tetra tracingpolicy listElenca le politiche caricate (standalone)

Azioni di Enforcement

Aggiungi un blocco matchActions a un selettore per agire in-kernel:

AzioneEffetto
SigkillUccidi sincronamente il processo trasgressore
OverrideRestituisci un codice di errore scelto dalla syscall
PostEmetti un evento solo (osserva)
NotifyEnforcer / SignalInvia un segnale al processo
      matchActions:
      - action: Sigkill        # blocca, non solo registrare

Rilevamenti Comuni

ObiettivoApproccio
Visibilità dell’esecuzione dei processiEventi incorporati di exec/exit del processo (nessuna politica necessaria)
Accesso ai file sensibilikprobe su security_file_permission con selettori di percorso
Escalation di privilegiOsserva i cambiamenti di capacità / famiglia setuid
Egresso di rete inaspettatoHook di connessione tcp con selettori CIDR
Tentativi di fuga del containerMonitoraggio dei cambiamenti di namespace/capacità

Suggerimenti per Filtraggio e Output

# Mostra solo eventi di exec per un binario specifico
tetra getevents -o compact | grep curl

# Flusso compatto gradevole e colorato
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compact --pods web

# Esporta JSON grezzo per una pipeline SIEM
tetra getevents -o json >> /var/log/tetragon-events.json

Tetragon vs Falco

AspettoTetragonFalco
EngineeBPF (Cilium)eBPF / modulo kernel
EnforcementSì (kill/override in-kernel)Orientato agli avvisi
Modello di politicaCRD TracingPolicyRegole Falco (YAML)
Contesto di identità K8sForte (pod/etichette)
Migliore perPrevenzione + visibilità kernel profondaLibreria di regole matura, rilevamento

Risorse