eBPF futásidejű biztonság: Falco és Tetragon Linux szervereken 2026-ban

eBPF futásidejű biztonság a gyakorlatban: Falco és Tetragon telepítése, LSM BPF kernel követelmények, TracingPolicy szabályok, Kubernetes integráció és reális teljesítményadatok 2026-ra egy kernelmérnök tollából.

Frissítve: 2026. május 27.

Az eBPF futásidejű biztonság egy olyan védelmi modell, amely a Linux kernelben futó, biztonságosan verifikált programok segítségével figyeli és (szükség esetén) blokkolja a syscall- és kernelszintű eseményeket anélkül, hogy a kernel forrásához hozzá kellene nyúlni vagy kernelmodult kellene betölteni. A két meghatározó implementáció 2026-ban a Falco (CNCF, detection-first) és a Tetragon (Isovalent/Cilium, enforcement-képes). Ebben a cikkben végigvezetlek azon, hogyan állítom be őket éles környezetben, mit ad nekünk az LSM BPF, és mikor melyiket választom.

  • Az eBPF a Linux 4.4 óta fejlődik, de a futásidejű biztonsághoz a kernel 5.7+ (LSM BPF), inkább a 6.x sorozat ajánlott. 2026-ban a kernel 6.12 LTS a stabil választás.
  • A Falco (v0.39, 2026 első negyedév) detekcióra optimalizált: rule engine, syscall- és K8s-audit-források, kit-alapú telepítés falcoctl-lel.
  • A Tetragon (v1.3+) TracingPolicy CRD-vel deklaratív szabályokat tesz lehetővé, és SIGKILL/override akciókkal képes a támadást a kernelben megállítani.
  • Az LSM BPF (CVE-szintű mérséklés helyett megelőzés) a CONFIG_BPF_LSM=y kapcsolóval és a lsm=...,bpf kernel paraméterrel aktiválható.
  • Tipikus teljesítményhatás: 1–4% CPU overhead jól megírt programokkal, syscallonként néhány száz nanoszekundum.
  • Detection-only környezetben Falco, prevenciónál vagy Cilium-natív telepítésnél Tetragon; nagy környezetben a kettő együtt is működik.

Mi az eBPF futásidejű biztonság?

Az eBPF (extended Berkeley Packet Filter) eredetileg hálózati szűrésre készült, de az elmúlt évtizedben általános célú, in-kernel végrehajtási platformmá vált. Egy felhasználói térben írt eBPF program (jellemzően C-ben vagy Rustban, libbpf vagy Aya keretrendszerrel) bytecode-ra fordul, majd a kernel verifier statikusan ellenőrzi (terminálódás, memóriaérvényesség, ciklusok kötöttsége), és csak ezután kapcsolja rá egy hook-ra: tracepoint, kprobe, uprobe, tc, XDP, vagy (biztonsági szempontból ez a legizgalmasabb) LSM (Linux Security Module).

Tapasztalatom szerint a kernelfejlesztők között gyakori félreértés, hogy az eBPF „csak megfigyel". Pedig nem. A Linux 5.7-től elérhető BPF LSM (Casey Schaufler et al., commit 9e4453e8c) az MAC (Mandatory Access Control) hookokra köthető eBPF programokat tesz lehetővé, vagyis nem csak detektálni tudunk, hanem megtagadni is a műveletet, pontosan ott, ahol az AppArmor és a SELinux is dolgozik. Két jelentős üzemkész implementáció épül erre: a Falco (felhasználói térben dolgozza fel az eseményeket egy szabálymotorral) és a Tetragon (kernelben hoz döntést, így gyorsabb és nem kerülhető meg a felhasználói daemonon keresztül).

Aki a hálózati oldalon érte el a témát, érdemes megnézni a Linux konténerbiztonság mesterfokon cikkemet. Ott részleteztem, hogyan illeszkedik az eBPF a konténerizált védelem teljes képébe.

Kernel- és LSM BPF-követelmények 2026-ban

A minimum kernelverzió, amivel komolyan érdemes elindulni: 5.10 (régi LTS, korlátozott LSM-hook lefedettség). A javasolt verzió 2026 közepén a 6.12 LTS (kiadva 2024 novemberében, fenntartás 2026 decemberéig minimum, az LTS-bővítésekkel akár tovább, a kernel.org release schedule szerint). Disztribúciók: RHEL 9.5 (6.x backport), Ubuntu 24.04 LTS (6.8 → HWE 6.11+), Debian 13 „Trixie" (6.12).

A BPF LSM bekapcsolásához három feltételnek kell teljesülnie:

# 1) A kernel build-elve van BPF LSM támogatással
grep CONFIG_BPF_LSM /boot/config-$(uname -r)
# CONFIG_BPF_LSM=y

# 2) A kernel parancssor tartalmazza a bpf LSM-et
cat /sys/kernel/security/lsm
# lockdown,capability,landlock,yama,apparmor,bpf

# Ha nincs ott, a /etc/default/grub-ba:
# GRUB_CMDLINE_LINUX="lsm=lockdown,capability,landlock,yama,apparmor,bpf"
# sudo update-grub && sudo reboot

# 3) bpftool elérhető (ellenőrzés és debug)
sudo bpftool prog show

Falco telepítése és szabályrendszere

A Falco a CNCF Graduated projektje (2024 februárjától), 2026-ban a 0.39 ágon van. Két forrásból olvas: a klasszikus kmod helyett modern_ebpf driver (CO-RE, vagyis Compile Once, Run Everywhere), valamint Kubernetes audit eseményekből. Az alábbi parancsok Ubuntu 24.04-en és RHEL 9-en is mennek a hivatalos repóból:

# Ubuntu/Debian
curl -fsSL https://falco.org/repo/falcosecurity-packages.asc | \
  sudo gpg --dearmor -o /usr/share/keyrings/falco-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/falco-archive-keyring.gpg] \
  https://download.falco.org/packages/deb stable main" | \
  sudo tee /etc/apt/sources.list.d/falcosecurity.list

sudo apt update && sudo apt install -y falco

# Driver kiválasztása: modern_ebpf (kernel 5.8+)
sudo falcoctl driver config --type=modern_ebpf
sudo systemctl enable --now falco-modern-bpf
sudo journalctl -u falco-modern-bpf -f

A szabályok YAML-ben íródnak, és a syscall-mintából lőnek riasztást. Egy minimális, de hasznos szabály: érzékeny fájlokhoz való olvasási hozzáférés nem-rendszergyökeres folyamatból.

- rule: Sensitive file opened for reading by non-trusted
  desc: Egy nem-megbízható folyamat /etc/shadow-ot vagy SSH kulcsot olvas
  condition: >
    open_read and
    (fd.name in (/etc/shadow, /etc/gshadow) or
     fd.name startswith /root/.ssh/) and
    not proc.name in (sshd, systemd, login, su, sudo)
  output: >
    Érzékeny fájl olvasása (user=%user.name uid=%user.uid
    command=%proc.cmdline file=%fd.name container=%container.id)
  priority: WARNING
  tags: [filesystem, mitre_credential_access, T1552]

A falcoctl egy plugin- és rule-feed manager. Az falcoctl artifact install paranccsal a CNCF által karbantartott szabálycsomagokat (k8saudit, falco-incubating-rules) lehet húzni, OCI registry-ből, aláírással ellenőrizve. Riasztások kimenete: stdout, syslog, gRPC stream, vagy falcosidekick-en keresztül Slack/PagerDuty/Loki/Elastic.

Tetragon telepítése és TracingPolicy

A Tetragon az Isovalent (Cilium) projektje, amely 2024-ben CNCF Incubating státuszba lépett, 2026-ban a 1.3 ágon stabil. A fő különbség Falcóhoz képest: a Tetragon a kernelben hoz döntést, így nincs „felhasználói térbeli rés", amelyen át a támadó az ellenőrzés előtt befejezi a műveletet (TOCTOU-szerű kerülő).

# Standalone telepítés (nem K8s)
curl -L https://github.com/cilium/tetragon/releases/download/v1.3.0/tetragon-v1.3.0-linux-amd64.tar.gz \
  | sudo tar -xz -C /usr/local/

sudo systemctl enable --now tetragon
sudo tetra getevents -o compact

# Egy TracingPolicy: tiltsuk meg, hogy a www-data felhasználó
# /etc/shadow-ot nyisson, és öljük meg a folyamatot
cat <<'EOF' | sudo tee /etc/tetragon/tetragon.conf.d/policies/block-shadow.yaml
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
  name: "block-shadow-read"
spec:
  kprobes:
  - call: "security_file_open"
    syscall: false
    args:
    - index: 0
      type: "file"
    selectors:
    - matchArgs:
      - index: 0
        operator: "Equal"
        values:
        - "/etc/shadow"
      matchActions:
      - action: Sigkill
EOF

sudo systemctl restart tetragon

A security_file_open egy LSM hook, vagyis a Tetragon nem syscall-szinten avatkozik be, hanem a hozzáférés-vezérlési döntésnél, ott, ahol a SELinux is. Ez azért fontos, mert a syscall argumentumok már feloldódtak (symlink, mount namespace), és a támadó nem tud trükközni a path-traversallal. A Sigkill akció a sértő folyamatot megöli; az Override egy adott hibakódot ad vissza, az Audit csak naplóz.

Falco vs Tetragon: mi a különbség?

A két eszköz nem teljesen helyettesítője egymásnak. Az alábbi tábla összefoglalja, mit kell mérlegelni. Éles döntésnél én mindig a fenyegetésmodellből indulok ki, nem a marketingből.

SzempontFalco 0.39Tetragon 1.3
Elsődleges fókuszDetektálás (alerting)Detektálás + prevenció
Döntéshozatal helyeFelhasználói tér (rule engine)Kernel (LSM BPF/kprobe)
Enforcement akciókNincs (riasztás)Sigkill, Override, NotifyEnforcer
SzabályformátumYAML rules + macrosKubernetes-natív TracingPolicy CRD
K8s audit log feedBeépített pluginNincs (Cilium Hubble figyeli a hálót)
KarbantartóFalcosecurity / SysdigIsovalent / Cisco
Min. kernel5.8 (modern_ebpf)5.4+ (5.10+ ajánlott)
Tipikus CPU overhead~2–4%~1–3%

Röviden: ha SOC-csapatod van, amelyik már Falco-szabályokkal dolgozik, és a riasztás-pipeline kiépített (SIEM, alertmanager), a Falco a kényelmesebb. Ha viszont Cilium-alapú hálózati biztonság van K8s-ben, vagy a fenyegetésmodelled kifejezetten supply-chain (pl. szabotált container image kompromittálódik runtime-ban), a Tetragon prevenció-képessége egyszerűen többet ad. Sok éles környezetben a kettő párhuzamosan fut: Falco a vékony, mindenre kiterjedő észlelésre, Tetragon a néhány tucat magas értékű prevenciós szabályra.

Egy másik szempont: a klasszikus MAC-rendszerek (a részleteket lásd a SELinux és AppArmor a gyakorlatban cikkben) statikus politikát adnak, az eBPF-eszközök pedig dinamikus, eseményalapú szabályokat. A kettő nem versenyez, kiegészíti egymást.

Hogyan integrálható Kubernetesszel?

Mindkét projekt Helm chartot kínál. Falco esetén:

helm repo add falcosecurity https://falcosecurity.github.io/charts
helm install falco falcosecurity/falco \
  --namespace falco --create-namespace \
  --set driver.kind=modern_ebpf \
  --set tty=true \
  --set falcosidekick.enabled=true \
  --set falcosidekick.config.slack.webhookurl=$SLACK_WEBHOOK

Tetragon esetén a Cilium ökoszisztémából a Helm chart hozza a CRD-ket, a daemonsetet, és (opcionálisan) Hubble-relay-en keresztül összeköti a hálózati eseményekkel:

helm repo add cilium https://helm.cilium.io
helm install tetragon cilium/tetragon \
  --namespace kube-system \
  --set tetragon.enableProcessCred=true \
  --set tetragon.enableProcessNs=true \
  --set tetragonOperator.podInfo.enabled=true

RBAC szempontból fontos: a Tetragon TracingPolicy egy cluster-scoped erőforrás, alapból csak cluster-admin írhat. Ez helyes alapértelmezés, mert prevenciós szabályt nem ad ki random namespace owner. A Falco-rules ConfigMap viszont namespace-scoped, ezért érdemes GitOps-os szabálykezelést (Flux/ArgoCD) tenni elé, hogy ne tudja valaki kézzel némítani. Részletesebb DevSecOps-folyamatról a Linux sebezhetőségvizsgálat automatizálása cikkben írtam.

Mekkora teljesítményhatása van az eBPF-nek?

A leggyakoribb félelem: „az eBPF mindent lassít". A valóság azért árnyaltabb. Egy jól megírt eBPF program a kernel-mód belépés után néhány száz nanoszekundumot fut. A syscall-szintű mérés tipikusan 200–800 ns extra latency-t mutat, ami egy átlagos webszerver-workloadon mérhetetlen.

Reális, általam mért éles számok (Falco modern_ebpf, default ruleset, ~5000 syscall/s/node):

  • CPU overhead: 1.8–3.5% (8-magos szerver, Xeon Gold 6338)
  • Memória: ~150 MB RSS a Falco userspace daemonra; az eBPF map-ek további ~30 MB-ot foglalnak
  • Tail latency p99: +120 µs (ha a kimenet syslog/journal felé megy)

Két dolog tudja eldobni ezt: (1) ha túl bőkezű szabályokat írsz (pl. minden open()-t naplózol, kontextusfilter nélkül), (2) ha a map mérete kicsi és állandóan evict-elődik. A bpftool prog profile parancs CPU ciklusban mutatja meg, melyik program drága. Éles bevezetés előtt mindig ezzel mérek.

Éles üzemi tippek és buktatók

Pár dolog, amit ne kelljen újra megtanulni:

  • Verifier limit. A kernel verifier 2026-ban is ~1M instrukciót enged programonként. Ha komplex policyt írsz, oszd több programra és láncold tail call-lal.
  • CO-RE vs kmod. A modern_ebpf driver minden 5.8+ kernelen működik kompilálás nélkül, így kerüld a régi kernel modult, mert az minden kernel-frissítésnél újrafordítást kíván.
  • Signing. A Falco és Tetragon image-ek cosign-nal aláírtak; admission controllerrel (Kyverno, OPA Gatekeeper) követeld meg az aláírt image-eket, ne csak az alkalmazás workloadon, az obszerváción is.
  • Kill switch. Tetragon prevenció mellé mindig készíts egy „break-glass" TracingPolicy-t, amellyel egy parancsra az összes Sigkill akció Audit-té válik. Egy false-positive éjjel 3-kor nem szórakoztató.
  • Naplótömeg. Az eBPF nem ingyen termel logot. Egy közepes K8s clusterben akár 50–200 MB/perc esemény is kijöhet, így előzetes Loki/Elastic kapacitásbecslés kötelező.
  • CVE-tracking. A BPF verifier maga is volt már sebezhetőség forrása (pl. CVE-2024-26581, out-of-bounds írás nft_set elemnél BPF útvonalon). Tartsd naprakészen a kernelt, főleg ha kernel.unprivileged_bpf_disabled=0.

Őszintén szólva, az eBPF-alapú futásidejű biztonság ma már nem hype, hanem a Linux-szerverüzemeltetés egyik alaprétege. A kezdeti tanulási görbe meredek (verifier, hookok, debug-szokások mind újak), de az első jól sikerült TracingPolicy után, ami megfogott egy próbálkozást éles forgalom közben, megéri.

Gyakran ismételt kérdések

Mi az eBPF és miért fontos a Linux-biztonságnál?

Az eBPF a Linux kernel egy verifikált bytecode-futtatója, amellyel kernelmodul írása nélkül lehet syscall-, hálózati- és LSM-eseményekre kötni programokat. Biztonsági szempontból ez azt jelenti, hogy a detekció és a beavatkozás a kernelben, közvetlenül a védendő művelet helyén történik — gyorsan és megkerülhetetlenül.

Mi a különbség a Falco és a Tetragon között?

A Falco felhasználói térben fut és csak detektál (riasztásokat ad ki), a Tetragon viszont a kernelben dönt és képes leállítani a sértő folyamatot (Sigkill) vagy felülírni a syscall visszatérési értékét. Falco gazdagabb szabálykönyvtárral jön, Tetragon viszont Kubernetes-natív CRD-vel és valós prevencióval.

Helyettesíti az eBPF futásidejű biztonság a SELinuxot vagy az AppArmort?

Nem. Az LSM BPF a SELinux/AppArmor mellett fut, ugyanazon hookokon. A klasszikus MAC-rendszerek deklaratív és kiforrott politikát adnak, az eBPF-alapú eszközök pedig dinamikus, eseményalapú szabályokat. Éles környezetben mindkettőt érdemes együtt használni.

Milyen kernelverzió kell az eBPF-alapú LSM-hez?

A BPF LSM minimum a Linux 5.7-ben jelent meg, de éles használatra a 6.x sorozat (különösen a 6.12 LTS) ajánlott a hookok teljes lefedettsége és a verifier-javítások miatt. A kernelt CONFIG_BPF_LSM=y-nal és a lsm=...,bpf parancssori paraméterrel kell indítani.

Mennyi CPU-t fogyaszt az eBPF futásidejű biztonság?

Jól megírt szabályokkal 1–4% CPU overhead tipikus, syscallonként néhány száz nanoszekundum latency-vel. A költség akkor szalad meg, ha túl bőkezű szabályok (minden open()) vagy alulméretezett BPF map-ek vannak; a bpftool prog profile-lal érdemes mérni éles bevezetés előtt.

Yuki Tanaka
A Szerzőről Yuki Tanaka

Linux kernel security engineer with a background in eBPF and LSM. Likes hardening more than she likes sleeping.