SIEM & autres intégrations

Connecter Q-Feeds à Wazuh

Un seul installateur dépose nos indicateurs sur votre manager Wazuh sous forme de listes CDB et ajoute les décodeurs et les règles qui confrontent chaque événement à ces listes. Vous choisissez l'API standard ou TAXII 2.1, et cron garde les listes à jour.

L'intégration est open source et publiée sur GitHub : Q-Feeds/Q-Feeds-Wazuh-Integration. Récupérez-la toujours là, vous êtes ainsi certain d'avoir la version actuelle. Il vous faut un accès root sur le manager Wazuh, un HTTPS sortant vers api.qfeeds.com ou taxii.qfeeds.com, et un jeton API Q-Feeds ou des identifiants TAXII. Voir Obtenir vos threat feeds.

Prérequis

  • Manager Wazuh : 4.x ou plus récent, installé dans /var/ossec
  • Droits : root sur le manager
  • Paquets : curl. Python est livré avec Wazuh, dans /var/ossec/framework/python/bin/python3, vous n'avez donc rien à installer
  • Identifiants : un jeton API Q-Feeds pour le mode standard, ou un nom d'utilisateur et un mot de passe TAXII pour le mode TAXII
  • Réseau : accès sortant vers api.qfeeds.com ou taxii.qfeeds.com sur le port 443

Récupérer les scripts

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

Pas de git sur le manager ? Téléchargez plutôt l'archive :

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

Installer

sudo bash install.sh

L'installateur pose quelques questions, écrit la configuration, met en place le script de mise à jour, les décodeurs, les règles et une tâche cron, puis télécharge les flux une première fois. Ce qu'il demande, dans l'ordre :

  1. Mode d'intégration : API standard ou TAXII 2.1.
  2. Identifiants : votre jeton API, ou vos nom d'utilisateur et mot de passe TAXII.
  3. Flux ou collections : ce que vous activez. En mode TAXII, l'installateur trouve la racine d'API et liste les collections disponibles.
  4. Ignorer les indicateurs expirés (TAXII uniquement) : passer les indicateurs dont la date valid_until est dépassée.
  5. IPv6 (mode standard) : inclure les adresses IPv6 dans le flux d'IP.
  6. Active Response : bloquer les adresses IP détectées sur le pare-feu local, avec un délai que vous choisissez.
  7. Liste blanche d'IP : adresses qui ne doivent jamais déclencher d'alerte. Mettez-y vos propres adresses d'administration.
  8. Planification cron : toutes les 20 minutes en mode standard, une fois par jour à une heure aléatoire en mode TAXII. Les collections TAXII peuvent être volumineuses, les exécutions quotidiennes sont donc réparties entre les clients.
  9. Premier téléchargement (TAXII uniquement) : vous pouvez le sauter et laisser la première exécution cron faire le travail en arrière-plan.

Ce qui est installé

ComposantEmplacement
Configuration/etc/qfeeds/qfeeds_wazuh.conf
Script de mise à jour/usr/local/bin/qfeeds-wazuh-updater.py
Décodeurs/var/ossec/etc/decoders/qfeeds_decoders.xml
Règles/var/ossec/etc/rules/qfeeds_rules.xml
Listes CDB/var/ossec/etc/lists/qfeeds-*
Journal/var/log/qfeeds_wazuh.log
Planificationcrontab de root

L'installateur ajoute aussi les références aux listes CDB, et si vous le souhaitez la configuration Active Response, dans /var/ossec/etc/ossec.conf. Ces blocs sont encadrés par des commentaires repères pour que le désinstallateur puisse les retirer proprement, et une sauvegarde du fichier d'origine est conservée.

Comment ça marche

  • Cycle de mise à jour : le script demande d'abord à l'API si votre licence dispose de nouvelles données. Sinon, il s'arrête sans rien télécharger, c'est pourquoi une planification toutes les vingt minutes ne pèse pas.
  • Listes CDB : les indicateurs sont écrits au format key:value de Wazuh. En mode standard la valeur reste vide, en mode TAXII elle contient le contexte issu de la description STIX, par exemple threat=Trojan;category=Bot C&C.
  • Règles : les correspondances d'IP donnent 100200 et 100201, les domaines 100210 à 100213, les URL malveillantes 100220 et les hashs 100230 à 100232, toutes au niveau 10 dans le groupe de règles qfeeds.
  • Décodeurs : le paquet ajoute un décodeur Unbound DNS, aux formats RFC5424 et RFC3164, ainsi que des décodeurs Sysmon qui découpent le champ combiné Hashes en valeurs MD5, SHA-1 et SHA-256 distinctes.
  • CIDR : Wazuh compare les plages d'IP en notation pointée, seuls /8, /16, /24 et /32 sont donc pris en charge. Les autres longueurs de préfixe sont ignorées.
  • URL malveillantes : chaque entrée est stockée deux fois, avec et sans le schéma, parce que les journaux de proxy incluent en général https:// et que d'autres sources ne le font pas.
  • Redémarrage : le manager n'est redémarré que si les listes ont réellement changé. Wazuh 4.x compile les listes CDB pendant ce redémarrage.

Vérifier

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

La première commande force une mise à jour et ignore la planification liée à la licence, c'est le moyen le plus rapide de vérifier toute la chaîne. Pour tester une règle, lancez /var/ossec/bin/wazuh-logtest et collez une ligne de journal contenant une adresse de la liste.

Dans le tableau de bord, allez dans Threat Hunting et filtrez sur rule.groups: qfeeds, ou sur une règle précise comme rule.id: 100200.

Configuration

Tous les réglages se trouvent dans /etc/qfeeds/qfeeds_wazuh.conf. Les options comme le jeton API, l'IPv6 et les listes blanches s'y modifient directement et prennent effet à l'exécution suivante. Pour activer ou désactiver des flux, ou ajouter Active Response après coup, il est plus simple de relancer l'installateur, car le fichier de règles et ossec.conf doivent évoluer avec.

Détection de domaines via Unbound

Vous utilisez OPNsense avec l'agent Wazuh et voulez aussi faire vérifier les requêtes DNS ? Activez Log Queries dans Services, Unbound DNS, Advanced, laissez la verbosité du journal à sa valeur par défaut et ajoutez le journal du résolveur à la configuration de l'agent dans /var/ossec/etc/ossec.conf sur OPNsense :

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

Redémarrez l'agent avec service wazuh-agent restart. Notez que la journalisation des requêtes coûte des performances au résolveur, qu'une mise à jour du plugin peut écraser ce bloc, et que les domaines déjà bloqués par le DNSBL d'OPNsense n'apparaissent jamais dans le journal du résolveur.

Désinstaller

sudo bash uninstall.sh

Cela supprime la tâche cron, les listes CDB et leurs fichiers compilés, les décodeurs, les règles, la configuration y compris les identifiants TAXII, le script de mise à jour et les blocs ajoutés à ossec.conf. Les sauvegardes de ossec.conf sont conservées. L'entrée <localfile> pour Unbound sur un agent OPNsense n'est pas touchée, retirez-la vous-même si vous n'en avez plus besoin.

Dépannage

  • Aucune alerte : vérifiez que les listes contiennent des données avec wc -l /var/ossec/etc/lists/qfeeds-malware-ip, que les références sont présentes avec grep qfeeds /var/ossec/etc/ossec.conf, puis redémarrez le manager.
  • Le script ne télécharge rien : lisez tail -50 /var/log/qfeeds_wazuh.log et testez votre jeton avec curl -s "https://api.qfeeds.com/licenses?api_token=YOUR_TOKEN".
  • Listes non compilées : Wazuh 4.x s'en charge au redémarrage. Sur les versions plus anciennes, lancez sudo /var/ossec/bin/ossec-makelists.
  • Active Response ne bloque pas : vérifiez la configuration avec grep -A5 "Q-FEEDS-AR" /var/ossec/etc/ossec.conf et le journal /var/ossec/logs/active-responses.log.
  • Pas d'alertes sur les hashs : la comparaison de hashs demande le mode TAXII et Sysmon sur vos postes Windows, avec la journalisation des hashs activée dans la configuration Sysmon.
  • Assistance : support@qfeeds.com ou la page support. Un bug dans les scripts ? Ouvrez une issue dans le dépôt GitHub.

Voir l'installateur sur GitHub À propos de l'intégration Wazuh

Évaluez notre intelligence dès aujourd'hui !

Simplifiez vos opérations de sécurité, lancez votre essai gratuit de Q-Feeds et constatez la différence.

Activer l'accès gratuit