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
| Befehl | Beschreibung |
|---|
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compact | Live-Ereignisse streamen (Kubernetes) |
docker exec tetragon tetra getevents -o compact | Live-Ereignisse streamen (eigenständig) |
tetra getevents | Vollständiger JSON-Ereignisstrom |
tetra getevents --processes | Nur Prozess-Exec/Exit-Ereignisse |
tetra getevents --pods my-pod | Nach Pod filtern |
| `tetra getevents -o json | jq` |
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"
| Befehl | Beschreibung |
|---|
kubectl apply -f policy.yaml | Lade eine TracingPolicy (Kubernetes) |
kubectl get tracingpolicies | Liste aktive Richtlinien auf |
kubectl delete tracingpolicy NAME | Entferne eine Richtlinie |
tetra tracingpolicy add policy.yaml | Lade eine Richtlinie (eigenständiger gRPC) |
tetra tracingpolicy list | Aufladen von Richtlinien auflisten (eigenständig) |
Erzwingungsaktionen
Füge einen matchActions-Block zu einem Selektor hinzu, um im Kernel zu agieren:
| Aktion | Effekt |
|---|
Sigkill | Töte den verursachenden Prozess synchron |
Override | Gib einen gewählten Fehlercode aus dem Syscall zurück |
Post | Gib nur ein Ereignis aus (beobachte) |
NotifyEnforcer / Signal | Sende ein Signal an den Prozess |
matchActions:
- action: Sigkill # blockieren, nicht nur protokollieren
Häufige Erkennungen
| Ziel | Ansatz |
|---|
| Sichtbarkeit der Prozessausführung | Integrierte Prozess-Exec/Exit-Ereignisse (keine Richtlinie erforderlich) |
| Zugriff auf sensible Dateien | kprobe auf security_file_permission mit Pfad-Selektoren |
| Berechtigungserweiterung | Beobachte Fähigkeitsänderungen / setuid-Familie |
| Unerwarteter Netzwerk-Egress | tcp connect Hooks mit CIDR-Selektoren |
| Container-Escape-Versuche | Namespace/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
| Aspekt | Tetragon | Falco |
|---|
| Motor | eBPF (Cilium) | eBPF / Kernel-Modul |
| Erzwingung | Ja (im Kernel Tötung/Überschreitung) | Warnungs-fokussiert |
| Richtlinienmodell | TracingPolicy CRDs | Falco-Regeln (YAML) |
| K8s-Identitäts-Kontext | Stark (Pod/Labels) | Ja |
| Am besten für | Prävention + tiefe Kernel-Sichtbarkeit | Reife Regelbibliothek, Erkennung |
Ressourcen