Ir al contenido

Tetragon - Hoja de Trucos de Seguridad en Tiempo de Ejecución eBPF

Tetragon - Hoja de Trucos de Seguridad en Tiempo de Ejecución eBPF

Tetragon es una herramienta de código abierto de seguridad en tiempo de ejecución y observabilidad basada en eBPF del proyecto Cilium (CNCF). Engancha el kernel para capturar eventos relevantes para la seguridad — ejecución de procesos, acceso a archivos, conexiones de red, uso de capacidades y escaladas de privilegios — con muy baja sobrecarga, y puede aplicar política en el kernel (matar o anular llamadas al sistema) en lugar de solo alertar. Se ejecuta en Kubernetes o independientemente en un host Linux.

Requisitos

  • Kernel Linux con BTF (/sys/kernel/btf/vmlinux presente) — la mayoría de distros modernas
  • Root / contenedor privilegiado (eBPF necesita CAP_BPF / CAP_SYS_ADMIN)

Instalación

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 independiente (Docker)

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

Instala 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

Observando Eventos

ComandoDescripción
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compactFlujo de eventos en vivo (Kubernetes)
docker exec tetragon tetra getevents -o compactFlujo de eventos en vivo (independiente)
tetra geteventsFlujo completo de eventos JSON
tetra getevents --processesSolo eventos de ejecución/salida de procesos
tetra getevents --pods my-podFiltra por pod
`tetra getevents -o jsonjq`

La salida compacta muestra un resumen de una línea por evento, p. ej. ejecución de proceso, apertura de archivo o conexión, anotada con pod/binario/argumentos.

TracingPolicy (Qué Observar)

El comportamiento de Tetragon es impulsado por recursos personalizados TracingPolicy (o YAML local en modo independiente). Una política se adjunta a kprobes/tracepoints/ganchos LSM y opcionalmente añade acciones.

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"
ComandoDescripción
kubectl apply -f policy.yamlCarga una TracingPolicy (Kubernetes)
kubectl get tracingpoliciesLista las políticas activas
kubectl delete tracingpolicy NAMEElimina una política
tetra tracingpolicy add policy.yamlCarga una política (gRPC independiente)
tetra tracingpolicy listLista las políticas cargadas (independiente)

Acciones de Aplicación

Añade un bloque matchActions a un selector para actuar en el kernel:

AcciónEfecto
SigkillMata el proceso ofensor de forma síncrona
OverrideRetorna un código de error elegido de la llamada al sistema
PostEmite solo un evento (observa)
NotifyEnforcer / SignalEnvía una señal al proceso
      matchActions:
      - action: Sigkill        # bloquea, no solo registra

Detecciones Comunes

ObjetivoEnfoque
Visibilidad de ejecución de procesosEventos de ejecución/salida de procesos integrados (no necesita política)
Acceso a archivos sensibleskprobe en security_file_permission con selectores de ruta
Escalada de privilegiosObserva cambios de capacidad / familia setuid
Egreso de red inesperadoGanchos de conexión tcp con selectores CIDR
Intentos de escape de contenedorMonitoreo de cambios de espacio de nombres/capacidad

Consejos de Filtrado y Salida

# Muestra solo eventos exec para un binario específico
tetra getevents -o compact | grep curl

# Flujo compacto bonito y coloreado
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compact --pods web

# Exporta JSON crudo para un pipeline SIEM
tetra getevents -o json >> /var/log/tetragon-events.json

Tetragon vs Falco

AspectoTetragonFalco
MotoreBPF (Cilium)eBPF / módulo kernel
AplicaciónSí (matar/anular en kernel)Enfocada en alertas
Modelo de políticaCRDs TracingPolicyReglas Falco (YAML)
Contexto de identidad K8sFuerte (pod/etiquetas)
Mejor paraPrevención + visibilidad profunda del kernelBiblioteca de reglas madura, detección

Recursos