← Blog

XDP sur VPS Linux : protéger son serveur avec eBPF

Par Benjamin D. · PDG

· Mis à jour le 15 septembre 2025 · Lecture 1 min

xdp vps linux avec eBPF : serveur sécurisé et optimisé
Sommaire

xdp vps linux : pourquoi l’utiliser et ce que ça change

Sur un serveur exposé à Internet, le goulot d’étranglement se situe souvent à l’entrée du noyau. XDP (eXpress Data Path), adossé à eBPF, traite les paquets au plus près de la carte réseau, avant le stack TCP/IP. Résultat : moins de latence, moins d’IRQ, et la capacité de filtrer/compter/changer de file au niveau driver. Pour un hébergeur de jeux, d’APIs ou de sites à trafic élevé, c’est un levier concret pour absorber des pics et mitiger certaines attaques L3/L4.

Prérequis et vérifications rapides

  • Kernel récent (5.x+ recommandé) avec eBPF/XDP activés (CONFIG_BPF, CONFIG_XDP_SOCKETS, etc.).
  • Paquets outils : bpftool, iproute2, en-têtes kernel et clang/llvm si compilation.
  • Interface réseau repérée (souvent <code “>eth0 sur un VPS).
  • Accès sudo non-root et pare-feu en place (UFW/Firewalld) pour le contrôle des flux non gérés par XDP.

Installer les outils clés

Sur Debian/Ubuntu, vous pouvez démarrer ainsi :
$ sudo apt update
$ sudo apt install -y linux-headers-$(uname -r) linux-tools-$(uname -r) bpftool clang llvm make git
Astuce : bpftool feature affiche les capacités BPF/XDP actives. Pour des exemples prêts à l’emploi, le dépôt xdp-tools fournit des programmes de référence (drop/redirect/pass, load balancer minimal, etc.).

Attacher un programme XDP (exemple minimal)

Le principe : charger un objet BPF et l’attacher à une interface. Exemple :
$ clang -O2 -target bpf -c xdp_prog.c -o xdp_prog.o
$ sudo ip link set dev eth0 xdp obj xdp_prog.o sec xdp
$ sudo ip -details link show dev eth0 | grep xdp
$ sudo ip link set dev eth0 xdp off   # rollback si besoin
Modes d’attache utiles : native/driver, generic, offload.

Mise en pratique : filtrer un flood UDP avec XDP

Concrètement, un programme XDP chargé en mode natif (ip link set dev eth0 xdp obj filter.o) inspecte chaque paquet dès sa réception par la carte réseau, avant même qu'il n'atteigne la pile IP du noyau. Sur une attaque volumétrique de plusieurs centaines de milliers de paquets par seconde, cette inspection en amont réduit drastiquement la charge CPU par rapport à un filtrage iptables classique, qui traite chaque paquet plus loin dans la pile réseau.

Quand XDP n'est pas nécessaire

Pour un VPS à faible trafic ou un usage non exposé publiquement, la complexité de mise en place d'eBPF/XDP (compilation du programme, gestion des cartes BPF, compatibilité du pilote réseau) dépasse largement le bénéfice réel. Un pare-feu applicatif classique (ufw, fail2ban) suffit dans l'immense majorité des cas ; XDP prend tout son sens uniquement sur des infrastructures exposées à un trafic important ou à des tentatives de DDoS répétées.