Pular para o conteúdo

Tetragon - Segurança de Runtime eBPF

Tetragon - Segurança de Runtime eBPF

Tetragon é uma ferramenta open-source de segurança de runtime e observabilidade baseada em eBPF do projeto Cilium (CNCF). Ele engancha o kernel para capturar eventos relevantes para segurança — execução de processo, acesso a arquivos, conexões de rede, uso de capacidade e escalada de privilégio — com overhead muito baixo, e pode aplicar política no kernel (matar ou substituir syscalls) em vez de apenas alertar. Ele funciona em Kubernetes ou standalone em um host Linux.

Requisitos

  • Kernel Linux com BTF (/sys/kernel/btf/vmlinux presente) — a maioria das distros modernas
  • Root / contêiner privilegiado (eBPF precisa de CAP_BPF / CAP_SYS_ADMIN)

Instalação

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

Instala a 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

ComandoDescrição
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compactStream de eventos ao vivo (Kubernetes)
docker exec tetragon tetra getevents -o compactStream de eventos ao vivo (standalone)
tetra geteventsStream de eventos JSON completo
tetra getevents --processesApenas eventos de exec/exit de processo
tetra getevents --pods my-podFiltra por pod
tetra getevents -o json | jqEncanamento JSON para consultas ad-hoc

A saída compacta mostra um resumo de uma linha por evento, ex: exec de processo, abertura de arquivo ou conexão, anotado com pod/binário/args.

TracingPolicy (O que Observar)

O comportamento do Tetragon é impulsionado por recursos TracingPolicy customizados (ou YAML local em modo standalone). Uma política se anexa a kprobes/tracepoints/hooks LSM e opcionalmente adiciona ações.

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"
ComandoDescrição
kubectl apply -f policy.yamlCarrega uma TracingPolicy (Kubernetes)
kubectl get tracingpoliciesLista políticas ativas
kubectl delete tracingpolicy NAMERemove uma política
tetra tracingpolicy add policy.yamlCarrega uma política (gRPC standalone)
tetra tracingpolicy listLista políticas carregadas (standalone)

Ações de Aplicação

Adiciona um bloco matchActions a um seletor para agir no kernel:

AçãoEfeito
SigkillMata o processo ofensor sincronamente
OverrideRetorna um código de erro escolhido da syscall
PostEmite um evento apenas (observar)
NotifyEnforcer / SignalEnvia um sinal ao processo
      matchActions:
      - action: Sigkill        # bloqueia, não apenas registra

Detecções Comuns

ObjetivoAbordagem
Visibilidade de execução de processoEventos integrados de exec/exit de processo (sem política necessária)
Acesso a arquivo sensívelkprobe em security_file_permission com seletores de caminho
Escalada de privilégioObserva mudanças de capacidade / família setuid
Egresso de rede inesperadoHooks de tcp connect com seletores CIDR
Tentativas de escape de contêinerMonitoramento de mudança de namespace/capacidade

Dicas de Filtragem & Saída

# Mostra apenas eventos de exec para um binário específico
tetra getevents -o compact | grep curl

# Stream compacto bem formado, colorizado
kubectl exec -n kube-system ds/tetragon -c tetragon -- tetra getevents -o compact --pods web

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

Tetragon vs Falco

AspectoTetragonFalco
MecanismoeBPF (Cilium)eBPF / módulo de kernel
AplicaçãoSim (kill/override no kernel)Focado em alertas
Modelo de políticaCRDs TracingPolicyRegras Falco (YAML)
Contexto de identidade K8sForte (pod/labels)Sim
Melhor paraPrevenção + visibilidade profunda de kernelBiblioteca de regras madura, detecção

Recursos