
Firewall leggero e veloce basato su XDP
Siper è un firewall di blacklist IP ad alte prestazioni basato su XDP, scritto in Go e C (eBPF). Permette di eliminare il traffico malevolo nella fase più precoce possibile dello stack di rete Linux, a livello del driver di rete. Sfruttando XDP (Express Data Path), Siper elabora i pacchetti prima ancora che raggiungano il pesante sottosistema di rete del kernel, offrendo prestazioni estreme anche in condizioni di forti attacchi DDoS.
Prestazioni basate su XDP: Il filtraggio dei pacchetti avviene a livello del driver della scheda di rete utilizzando XDP_DROP, con un overhead CPU significativamente inferiore rispetto a iptables o nftables.
LPM (Longest Prefix Match): Supporta il blocco basato su CIDR (es. 192.168.1.0/24) utilizzando mappe BPF LPM Trie specializzate per ricerche efficienti di intervalli IP.
Configurazione persistente: Le regole sono gestite tramite una blacklist locale basata su JSON, consentendo un facile controllo e versioning degli indirizzi bloccati.
Osservabilità in tempo reale: Metriche integrate per tracciare i contatori di pacchetti e byte per il traffico eliminato e passato.
Architettura minimalista: Un oggetto BPF compilato gestisce il data plane, mentre una CLI basata su Go gestisce il control plane.
Siper opera sul principio di separare il Control Plane (spazio utente) dal Data Plane (spazio kernel).
siper run, l'applicazione Go analizza il JSON, compila/carica l'oggetto eBPF e popola la mappa BPF con i prefissi IP.Prerequisiti
make
Spostati nella directory build/
Aggiungi o rimuovi intervalli IP dal tuo file di configurazione locale:
# Add a CIDR to the list
sudo ./siper add --cidr 1.2.3.0/24 --comment "Known botnet"
# Delete a rule
sudo ./siper del --cidr 1.2.3.0/24
Collega il firewall a un'interfaccia di rete specifica:
# Start the firewall
sudo ./siper run --iface eth0 --path ./blacklist.json
# Stop and detach the firewall
sudo ./siper stop --iface eth0
Visualizza cosa sta accadendo all'interno del kernel:
# See currently active keys in the BPF map
sudo ./siper dump-keys
# Monitor drop/pass statistics
sudo ./siper dump-metrics
I pull request sono benvenuti. Per correzioni di bug e piccoli miglioramenti, invia una pull request. Per modifiche importanti, apri prima un ticket per discutere cosa vorresti cambiare.
Questo progetto è software libero; puoi ridistribuirlo e/o modificarlo secondo i termini della licenza GPLv3. Vedi LICENSE per i dettagli.