SIEM & otras integraciones

Conectar Q-Feeds a Wazuh

Un único instalador deja nuestros indicadores en su manager de Wazuh como listas CDB y añade los decodificadores y reglas que comparan cada evento con ellas. Usted elige la API estándar o TAXII 2.1, y cron mantiene las listas al día.

La integración es de código abierto y está en GitHub: Q-Feeds/Q-Feeds-Wazuh-Integration. Descárguela siempre de allí para tener con seguridad la versión actual. Necesita acceso root en el manager de Wazuh, HTTPS saliente a api.qfeeds.com o taxii.qfeeds.com y un token API de Q-Feeds o credenciales TAXII. Consulte Obtener sus threat feeds.

Requisitos

  • Manager de Wazuh: 4.x o posterior, instalado en /var/ossec
  • Permisos: root en el manager
  • Paquetes: curl. Python viene con Wazuh, en /var/ossec/framework/python/bin/python3, así que no hace falta instalarlo
  • Credenciales: un token API de Q-Feeds para el modo estándar, o usuario y contraseña TAXII para el modo TAXII
  • Red: acceso saliente a api.qfeeds.com o taxii.qfeeds.com por el puerto 443

Obtener los scripts

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

¿No hay git en el manager? Descargue el archivo comprimido:

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

Instalar

sudo bash install.sh

El instalador hace unas cuantas preguntas, escribe la configuración, instala el actualizador, los decodificadores, las reglas y una tarea cron, y después descarga los feeds por primera vez. Lo que pregunta, en orden:

  1. Modo de integración: API estándar o TAXII 2.1.
  2. Credenciales: su token API, o su usuario y contraseña TAXII.
  3. Feeds o colecciones: qué se activa. En modo TAXII el instalador descubre la raíz de la API y lista las colecciones disponibles.
  4. Omitir indicadores caducados (solo TAXII): ignorar los indicadores cuya fecha valid_until ya pasó.
  5. IPv6 (modo estándar): incluir direcciones IPv6 en el feed de IP.
  6. Active Response: bloquear en el firewall local las IP detectadas, con el tiempo de espera que elija.
  7. Lista blanca de IP: direcciones que nunca deben generar una alerta. Ponga aquí sus propias direcciones de gestión.
  8. Programación de cron: cada 20 minutos en modo estándar, una vez al día a una hora aleatoria en modo TAXII. Las colecciones TAXII pueden ser grandes, por eso las ejecuciones diarias se reparten entre clientes.
  9. Primera descarga (solo TAXII): puede saltarla y dejar que la primera ejecución de cron haga el trabajo en segundo plano.

Qué se instala

ComponenteUbicación
Configuración/etc/qfeeds/qfeeds_wazuh.conf
Actualizador/usr/local/bin/qfeeds-wazuh-updater.py
Decodificadores/var/ossec/etc/decoders/qfeeds_decoders.xml
Reglas/var/ossec/etc/rules/qfeeds_rules.xml
Listas CDB/var/ossec/etc/lists/qfeeds-*
Registro/var/log/qfeeds_wazuh.log
Programacióncrontab de root

El instalador también añade las referencias a las listas CDB, y si lo desea la configuración de Active Response, a /var/ossec/etc/ossec.conf. Esos bloques van entre comentarios de marca para que el desinstalador pueda quitarlos limpiamente, y se conserva una copia del archivo original.

Cómo funciona

  • Ciclo de actualización: el actualizador pregunta primero a la API si su licencia tiene datos nuevos. Si no los hay, termina sin descargar nada, y por eso una programación cada veinte minutos no supone carga.
  • Listas CDB: los indicadores se escriben en el formato key:value de Wazuh. En modo estándar el valor queda vacío; en modo TAXII contiene el contexto de la descripción STIX, por ejemplo threat=Trojan;category=Bot C&C.
  • Reglas: las coincidencias de IP dan 100200 y 100201, las de dominio de 100210 a 100213, las URL maliciosas 100220 y los hashes de 100230 a 100232, todas en nivel 10 dentro del grupo de reglas qfeeds.
  • Decodificadores: el paquete añade un decodificador de Unbound DNS, en formato RFC5424 y RFC3164, y decodificadores de Sysmon que separan el campo combinado Hashes en valores MD5, SHA-1 y SHA-256 independientes.
  • CIDR: Wazuh compara rangos de IP en notación con puntos, así que solo admite /8, /16, /24 y /32. El resto de longitudes de prefijo se omiten.
  • URL maliciosas: cada entrada se guarda dos veces, con y sin el esquema, porque los logs de proxy suelen incluir https:// y otras fuentes no.
  • Reinicio: el manager solo se reinicia cuando las listas han cambiado de verdad. Wazuh 4.x compila las listas CDB durante ese reinicio.

Comprobar

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

El primer comando fuerza una actualización e ignora la programación de la licencia, que es la forma más rápida de comprobar toda la cadena. Para probar una regla, ejecute /var/ossec/bin/wazuh-logtest y pegue una línea de log con una dirección de la lista.

En el panel, vaya a Threat Hunting y filtre por rule.groups: qfeeds, o por una regla concreta como rule.id: 100200.

Configuración

Todos los ajustes están en /etc/qfeeds/qfeeds_wazuh.conf. Opciones como el token API, IPv6 y las listas blancas se editan ahí mismo y se aplican en la siguiente ejecución. Para activar o desactivar feeds, o añadir Active Response después, es más sencillo volver a ejecutar el instalador, porque el archivo de reglas y ossec.conf tienen que cambiar con ello.

Detección de dominios con Unbound

¿Usa OPNsense con el agente de Wazuh y quiere que también se revisen las consultas DNS? Active Log Queries en Services, Unbound DNS, Advanced, deje el nivel de detalle del log en su valor por defecto y añada el log del resolver a la configuración del agente en /var/ossec/etc/ossec.conf de OPNsense:

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

Reinicie el agente con service wazuh-agent restart. Tenga en cuenta que registrar consultas cuesta rendimiento al resolver, que una actualización del plugin puede sobrescribir este bloque y que los dominios que la DNSBL de OPNsense ya bloquea nunca llegan al log del resolver.

Desinstalar

sudo bash uninstall.sh

Esto elimina la tarea cron, las listas CDB y sus archivos compilados, los decodificadores, las reglas, la configuración incluidas las credenciales TAXII, el actualizador y los bloques añadidos a ossec.conf. Las copias de seguridad de ossec.conf se conservan. La entrada <localfile> de Unbound en un agente de OPNsense se deja intacta, quítela usted si ya no la necesita.

Resolución de problemas

  • No hay alertas: compruebe con wc -l /var/ossec/etc/lists/qfeeds-malware-ip que las listas tienen datos, con grep qfeeds /var/ossec/etc/ossec.conf que están las referencias, y reinicie el manager.
  • El actualizador no descarga nada: lea tail -50 /var/log/qfeeds_wazuh.log y pruebe su token con curl -s "https://api.qfeeds.com/licenses?api_token=YOUR_TOKEN".
  • Listas sin compilar: Wazuh 4.x lo hace al reiniciar. En versiones anteriores ejecute sudo /var/ossec/bin/ossec-makelists.
  • Active Response no bloquea: revise la configuración con grep -A5 "Q-FEEDS-AR" /var/ossec/etc/ossec.conf y el registro /var/ossec/logs/active-responses.log.
  • Sin alertas de hashes: comparar hashes requiere el modo TAXII y Sysmon en sus equipos Windows, con el registro de hashes activado en la configuración de Sysmon.
  • Soporte: support@qfeeds.com o la página de soporte. ¿Ha encontrado un fallo en los scripts? Abra una issue en el repositorio de GitHub.

Ver el instalador en GitHub Sobre la integración con Wazuh

¡Evalúe nuestra inteligencia hoy mismo!

Simplifique sus operaciones de seguridad, inicie su prueba gratuita de Q-Feeds y compruebe la diferencia.

Activar el acceso gratuito