
Pare-feu léger et rapide basé sur XDP
Siper est un pare-feu de liste noire IP haute performance basé sur XDP, construit avec Go et C (eBPF). Il vous permet de supprimer le trafic malveillant au stade le plus précoce possible de la pile réseau Linux — au niveau du pilote réseau. En exploitant XDP (Express Data Path), Siper traite les paquets avant même qu'ils n'atteignent le sous-système réseau lourd du noyau, offrant des performances extrêmes même sous des conditions DDoS intenses.
Performances pilotées par XDP : Le filtrage de paquets se produit au niveau du pilote NIC à l'aide de XDP_DROP, ce qui entraîne une surcharge CPU considérablement réduite par rapport à iptables ou nftables.
LPM (Correspondance de préfixe la plus longue) : Prend en charge le blocage basé sur CIDR (par exemple, 192.168.1.0/24) en utilisant des cartes BPF LPM Trie spécialisées pour des recherches efficaces de plages IP.
Configuration persistante : Les règles sont gérées via une liste noire locale basée sur JSON, permettant un audit et un versionnage faciles des adresses bloquées.
Observabilité en temps réel : Métriques intégrées pour suivre les compteurs de paquets et d'octets pour le trafic rejeté et passé.
Architecture minimaliste : Un objet BPF compilé gère le plan de données, tandis qu'une CLI basée sur Go gère le plan de contrôle.
Siper fonctionne sur le principe de séparation du plan de contrôle (espace utilisateur) du plan de données (espace noyau).
siper run est exécuté, l'application Go parse le JSON, compile/charge l'objet eBPF et remplit la carte BPF avec les préfixes IP.block_list.Prérequis
make
Déplacez-vous dans le répertoire build/
Ajoutez ou supprimez des plages IP de votre fichier de configuration local :
# Ajouter un CIDR à la liste
sudo ./siper add --cidr 1.2.3.0/24 --comment "Botnet connu"
# Supprimer une règle
sudo ./siper del --cidr 1.2.3.0/24
Attachez le pare-feu à une interface réseau spécifique :
# Démarrer le pare-feu
sudo ./siper run --iface eth0 --path ./blacklist.json
# Arrêter et détacher le pare-feu
sudo ./siper stop --iface eth0
Voir ce qui se passe à l'intérieur du noyau :
# Voir les clés actuellement actives dans la carte BPF
sudo ./siper dump-keys
# Surveiller les statistiques de rejet/transmission
sudo ./siper dump-metrics
Les pull requests sont les bienvenues. Pour les corrections de bugs et les petites améliorations, veuillez soumettre une pull request. Pour les modifications majeures, veuillez d'abord ouvrir une issue pour discuter de ce que vous souhaitez changer.
Ce projet est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier selon les termes de la licence GPLv3. Voir LICENSE pour les détails.