Zum Inhalt springen

Tetragon - eBPF Runtime-Sicherheit Spickzettel

Tetragon - eBPF Runtime-Sicherheit Spickzettel

Tetragon ist ein Open-Source-eBPF-basiertes Runtime-Sicherheits- und Beobachtungswerkzeug aus dem Cilium-Projekt (CNCF). Es klinkt sich in den Kernel ein, um sicherheitsrelevante Ereignisse zu erfassen — Prozessausführung, Dateizugriff, Netzwerkverbindungen, Fähigkeitsnutzung und Berechtigungserweiterung — mit sehr geringem Overhead, und kann Richtlinien im Kernel erzwingen (Tötung oder Überschreiben von Syscalls), anstatt nur zu warnen. Es läuft auf Kubernetes oder eigenständig auf einem Linux-Host.

Anforderungen

  • Linux-Kernel mit BTF (/sys/kernel/btf/vmlinux vorhanden) — die meisten modernen Distros
  • Root / privilegierter Container (eBPF benötigt CAP_BPF / CAP_SYS_ADMIN)

Installation

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

Eigenständiger Host (Docker)

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

Installiere die tetra CLI

# 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

Ereignisse beobachten

BefehlBeschreibung
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compactLive-Ereignisse streamen (Kubernetes)
docker exec tetragon tetra getevents -o compactLive-Ereignisse streamen (eigenständig)
tetra geteventsVollständiger JSON-Ereignisstrom
tetra getevents --processesNur Prozess-Exec/Exit-Ereignisse
tetra getevents --pods my-podNach Pod filtern
`tetra getevents -o jsonjq`

Die kompakte Ausgabe zeigt eine einzeilige Zusammenfassung pro Ereignis, z.B. Prozess-Exec, Dateiöffnung oder Verbindung, mit Pod/Binär/Argumente-Anmerkungen.

TracingPolicy (Was zu überwachen ist)

Das Verhalten von Tetragon wird durch TracingPolicy-Custom-Ressourcen (oder lokale YAML im eigenständigen Modus) gesteuert. Eine Richtlinie verbindet sich mit Kprobes/Tracepoints/LSM-Hooks und fügt optional Aktionen hinzu.

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"
BefehlBeschreibung
kubectl apply -f policy.yamlLade eine TracingPolicy (Kubernetes)
kubectl get tracingpoliciesListe aktive Richtlinien auf
kubectl delete tracingpolicy NAMEEntferne eine Richtlinie
tetra tracingpolicy add policy.yamlLade eine Richtlinie (eigenständiger gRPC)
tetra tracingpolicy listAufladen von Richtlinien auflisten (eigenständig)

Erzwingungsaktionen

Füge einen matchActions-Block zu einem Selektor hinzu, um im Kernel zu agieren:

AktionEffekt
SigkillTöte den verursachenden Prozess synchron
OverrideGib einen gewählten Fehlercode aus dem Syscall zurück
PostGib nur ein Ereignis aus (beobachte)
NotifyEnforcer / SignalSende ein Signal an den Prozess
      matchActions:
      - action: Sigkill        # blockieren, nicht nur protokollieren

Häufige Erkennungen

ZielAnsatz
Sichtbarkeit der ProzessausführungIntegrierte Prozess-Exec/Exit-Ereignisse (keine Richtlinie erforderlich)
Zugriff auf sensible Dateienkprobe auf security_file_permission mit Pfad-Selektoren
BerechtigungserweiterungBeobachte Fähigkeitsänderungen / setuid-Familie
Unerwarteter Netzwerk-Egresstcp connect Hooks mit CIDR-Selektoren
Container-Escape-VersucheNamespace/Fähigkeits-Änderungs-Überwachung

Filtering & Output-Tipps

# Zeige nur Exec-Ereignisse für ein spezifisches Binary
tetra getevents -o compact | grep curl

# Hübsch, farbige kompakte Strömung
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compact --pods web

# Raw-JSON für eine SIEM-Pipeline exportieren
tetra getevents -o json >> /var/log/tetragon-events.json

Tetragon vs Falco

AspektTetragonFalco
MotoreBPF (Cilium)eBPF / Kernel-Modul
ErzwingungJa (im Kernel Tötung/Überschreitung)Warnungs-fokussiert
RichtlinienmodellTracingPolicy CRDsFalco-Regeln (YAML)
K8s-Identitäts-KontextStark (Pod/Labels)Ja
Am besten fürPrävention + tiefe Kernel-SichtbarkeitReife Regelbibliothek, Erkennung

Ressourcen