SIEM & weitere Integrationen

Q-Feeds mit Linux (NFtables / IPtables) verbinden

Unser Open-Source-Installer erkennt selbst, ob Ihr Server nftables oder iptables mit ipset nutzt, lädt die Malware-IP-Blockliste in eigene Sets und richtet automatische Updates ein, sodass der Host Verkehr von bekannt schädlichen Adressen verwirft.

Die Skripte sind Open Source und liegen auf GitHub: Q-Feeds/NFtables-IPtables-integration-script. Holen Sie sie immer von dort, dann haben Sie sicher die aktuelle Version. Sie benötigen Root-Zugriff, ausgehendes HTTPS zu api.qfeeds.com und ein Q-Feeds API-Token. Siehe Ihre Threat Feeds abrufen. Der Installer bittet Sie zuerst, unsere Allgemeinen Geschäftsbedingungen und die EULA zu akzeptieren.

Voraussetzungen

  • OS: Linux mit nftables oder mit iptables und ipset
  • Distributionen: Debian, Ubuntu, CentOS, RHEL, AlmaLinux, Rocky Linux, Fedora, openSUSE Leap, SLES, Arch Linux, Alpine
  • Rechte: Root für Installation, Updates und Firewall-Änderungen
  • Feed: Malware-IP-Liste (feed_type=malware_ip)
  • Pakete: installiert das Skript für Sie, Sie müssen nichts vorbereiten. Bei nftables sind das nftables, curl, jq und util-linux. Bei iptables sind es iptables, ipset, curl, jq und util-linux.

Optionaler Test vorab:

curl -v -u api_token:YOUR_TOKEN "https://api.qfeeds.com/api?feed_type=malware_ip&limit=1000"

Skripte holen

git clone https://github.com/Q-Feeds/NFtables-IPtables-integration-script.git
cd NFtables-IPtables-integration-script
chmod +x qfeeds-installer.sh qfeeds-uninstaller.sh

Kein git auf dem Server? Laden Sie stattdessen das ZIP-Archiv von der Repository-Seite herunter und entpacken Sie es.

Installation

sudo ./qfeeds-installer.sh

Der Installer erkennt Ihre Firewall, stellt einige Fragen, richtet das Update-Skript samt Cron-Job ein und führt sofort eine erste vollständige Synchronisierung durch, damit die Blockliste direkt greift. Die Fragen der Reihe nach:

  1. AGB und EULA: geben Sie yes ein, um fortzufahren.
  2. API-Token: Ihr Q-Feeds Token. Bleibt das Feld leer, bricht der Installer ab.
  3. Feed type: Standard malware_ip. Ändern Sie das nur, wenn Sie von uns einen anderen Feed-Typ erhalten haben.
  4. Anzahl der IPs: Enter drücken für kein Limit, das empfehlen wir.
  5. Eingehend blockieren (Standard ja): Verkehr von gelisteten IPs zu Ihrem Server wird verworfen.
  6. Ausgehend blockieren (Standard nein): Verkehr von Ihrem Server zu gelisteten IPs wird verworfen.
  7. Whitelist (optional): IPv4- und IPv6-Adressen oder CIDR-Bereiche, die niemals blockiert werden dürfen, durch Komma getrennt. Tragen Sie hier Ihre eigenen Management-IPs ein, dann sperren Sie sich nicht selbst aus.
  8. Cron-Zeitplan: Standard */10 * * * *, also alle zehn Minuten. Häufig laufen zu lassen ist unproblematisch, denn das Update-Skript ruft die API nur auf, wenn Ihre Lizenz ein neues Update erlaubt.

Warnungen zur CIDR-Notation beim Abrufen des Feeds sind harmlos und können ignoriert werden. Starten Sie den Installer erneut auf einem Host, auf dem bereits ein Q-Feeds Cron-Eintrag existiert, fragt er vorher nach und lässt Ihre Crontab standardmäßig unverändert. Für unbeaufsichtigte Installationen setzen Sie QFEEDS_SKIP_CRON=1, dann wird dieser Schritt ohne Rückfrage übersprungen.

Funktionsweise

  • Firewall-Erkennung: ist der Befehl nft vorhanden, nutzt der Installer nftables, andernfalls greift er auf iptables mit ipset zurück. Das Ergebnis steht als BACKEND in der Konfigurationsdatei; Update-Skript und Uninstaller richten sich danach.
  • Eigene Regeln: nftables erhält die eigenen Tabellen ip qfeeds und ip6 qfeeds. Bei iptables liegen die Blockierregeln in separaten Chains QFEEDS_INPUT und QFEEDS_OUTPUT, mit je einer markierten Jump-Regel in INPUT und OUTPUT. Ihre bestehenden Firewall-Regeln bleiben unberührt.
  • Zwei Set-Typen: einzelne Adressen landen in einem Hash-Set, die wenigen CIDR-Bereiche in einem separaten Netz-Set. Deshalb dauert das Laden von 400.000 Adressen und mehr Sekunden statt Minuten.
  • Whitelist zuerst: Whitelist-Regeln werden vor der Blockliste geprüft, eine freigegebene Adresse kommt also immer durch.
  • Voll- und Diff-Sync: der erste Lauf lädt den gesamten Feed, spätere Läufe holen nur die Ergänzungen und Entfernungen seit Ihrem letzten Abruf. Ein Voll-Sync wird erst angewendet, wenn gültige Daten vorliegen, ein fehlgeschlagener Download lässt Sie also nie ungeschützt.
  • Selbstheilend: ist das Set leer oder deutlich kleiner als erwartet, etwa nach einem Neustart ohne gespeicherte Regeln, baut das Skript es komplett neu auf, statt ein leeres Set zu ergänzen. Zusätzlich erfolgt standardmäßig alle 24 Stunden ein Voll-Sync.
  • Nach Ihrer Lizenz: vor jedem Lauf prüft das Skript, wann Ihre Lizenz das nächste Update zulässt. Ist es noch nicht soweit, beendet es sich ohne API-Aufruf.

Überprüfen

nftables

sudo nft list table ip qfeeds
sudo nft list set ip qfeeds qfeeds_blacklist_v4 | grep -oP '\d+\.\d+\.\d+\.\d+' | wc -l
sudo nft list set ip qfeeds qfeeds_blacklist_v4_nets | head -20
sudo nft list table ip6 qfeeds

iptables mit ipset

sudo ipset list -t | grep -A4 qfeeds
sudo ipset list qfeeds_blacklist_v4 | tail -n +9 | wc -l
sudo iptables -L INPUT -n --line-numbers | grep qfeeds
sudo iptables -L QFEEDS_INPUT -n
sudo ip6tables -L QFEEDS_INPUT -n

Für beide

sudo tail -20 /var/log/qfeeds_blocklist.log
sudo grep -i error /var/log/qfeeds_blocklist.log
sudo crontab -l | grep qfeeds
sudo /usr/local/bin/update_qfeeds_blocklist.sh
sudo QFEEDS_FORCE_UPDATE=1 /usr/local/bin/update_qfeeds_blocklist.sh

Der letzte Befehl erzwingt einen Voll-Sync und ignoriert den Lizenzzeitplan. Das ist der schnellste Weg, um zu prüfen, ob alles von Anfang bis Ende funktioniert.

Konfiguration

Alle Einstellungen stehen in /etc/qfeeds/qfeeds_config.conf. Sie können diese Datei direkt bearbeiten, statt den Installer erneut zu starten; die Änderung greift beim nächsten Lauf.

EinstellungBeschreibungStandard
BACKENDFirewall, nftables oder iptablesautomatisch erkannt
API_TOKENIhr Q-Feeds API-Tokenerforderlich
FEED_TYPEAbgerufener Feedmalware_ip
LIMITMaximale Anzahl IPs, leer bedeutet kein Limitleer
BLOCK_INCOMINGVerkehr von gelisteten IPs blockierenyes
BLOCK_OUTGOINGVerkehr zu gelisteten IPs blockierenno
WHITELIST_V4IPv4-Adressen oder CIDR-Bereiche, durch Komma getrenntleer
WHITELIST_V6IPv6-Adressen oder CIDR-Bereiche, durch Komma getrenntleer
LOG_FILEPfad zur Logdatei/var/log/qfeeds_blocklist.log
FULL_SYNC_MAX_AGESekunden, bis erneut ein Voll-Sync erzwungen wird86400

Datei- und Verzeichnisorte

  • Konfiguration: /etc/qfeeds/qfeeds_config.conf
  • Sync-Status: /etc/qfeeds/.last_sync und /etc/qfeeds/.last_count
  • Update-Skript: /usr/local/bin/update_qfeeds_blocklist.sh
  • Log: /var/log/qfeeds_blocklist.log
  • Lock-Datei: /var/lock/qfeeds_blocklist.lock
  • Cron: Root-Crontab
  • Speichern der Regeln: netfilter-persistent, falls vorhanden, sonst /etc/nftables.conf bei nftables oder /etc/ipset.conf mit /etc/iptables.rules und /etc/ip6tables.rules bei iptables

Deinstallation

sudo ./qfeeds-uninstaller.sh

Der Uninstaller liest, welche Firewall konfiguriert ist, und räumt entsprechend auf. Bei nftables löscht er die Tabellen ip qfeeds und ip6 qfeeds mit allen Chains, Regeln und Sets. Bei iptables entfernt er die markierten Jump-Regeln, leert und löscht die Chains QFEEDS_INPUT und QFEEDS_OUTPUT und löscht alle qfeeds_-Sets. In beiden Fällen verschwinden außerdem das Konfigurationsverzeichnis, das Update-Skript, der Cron-Job, das Log und die Lock-Datei. Fehlt die Konfigurationsdatei, räumt er zur Sicherheit beide Varianten auf.

Systempakete bleiben installiert. Entfernen Sie sie selbst, wenn Sie sie nicht mehr benötigen:

  • Ubuntu/Debian: sudo apt-get -y remove ipset netfilter-persistent
  • CentOS/RHEL/Alma/Rocky: sudo yum -y remove ipset
  • Fedora: sudo dnf -y remove ipset
  • openSUSE/SLES: sudo zypper remove ipset
  • Arch: sudo pacman -R ipset

Vorsicht bei iptables, nftables, curl und jq: andere Teile Ihres Systems brauchen diese Pakete mit hoher Wahrscheinlichkeit.

Fehlerbehebung

  • Sets sind nach der Installation leer: prüfen Sie sudo tail -50 /var/log/qfeeds_blocklist.log, kontrollieren Sie Ihr API-Token und starten Sie dann sudo QFEEDS_FORCE_UPDATE=1 /usr/local/bin/update_qfeeds_blocklist.sh.
  • "Not time yet. Next update scheduled at ...": das ist normal. Der Cron-Job ist gelaufen, aber Ihre Lizenz erlaubt noch kein neues Update. Der nächste Lauf prüft erneut.
  • Regeln nach einem Neustart verschwunden: das Skript speichert die Regeln automatisch und erkennt beim nächsten Lauf das leere Set, das es dann neu aufbaut. Prüfen Sie zur Sicherheit, ob netfilter-persistent installiert oder der Dienst nftables aktiviert ist.
  • "Batch nft -f failed. Falling back to per-command execution": harmlos. Das passiert vor allem in LXC-Containern mit begrenztem Netlink-Puffer. Auch dann sind 400.000 Adressen und mehr in etwa zehn Sekunden geladen. Gleiches gilt für "Message too long".
  • "ipset restore failed": prüfen Sie mit command -v ipset, ob ipset vorhanden ist, und mit lsmod | grep ip_set, ob das Kernelmodul geladen ist.
  • Keine Regeln in INPUT sichtbar: bei iptables liegen die Blockierregeln in QFEEDS_INPUT. In INPUT steht nur die Jump-Regel, markiert mit dem Kommentar qfeeds. Prüfen Sie beides mit sudo iptables -L INPUT -n | grep qfeeds und sudo iptables -L QFEEDS_INPUT -n.
  • Installation bricht mit "Unable to locate package" ab: Ihre Distribution wurde nicht erkannt. Installieren Sie curl, jq und util-linux manuell, dazu nftables oder iptables mit ipset, und starten Sie den Installer erneut.
  • Support: support@qfeeds.com oder die Support-Seite. Einen Fehler in den Skripten gefunden? Melden Sie ihn als Issue im GitHub-Repository.

Vollständiges PDF-Handbuch herunterladen Skripte auf GitHub ansehen

Bewerten Sie unsere Intelligence noch heute!

Vereinfachen Sie Ihren Sicherheitsbetrieb, starten Sie Ihre kostenlose Q-Feeds Testphase und erleben Sie den Unterschied.

Kostenlosen Zugang aktivieren