Aller au contenu
Administration Linux medium

eBPF : le guide complet, du noyau à Kubernetes

9 min de lecture

eBPF permet d'exécuter vos propres petits programmes à l'intérieur du noyau Linux, en toute sécurité, sans le recompiler ni charger de module. C'est la brique qui fait tourner Cilium, Falco, Tetragon et une bonne partie de l'observabilité moderne. Ce hub couvre eBPF de bout en bout : d'abord le socle noyau (programmes, vérificateur, maps), puis les trois usages qui comptent en production, l'observabilité, le réseau Kubernetes et la sécurité runtime, et enfin ce qu'eBPF coûte en risque.

Le sujet est traité en profondeur en anglais, mais très mal en français : des traductions de fournisseurs, quelques articles de 2022, et le meilleur contenu de sécurité enfermé derrière un paywall. Ce hub vise à combler ce trou, avec des procédures validées en machine virtuelle, jamais dans un conteneur, parce qu'un programme noyau ne se teste pas autrement.

eBPF (extended Berkeley Packet Filter) est une machine virtuelle intégrée au noyau Linux. Elle exécute des programmes que vous écrivez, déclenchés par des événements du noyau : un appel système, un paquet réseau qui arrive, une fonction du noyau qui s'exécute. Le programme lit ce qui se passe, agit, et renvoie un résultat, le tout sans quitter le noyau.

Trois propriétés en font une technologie à part :

  • La sécurité par vérification. Avant de charger un programme, le noyau le passe à un vérificateur qui prouve qu'il ne peut pas boucler à l'infini, lire une mémoire interdite ou faire planter le système. Un programme qui ne passe pas cette preuve est refusé. C'est ce qui rend acceptable l'idée d'exécuter du code utilisateur en espace noyau.
  • L'absence d'instrumentation. eBPF observe le système de l'extérieur du code observé. Vous n'avez ni à modifier l'application, ni à installer un agent dans un conteneur, ni à recompiler quoi que ce soit.
  • La performance. Le programme s'exécute là où l'événement se produit, dans le noyau, sans va-et-vient coûteux vers l'espace utilisateur.

Si eBPF est devenu incontournable, c'est qu'il résout un vieux problème : observer et sécuriser un système sans le ralentir ni le modifier. Avant, il fallait choisir entre un module noyau (puissant mais dangereux, un bug fait planter la machine) et un agent en espace utilisateur (sûr mais lent et aveugle à une partie du système). eBPF offre les deux : la puissance du noyau avec la sûreté du vérificateur.

Concrètement, c'est la fondation d'un écosystème entier :

DomaineOutils eBPFCe que eBPF apporte
Réseau KubernetesCilium, Hubbleremplace en grande partie iptables par un routage et un filtrage par identité
Observabilitébpftrace, Parca, Pyroscope, Inspektor Gadgettracer et profiler sans instrumenter le code
Sécurité runtimeFalco, Tetragon, Traceedétecter une action suspecte (Falco, Tracee), et la bloquer dans le noyau (Tetragon)

La conséquence pratique : comprendre eBPF, c'est comprendre la brique commune sous ces trois piles. C'est l'objet de ce hub.

Le parcours dépend de votre besoin. Trois portes d'entrée.

Le hub suit une progression, du noyau vers les usages, pour que chaque étage repose sur le précédent.

Le socle pose les fondations : ce qu'est un programme eBPF, comment l'écrire et le charger, le rôle des maps pour communiquer avec l'espace utilisateur, le vérificateur qui refuse les programmes dangereux, et CO-RE qui rend un programme portable d'un noyau à l'autre.

L'observabilité montre eBPF au travail sans écrire une ligne de C : bpftrace pour tracer le noyau à la volée, BCC et libbpf pour construire ses outils, le profiling continu avec Parca et Pyroscope, et Inspektor Gadget pour Kubernetes.

Le réseau traite Cilium, le CNI qui remplace en grande partie iptables par eBPF, son observabilité avec Hubble, et les politiques réseau, de la couche réseau (L3/L4, adresses et ports) jusqu'à l'applicatif (L7, par exemple une requête HTTP).

La sécurité runtime compare les deux approches, Falco (détection riche en écosystème) et Tetragon (blocage directement dans le noyau), sur le même cluster, plus Tracee.

Le durcissement est l'angle que personne ne traite en français : la surface d'attaque d'eBPF lui-même, les rootkits eBPF et leur détection, et comment restreindre qui peut charger un programme.

Les mêmes mots reviennent sur toutes les pages du hub. En voici les définitions courtes, à garder sous la main quand vous sautez d'un guide à l'autre. Chaque terme est développé dans la page dédiée du socle.

TermeDéfinition courte
eBPFMachine virtuelle du noyau qui exécute vos petits programmes, déclenchés par des événements.
bytecodeLe format intermédiaire, propre à eBPF, dans lequel votre C est compilé avant vérification.
hookLe point de déclenchement où s'accroche un programme (voir kprobe, tracepoint, uprobe, XDP).
kprobe / tracepointAccroche sur une fonction du noyau (kprobe, dynamique) ou un point d'observation stable (tracepoint).
uprobeAccroche sur une fonction d'un programme en espace utilisateur, pas du noyau.
helperFonction que le noyau met à disposition des programmes eBPF (lire le nom d'un processus, écrire dans une map...).
mapStructure de données du noyau, partagée avec l'espace utilisateur : la mémoire et la voix du programme.
vérificateurComposant du noyau qui prouve qu'un programme est sûr avant de le charger, sinon il le refuse.
JITCompilateur qui traduit le bytecode vérifié en code machine natif, pour la performance.
BTFDescription des types du noyau (/sys/kernel/btf/vmlinux), la carte qui rend la portabilité possible.
CO-RECompile Once Run Everywhere : compiler un programme une fois et le charger sur des noyaux différents.
  • eBPF exécute vos programmes dans le noyau Linux, déclenchés par des événements (appel système, paquet, fonction), sans module ni recompilation.
  • Un vérificateur prouve qu'un programme est sûr avant de le charger : pas de boucle infinie, pas d'accès mémoire interdit. C'est ce qui rend la technologie acceptable.
  • eBPF observe et agit sans instrumenter le code et sans quitter le noyau, d'où sa performance.
  • C'est la brique commune sous Cilium (réseau), bpftrace et Parca (observabilité), Falco et Tetragon (sécurité).
  • Le contenu francophone sur le sujet est rare et daté : ce hub vise à devenir la référence, avec des labs validés en VM, jamais en conteneur.
  • eBPF est puissant et sensible : le hub documente aussi sa surface d'attaque et son durcissement.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn