SIEM & weitere Integrationen

Q-Feeds mit Wazuh verbinden

Ein Installer legt unsere Indikatoren als CDB-Listen auf Ihrem Wazuh-Manager ab und ergänzt die Decoder und Regeln, die jedes Ereignis dagegen prüfen. Sie wählen die Standard-API oder TAXII 2.1, und Cron hält die Listen aktuell.

Die Integration ist Open Source und liegt auf GitHub: Q-Feeds/Q-Feeds-Wazuh-Integration. Holen Sie sie immer von dort, dann haben Sie sicher die aktuelle Version. Sie benötigen Root-Zugriff auf dem Wazuh-Manager, ausgehendes HTTPS zu api.qfeeds.com oder taxii.qfeeds.com und ein Q-Feeds API-Token oder TAXII-Zugangsdaten. Siehe Ihre Threat Feeds abrufen.

Voraussetzungen

  • Wazuh-Manager: 4.x oder neuer, installiert unter /var/ossec
  • Rechte: root auf dem Manager
  • Pakete: curl. Python bringt Wazuh unter /var/ossec/framework/python/bin/python3 mit, das müssen Sie nicht installieren
  • Zugangsdaten: ein Q-Feeds API-Token für den Standardmodus oder TAXII-Benutzername und Passwort für den TAXII-Modus
  • Netzwerk: ausgehender Zugriff auf api.qfeeds.com oder taxii.qfeeds.com über Port 443

Skripte holen

git clone https://github.com/Q-Feeds/Q-Feeds-Wazuh-Integration.git /tmp/qfeeds-wazuh
cd /tmp/qfeeds-wazuh

Kein git auf dem Manager? Dann laden Sie das Archiv:

curl -sL https://github.com/Q-Feeds/Q-Feeds-Wazuh-Integration/archive/refs/heads/main.tar.gz | tar xz -C /tmp
cd /tmp/Q-Feeds-Wazuh-Integration-main

Installieren

sudo bash install.sh

Der Installer stellt einige Fragen, schreibt die Konfiguration, richtet Updater, Decoder, Regeln und einen Cronjob ein und lädt die Feeds dann zum ersten Mal. Was er fragt, der Reihe nach:

  1. Integrationsmodus: Standard-API oder TAXII 2.1.
  2. Zugangsdaten: Ihr API-Token oder Ihr TAXII-Benutzername mit Passwort.
  3. Feeds oder Collections: welche Feeds aktiv sein sollen. Im TAXII-Modus ermittelt der Installer den API-Root und listet die verfügbaren Collections auf.
  4. Abgelaufene Indikatoren überspringen (nur TAXII): Indikatoren ignorieren, deren valid_until in der Vergangenheit liegt.
  5. IPv6 (Standardmodus): IPv6-Adressen in den IP-Feed aufnehmen.
  6. Active Response: getroffene IP-Adressen auf der lokalen Firewall sperren, mit einer Dauer Ihrer Wahl.
  7. IP-Whitelist: Adressen, die nie einen Alarm auslösen dürfen. Tragen Sie hier Ihre eigenen Management-Adressen ein.
  8. Cron-Zeitplan: alle 20 Minuten im Standardmodus, einmal täglich zu einer zufälligen Stunde im TAXII-Modus. TAXII-Collections können groß sein, daher werden die täglichen Läufe über die Kunden verteilt.
  9. Erster Download (nur TAXII): Sie können ihn überspringen und den ersten Cron-Lauf die Arbeit im Hintergrund erledigen lassen.

Was installiert wird

KomponenteOrt
Konfiguration/etc/qfeeds/qfeeds_wazuh.conf
Updater/usr/local/bin/qfeeds-wazuh-updater.py
Decoder/var/ossec/etc/decoders/qfeeds_decoders.xml
Regeln/var/ossec/etc/rules/qfeeds_rules.xml
CDB-Listen/var/ossec/etc/lists/qfeeds-*
Log/var/log/qfeeds_wazuh.log
ZeitplanCrontab von root

Der Installer trägt außerdem die Verweise auf die CDB-Listen und auf Wunsch die Active-Response-Konfiguration in /var/ossec/etc/ossec.conf ein. Diese Blöcke stehen zwischen Markierungen, damit der Uninstaller sie sauber entfernen kann, und eine Sicherung der ursprünglichen Datei bleibt erhalten.

So funktioniert es

  • Aktualisierungszyklus: der Updater fragt zuerst bei der API nach, ob Ihre Lizenz neue Daten hat. Wenn nicht, beendet er sich ohne Download, deshalb ist ein Zeitplan alle zwanzig Minuten keine Last.
  • CDB-Listen: Indikatoren werden im key:value-Format von Wazuh geschrieben. Im Standardmodus bleibt der Wert leer, im TAXII-Modus steht dort der Kontext aus der STIX-Beschreibung, etwa threat=Trojan;category=Bot C&C.
  • Regeln: IP-Treffer melden 100200 und 100201, Domain-Treffer 100210 bis 100213, bösartige URLs 100220 und Hashes 100230 bis 100232, alle auf Stufe 10 in der Regelgruppe qfeeds.
  • Decoder: das Paket bringt einen Unbound-DNS-Decoder für RFC5424 und RFC3164 mit sowie Sysmon-Decoder, die das kombinierte Feld Hashes in einzelne MD5-, SHA-1- und SHA-256-Werte zerlegen.
  • CIDR: Wazuh vergleicht IP-Bereiche in Punktnotation, unterstützt werden daher nur /8, /16, /24 und /32. Andere Präfixlängen werden übersprungen.
  • Bösartige URLs: jeder Eintrag wird zweimal gespeichert, mit und ohne Protokoll, weil Proxy-Logs meist https:// mitschicken und andere Quellen nicht.
  • Neustart: der Manager wird nur neu gestartet, wenn sich die Listen wirklich geändert haben. Wazuh 4.x kompiliert die CDB-Listen bei diesem Neustart.

Überprüfen

sudo QFEEDS_FORCE_UPDATE=1 /var/ossec/framework/python/bin/python3 /usr/local/bin/qfeeds-wazuh-updater.py
tail -f /var/log/qfeeds_wazuh.log
wc -l /var/ossec/etc/lists/qfeeds-malware-ip
grep -i qfeeds /var/ossec/logs/ossec.log

Der erste Befehl erzwingt eine Aktualisierung und ignoriert den Lizenzplan, das ist der schnellste Weg, die ganze Kette zu prüfen. Zum Testen einer Regel starten Sie /var/ossec/bin/wazuh-logtest und fügen eine Logzeile mit einer Adresse aus der Liste ein.

Im Dashboard gehen Sie auf Threat Hunting und filtern auf rule.groups: qfeeds oder auf eine einzelne Regel wie rule.id: 100200.

Konfiguration

Alle Einstellungen stehen in /etc/qfeeds/qfeeds_wazuh.conf. Optionen wie API-Token, IPv6 und die Whitelists ändern Sie dort direkt, sie greifen beim nächsten Lauf. Wollen Sie Feeds ein- oder ausschalten oder Active Response nachrüsten, ist es einfacher, den Installer erneut auszuführen, weil sich Regeldatei und ossec.conf mitändern müssen.

Domain-Erkennung über Unbound

Betreiben Sie OPNsense mit dem Wazuh-Agent und wollen auch DNS-Abfragen prüfen lassen? Aktivieren Sie Log Queries unter Services, Unbound DNS, Advanced, belassen Sie die Log-Verbosity auf dem Standardwert und ergänzen Sie das Resolver-Log in der Agent-Konfiguration in /var/ossec/etc/ossec.conf auf OPNsense:

<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/resolver/latest.log</location>
</localfile>

Starten Sie den Agent mit service wazuh-agent restart neu. Beachten Sie: Query-Logging kostet Resolver-Leistung, ein Plugin-Update kann diesen Block überschreiben, und Domains, die die OPNsense-DNSBL bereits blockt, tauchen im Resolver-Log nie auf.

Deinstallieren

sudo bash uninstall.sh

Das entfernt den Cronjob, die CDB-Listen samt kompilierten Dateien, die Decoder, die Regeln, die Konfiguration inklusive etwaiger TAXII-Zugangsdaten, den Updater und die in ossec.conf ergänzten Blöcke. Sicherungen von ossec.conf bleiben erhalten. Der <localfile>-Eintrag für Unbound auf einem OPNsense-Agent bleibt unangetastet, den entfernen Sie selbst, wenn Sie ihn nicht mehr brauchen.

Fehlerbehebung

  • Keine Alarme: prüfen Sie mit wc -l /var/ossec/etc/lists/qfeeds-malware-ip, ob die Listen Daten enthalten, mit grep qfeeds /var/ossec/etc/ossec.conf, ob die Verweise vorhanden sind, und starten Sie den Manager neu.
  • Der Updater lädt nichts: lesen Sie tail -50 /var/log/qfeeds_wazuh.log und testen Sie Ihr Token mit curl -s "https://api.qfeeds.com/licenses?api_token=YOUR_TOKEN".
  • Listen nicht kompiliert: Wazuh 4.x erledigt das beim Neustart. Auf älteren Versionen führen Sie sudo /var/ossec/bin/ossec-makelists aus.
  • Active Response sperrt nicht: prüfen Sie die Konfiguration mit grep -A5 "Q-FEEDS-AR" /var/ossec/etc/ossec.conf und das Log unter /var/ossec/logs/active-responses.log.
  • Keine Hash-Alarme: der Hash-Abgleich braucht den TAXII-Modus plus Sysmon auf Ihren Windows-Endpunkten, mit aktiviertem Hash-Logging in der Sysmon-Konfiguration.
  • Support: support@qfeeds.com oder die Support-Seite. Fehler in den Skripten gefunden? Öffnen Sie ein Issue im GitHub-Repository.

Installer auf GitHub ansehen Über die Wazuh-Integration

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