Aller au contenu

Tetragon - Sécurité d'exécution eBPF

Tetragon - Sécurité d’exécution eBPF

Tetragon est un outil open-source de sécurité d’exécution et d’observabilité basé sur eBPF du projet Cilium (CNCF). Il hook le noyau pour capturer les événements liés à la sécurité — exécution de processus, accès aux fichiers, connexions réseau, utilisation de capacités et escalade de privilèges — avec une très faible surcharge, et peut appliquer la politique in-kernel (tuer ou surcharger les syscalls) plutôt que seulement alerter. Il s’exécute sur Kubernetes ou seul sur un hôte Linux.

Exigences

  • Noyau Linux avec BTF (/sys/kernel/btf/vmlinux présent) — la plupart des distros modernes
  • Root / conteneur privilégié (eBPF nécessite 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

Hôte standalone (Docker)

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

Installer 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

Observer les événements

CommandeDescription
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compactFlux d’événements en direct (Kubernetes)
docker exec tetragon tetra getevents -o compactFlux d’événements en direct (standalone)
tetra geteventsFlux d’événements JSON complet
tetra getevents --processesUniquement les événements exec/exit de processus
tetra getevents --pods my-podFiltrer par pod
`tetra getevents -o jsonjq`

La sortie compacte affiche un résumé d’une ligne par événement, par ex. exec de processus, ouverture de fichier ou connexion, annoté avec pod/binaire/args.

TracingPolicy (Qu’observer)

Le comportement de Tetragon est piloté par les ressources personnalisées TracingPolicy (ou YAML local en mode standalone). Une politique s’attache aux kprobes/tracepoints/hooks LSM et ajoute optionnellement des actions.

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"
CommandeDescription
kubectl apply -f policy.yamlCharger une TracingPolicy (Kubernetes)
kubectl get tracingpoliciesLister les politiques actives
kubectl delete tracingpolicy NAMESupprimer une politique
tetra tracingpolicy add policy.yamlCharger une politique (gRPC standalone)
tetra tracingpolicy listLister les politiques chargées (standalone)

Actions d’application

Ajouter un bloc matchActions à un sélecteur pour agir in-kernel :

ActionEffet
SigkillTuer le processus contrevenant de manière synchrone
OverrideRetourner un code d’erreur choisi du syscall
PostÉmettre uniquement un événement (observer)
NotifyEnforcer / SignalEnvoyer un signal au processus
      matchActions:
      - action: Sigkill        # bloquer, ne pas seulement enregistrer

Détections courantes

ObjectifApproche
Visibilité d’exécution de processusÉvénements exec/exit de processus intégrés (pas de politique nécessaire)
Accès aux fichiers sensibleskprobe sur security_file_permission avec sélecteurs de chemin
Escalade de privilègesSurveiller les changements de capacité / famille setuid
Sortie réseau inattendueHooks de connexion tcp avec sélecteurs CIDR
Tentatives d’échappement de conteneurSurveillance des changements de namespace/capacité

Conseils de filtrage et de sortie

# Afficher uniquement les événements exec pour un binaire spécifique
tetra getevents -o compact | grep curl

# Flux compact joli et colorisé
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compact --pods web

# Exporter du JSON brut pour un pipeline SIEM
tetra getevents -o json >> /var/log/tetragon-events.json

Tetragon vs Falco

AspectTetragonFalco
MoteureBPF (Cilium)eBPF / module du noyau
ApplicationOui (kill/override in-kernel)Alerting centrée
Modèle de politiqueTracingPolicy CRDsRègles Falco (YAML)
Contexte d’identité K8sFort (pod/labels)Oui
Meilleur pourPrévention + visibilité profonde du noyauBibliothèque de règles mature, détection

Ressources