SIEM & overige integraties

Q-Feeds koppelen aan Linux (NFtables / IPtables)

Onze open source installer kijkt zelf of uw server nftables of iptables met ipset gebruikt, laadt de malware-IP-blocklist in eigen sets en zet automatische updates klaar, zodat de host verkeer van bekende kwaadaardige adressen laat vallen.

De scripts zijn open source en staan op GitHub: Q-Feeds/NFtables-IPtables-integration-script. Haal ze daar altijd op, dan heeft u zeker de actuele versie. U heeft root-toegang nodig, uitgaand HTTPS naar api.qfeeds.com en een Q-Feeds API-token. Zie Uw threat feeds ophalen. De installer vraagt u eerst om onze Algemene voorwaarden en de EULA te accepteren.

Vereisten

  • OS: Linux met nftables of met iptables plus ipset
  • Distributies: Debian, Ubuntu, CentOS, RHEL, AlmaLinux, Rocky Linux, Fedora, openSUSE Leap, SLES, Arch Linux, Alpine
  • Rechten: root voor installatie, updates en firewallwijzigingen
  • Feed: malware-IP-lijst (feed_type=malware_ip)
  • Pakketten: die installeert het script voor u, u hoeft dus niets voor te bereiden. Bij nftables zijn dat nftables, curl, jq en util-linux. Bij iptables zijn dat iptables, ipset, curl, jq en util-linux.

Optionele test vooraf:

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

Scripts ophalen

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

Staat git niet op de server? Download dan de ZIP van de repositorypagina en pak die uit.

Installeren

sudo ./qfeeds-installer.sh

De installer bepaalt welke firewall u gebruikt, stelt een paar vragen, plaatst het updatescript met een cronjob en doet meteen een eerste volledige sync, zodat de blocklist direct actief is. De vragen op rij:

  1. Voorwaarden en EULA: typ yes om verder te gaan.
  2. API-token: uw Q-Feeds token. Laat u dit leeg, dan stopt de installer.
  3. Feed type: standaard malware_ip. Pas dit alleen aan als u van ons een ander feed type heeft gekregen.
  4. Aantal IP's: druk op Enter voor geen limiet, dat is onze aanbeveling.
  5. Inkomend blokkeren (standaard ja): verkeer van geblokkeerde IP's naar uw server wordt gedropt.
  6. Uitgaand blokkeren (standaard nee): verkeer van uw server naar geblokkeerde IP's wordt gedropt.
  7. Whitelist (optioneel): IPv4- en IPv6-adressen of CIDR's die nooit geblokkeerd mogen worden, gescheiden door komma's. Zet hier uw eigen beheer-IP's in, dan sluit u zichzelf nooit buiten.
  8. Cron-schema: standaard */10 * * * *, dus elke tien minuten. Vaak draaien is geen probleem, want het updatescript belt de API alleen als uw licentie een nieuwe update toestaat.

Waarschuwingen over CIDR-notatie tijdens het ophalen van de feed zijn onschuldig en kunt u negeren. Draait u de installer opnieuw op een host waar al een Q-Feeds cronregel staat, dan vraagt hij eerst om toestemming en laat hij uw crontab standaard ongemoeid. Voor onbewaakte installaties zet u QFEEDS_SKIP_CRON=1, dan wordt die stap zonder vraag overgeslagen.

Hoe het werkt

  • Firewall bepalen: is het commando nft aanwezig, dan gebruikt de installer nftables, anders valt hij terug op iptables met ipset. De keuze komt als BACKEND in het configuratiebestand te staan; het updatescript en de uninstaller volgen die.
  • Eigen regels: nftables krijgt eigen tabellen ip qfeeds en ip6 qfeeds. Bij iptables staan de blokkeerregels in aparte chains QFEEDS_INPUT en QFEEDS_OUTPUT, met één gemarkeerde jump-regel in INPUT en OUTPUT. Uw bestaande firewallregels blijven onaangeroerd.
  • Twee soorten sets: losse adressen gaan in een hashset en het kleine aantal CIDR-reeksen in een aparte netwerkset. Daardoor duurt het laden van 400.000 adressen of meer seconden in plaats van minuten.
  • Whitelist gaat voor: whitelistregels worden vóór de blocklist beoordeeld, dus een adres op de whitelist komt altijd door.
  • Volledige sync en diff-sync: de eerste run laadt de hele feed, latere runs halen alleen de toevoegingen en verwijderingen sinds uw vorige ophaalactie op. Een volledige sync wordt pas doorgevoerd als de nieuwe data binnen en gecontroleerd is, dus een mislukte download laat u nooit onbeschermd achter.
  • Zelfherstellend: is de set leeg of veel kleiner dan verwacht, bijvoorbeeld na een reboot waarbij de regels niet bewaard zijn, dan bouwt het script de set volledig opnieuw op in plaats van een lege set bij te werken. Standaard volgt er ook elke 24 uur een volledige sync.
  • Op basis van uw licentie: voor elke run kijkt het script wanneer uw licentie de volgende update toestaat. Is het nog niet zover, dan stopt het zonder de API te bellen.

Controleren

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 met 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

Voor 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

Het laatste commando forceert een volledige sync en negeert het licentieschema. Dat is de snelste manier om te zien of alles van begin tot eind werkt.

Configuratie

Alle instellingen staan in /etc/qfeeds/qfeeds_config.conf. U kunt dat bestand gewoon aanpassen in plaats van de installer opnieuw te draaien; de wijziging geldt vanaf de volgende run.

InstellingOmschrijvingStandaard
BACKENDFirewall, nftables of iptablesautomatisch bepaald
API_TOKENUw Q-Feeds API-tokenverplicht
FEED_TYPEFeed die wordt opgehaaldmalware_ip
LIMITMaximaal aantal IP's, leeg is geen limietleeg
BLOCK_INCOMINGVerkeer van geblokkeerde IP's blokkerenyes
BLOCK_OUTGOINGVerkeer naar geblokkeerde IP's blokkerenno
WHITELIST_V4IPv4-adressen of CIDR's, gescheiden door komma'sleeg
WHITELIST_V6IPv6-adressen of CIDR's, gescheiden door komma'sleeg
LOG_FILEPad naar het logbestand/var/log/qfeeds_blocklist.log
FULL_SYNC_MAX_AGEAantal seconden voordat opnieuw een volledige sync volgt86400

Bestands- en maplocaties

  • Configuratie: /etc/qfeeds/qfeeds_config.conf
  • Syncstatus: /etc/qfeeds/.last_sync en /etc/qfeeds/.last_count
  • Updatescript: /usr/local/bin/update_qfeeds_blocklist.sh
  • Log: /var/log/qfeeds_blocklist.log
  • Lockbestand: /var/lock/qfeeds_blocklist.lock
  • Cron: root crontab
  • Bewaren van regels: netfilter-persistent als dat aanwezig is, anders /etc/nftables.conf bij nftables of /etc/ipset.conf met /etc/iptables.rules en /etc/ip6tables.rules bij iptables

De-installeren

sudo ./qfeeds-uninstaller.sh

De uninstaller leest welke firewall is ingesteld en ruimt daarop af. Bij nftables verwijdert hij de tabellen ip qfeeds en ip6 qfeeds met alle chains, regels en sets. Bij iptables haalt hij de gemarkeerde jump-regels weg, leegt en verwijdert hij de chains QFEEDS_INPUT en QFEEDS_OUTPUT en verwijdert hij alle qfeeds_-sets. In beide gevallen gaan ook de configuratiemap, het updatescript, de cronjob, het log en het lockbestand weg. Ontbreekt het configuratiebestand, dan ruimt hij voor de zekerheid beide varianten op.

Systeempakketten blijven staan. Verwijder ze zelf als u ze niet meer nodig heeft:

  • 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

Wees voorzichtig met iptables, nftables, curl en jq: andere onderdelen van uw systeem hebben die vrijwel zeker nodig.

Probleemoplossing

  • Sets zijn leeg na de installatie: bekijk sudo tail -50 /var/log/qfeeds_blocklist.log, controleer uw API-token en draai daarna sudo QFEEDS_FORCE_UPDATE=1 /usr/local/bin/update_qfeeds_blocklist.sh.
  • "Not time yet. Next update scheduled at ...": dat is normaal. De cronjob heeft gedraaid, maar uw licentie staat nog geen nieuwe update toe. De volgende run kijkt opnieuw.
  • Regels zijn weg na een herstart: het script bewaart de regels automatisch en ziet bij de volgende run dat de set leeg is, waarna het die opnieuw opbouwt. Controleer voor de zekerheid of netfilter-persistent is geïnstalleerd of de nftables-service actief is.
  • "Batch nft -f failed. Falling back to per-command execution": onschuldig. Dit gebeurt vooral in LXC-containers met een beperkte netlink-buffer. Ook dan zijn 400.000 adressen of meer in ongeveer tien seconden geladen. Datzelfde geldt voor "Message too long".
  • "ipset restore failed": controleer met command -v ipset of ipset aanwezig is en met lsmod | grep ip_set of de kernelmodule geladen is.
  • Geen regels te zien in INPUT: bij iptables staan de blokkeerregels in QFEEDS_INPUT. In INPUT staat alleen de jump-regel, gemarkeerd met de opmerking qfeeds. Controleer beide met sudo iptables -L INPUT -n | grep qfeeds en sudo iptables -L QFEEDS_INPUT -n.
  • Installatie stopt met "Unable to locate package": uw distributie is niet herkend. Installeer curl, jq en util-linux handmatig, plus nftables of iptables met ipset, en draai de installer opnieuw.
  • Support: support@qfeeds.com of de supportpagina. Een fout in de scripts gevonden? Meld die als issue in de GitHub-repository.

Download de volledige pdf-handleiding Bekijk de scripts op GitHub

Evalueer onze intelligence vandaag!

Vereenvoudig uw security operations, start uw gratis Q-Feeds-proefperiode en ervaar het verschil.

Activeer gratis toegang