
XDP-basierte leichte und schnelle Firewall
Siper ist eine leistungsstarke, XDP-basierte IP-Blacklist-Firewall, die mit Go und C (eBPF) entwickelt wurde. Sie ermöglicht das Verwerfen von bösartigem Datenverkehr an der frühestmöglichen Stelle im Linux-Netzwerkstack – auf der Ebene des Netzwerktreibers. Durch die Nutzung von XDP (Express Data Path) verarbeitet Siper Pakete, bevor sie das schwere Netzwerk-Subsystem des Kernels erreichen, und bietet so extreme Leistung selbst unter starken DDoS-Bedingungen.
XDP-gestützte Leistung: Die Paketfilterung erfolgt auf NIC-Treiberebene mittels XDP_DROP, was zu einer deutlich geringeren CPU-Auslastung im Vergleich zu iptables oder nftables führt.
LPM (Longest Prefix Match): Unterstützt CIDR-basiertes Blockieren (z.B. 192.168.1.0/24) mittels spezialisierter BPF-LPM-Trie-Maps für effiziente IP-Bereichssuchen.
Dauerhafte Konfiguration: Regeln werden über eine lokale JSON-basierte Blacklist verwaltet, was eine einfache Überprüfung und Versionierung blockierter Adressen ermöglicht.
Echtzeit-Beobachtbarkeit: Integrierte Metriken zur Verfolgung von Paket- und Byte-Zählern sowohl für verworfenen als auch durchgelassenen Datenverkehr.
Minimalistische Architektur: Ein kompiliertes BPF-Objekt übernimmt die Datenebene, während ein Go-basiertes CLI die Steuerungsebene verwaltet.
Siper arbeitet nach dem Prinzip der Trennung von Steuerungsebene (Userspace) und Datenebene (Kernelspace).
Eingang: Ein Paket trifft an der Netzwerkschnittstelle ein.
Lookup: Das XDP-Programm fängt das Paket ab und führt eine Suche in der block_list-Map durch.
Urteil:
Voraussetzungen
make
Wechseln Sie in das build/-Verzeichnis
Fügen Sie IP-Bereiche zu Ihrer lokalen Konfigurationsdatei hinzu oder entfernen Sie sie:
# 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
Binden Sie die Firewall an eine bestimmte Netzwerkschnittstelle:
# Start the firewall
sudo ./siper run --iface eth0 --path ./blacklist.json
# Stop and detach the firewall
sudo ./siper stop --iface eth0
Sehen Sie, was im Kernel passiert:
# See currently active keys in the BPF map
sudo ./siper dump-keys
# Monitor drop/pass statistics
sudo ./siper dump-metrics
Pull-Requests sind willkommen. Für Fehlerbehebungen und kleine Verbesserungen reichen Sie bitte einen Pull-Request ein. Bei größeren Änderungen eröffnen Sie bitte zunächst ein Issue, um zu besprechen, was Sie ändern möchten.
Dieses Projekt ist freie Software; Sie können es unter den Bedingungen der GPLv3-Lizenz weiterverbreiten und/oder modifizieren. Einzelheiten finden Sie in der Datei LICENSE.