SIEM & outras integrações

Ligar a Q-Feeds ao Wazuh

Um único instalador coloca os nossos indicadores no seu manager Wazuh como listas CDB e acrescenta os decoders e as regras que comparam cada evento com elas. Escolhe a API padrão ou TAXII 2.1, e o cron mantém as listas atuais.

A integração é de código aberto e está no GitHub: Q-Feeds/Q-Feeds-Wazuh-Integration. Descarregue-a sempre de lá para ter a certeza de que tem a versão atual. Precisa de acesso root no manager Wazuh, HTTPS de saída para api.qfeeds.com ou taxii.qfeeds.com e um token API da Q-Feeds ou credenciais TAXII. Consulte Obter os seus threat feeds.

Requisitos

  • Manager Wazuh: 4.x ou posterior, instalado em /var/ossec
  • Permissões: root no manager
  • Pacotes: curl. O Python vem com o Wazuh, em /var/ossec/framework/python/bin/python3, por isso não precisa de o instalar
  • Credenciais: um token API da Q-Feeds para o modo padrão, ou utilizador e palavra-passe TAXII para o modo TAXII
  • Rede: acesso de saída a api.qfeeds.com ou taxii.qfeeds.com na porta 443

Obter os scripts

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

Não tem git no manager? Descarregue o arquivo:

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

O instalador faz algumas perguntas, escreve a configuração, instala o atualizador, os decoders, as regras e uma tarefa cron, e depois descarrega os feeds pela primeira vez. O que pergunta, por ordem:

  1. Modo de integração: API padrão ou TAXII 2.1.
  2. Credenciais: o seu token API, ou o utilizador e palavra-passe TAXII.
  3. Feeds ou coleções: o que fica ativo. No modo TAXII o instalador descobre a raiz da API e lista as coleções disponíveis.
  4. Ignorar indicadores expirados (só TAXII): passar à frente os indicadores cuja data valid_until já passou.
  5. IPv6 (modo padrão): incluir endereços IPv6 no feed de IP.
  6. Active Response: bloquear na firewall local os IPs detetados, com um tempo à sua escolha.
  7. Lista branca de IP: endereços que nunca devem gerar alerta. Coloque aqui os seus próprios endereços de gestão.
  8. Agendamento cron: a cada 20 minutos no modo padrão, uma vez por dia a uma hora aleatória no modo TAXII. As coleções TAXII podem ser grandes, por isso as execuções diárias são distribuídas pelos clientes.
  9. Primeira transferência (só TAXII): pode saltá-la e deixar a primeira execução do cron fazer o trabalho em segundo plano.

O que é instalado

ComponenteLocalização
Configuração/etc/qfeeds/qfeeds_wazuh.conf
Atualizador/usr/local/bin/qfeeds-wazuh-updater.py
Decoders/var/ossec/etc/decoders/qfeeds_decoders.xml
Regras/var/ossec/etc/rules/qfeeds_rules.xml
Listas CDB/var/ossec/etc/lists/qfeeds-*
Registo/var/log/qfeeds_wazuh.log
Agendamentocrontab do root

O instalador acrescenta também as referências às listas CDB, e se quiser a configuração do Active Response, ao ficheiro /var/ossec/etc/ossec.conf. Esses blocos ficam entre comentários de marcação para que o desinstalador os possa retirar sem sobras, e é guardada uma cópia do ficheiro original.

Como funciona

  • Ciclo de atualização: o atualizador pergunta primeiro à API se a sua licença tem dados novos. Se não tiver, termina sem descarregar nada, e por isso um agendamento a cada vinte minutos não pesa.
  • Listas CDB: os indicadores são escritos no formato key:value do Wazuh. No modo padrão o valor fica vazio, no modo TAXII leva o contexto da descrição STIX, por exemplo threat=Trojan;category=Bot C&C.
  • Regras: as correspondências de IP dão 100200 e 100201, as de domínio de 100210 a 100213, os URLs maliciosos 100220 e os hashes de 100230 a 100232, todas de nível 10 no grupo de regras qfeeds.
  • Decoders: o pacote traz um decoder de Unbound DNS, nos formatos RFC5424 e RFC3164, e decoders de Sysmon que separam o campo combinado Hashes em valores MD5, SHA-1 e SHA-256 individuais.
  • CIDR: o Wazuh compara intervalos de IP em notação por pontos, por isso só suporta /8, /16, /24 e /32. Os restantes prefixos são ignorados.
  • URLs maliciosos: cada entrada é guardada duas vezes, com e sem o esquema, porque os registos de proxy costumam incluir https:// e outras fontes não.
  • Reinício: o manager só é reiniciado quando as listas mudaram mesmo. O Wazuh 4.x compila as listas CDB nesse reinício.

Verificar

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

O primeiro comando força uma atualização e ignora o agendamento da licença, sendo a forma mais rápida de confirmar toda a cadeia. Para testar uma regra, execute /var/ossec/bin/wazuh-logtest e cole uma linha de registo com um endereço da lista.

No dashboard, vá a Threat Hunting e filtre por rule.groups: qfeeds, ou por uma regra concreta como rule.id: 100200.

Configuração

Todas as definições estão em /etc/qfeeds/qfeeds_wazuh.conf. Opções como o token API, o IPv6 e as listas brancas são editadas aí e valem na execução seguinte. Para ligar ou desligar feeds, ou acrescentar o Active Response mais tarde, é mais simples correr o instalador de novo, porque o ficheiro de regras e o ossec.conf têm de mudar com isso.

Deteção de domínios com Unbound

Usa OPNsense com o agente Wazuh e quer que as consultas DNS também sejam verificadas? Ative Log Queries em Services, Unbound DNS, Advanced, deixe o nível de detalhe do registo no valor predefinido e acrescente o registo do resolver à configuração do agente em /var/ossec/etc/ossec.conf no OPNsense:

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

Reinicie o agente com service wazuh-agent restart. Tenha em conta que registar consultas custa desempenho ao resolver, que uma atualização do plugin pode sobrescrever este bloco, e que os domínios já bloqueados pela DNSBL do OPNsense nunca chegam ao registo do resolver.

Desinstalar

sudo bash uninstall.sh

Isto remove a tarefa cron, as listas CDB e os respetivos ficheiros compilados, os decoders, as regras, a configuração incluindo credenciais TAXII, o atualizador e os blocos acrescentados ao ossec.conf. As cópias de segurança do ossec.conf são mantidas. A entrada <localfile> do Unbound num agente OPNsense fica intacta, remova-a se já não precisar dela.

Resolução de problemas

  • Sem alertas: confirme com wc -l /var/ossec/etc/lists/qfeeds-malware-ip que as listas têm dados, com grep qfeeds /var/ossec/etc/ossec.conf que as referências estão lá, e reinicie o manager.
  • O atualizador não transfere nada: leia tail -50 /var/log/qfeeds_wazuh.log e teste o seu token com curl -s "https://api.qfeeds.com/licenses?api_token=YOUR_TOKEN".
  • Listas não compiladas: o Wazuh 4.x trata disso no reinício. Em versões mais antigas execute sudo /var/ossec/bin/ossec-makelists.
  • O Active Response não bloqueia: verifique a configuração com grep -A5 "Q-FEEDS-AR" /var/ossec/etc/ossec.conf e o registo /var/ossec/logs/active-responses.log.
  • Sem alertas de hashes: a comparação de hashes exige o modo TAXII e o Sysmon nos seus postos Windows, com o registo de hashes ativado na configuração do Sysmon.
  • Apoio: support@qfeeds.com ou a página de apoio. Encontrou um erro nos scripts? Abra uma issue no repositório do GitHub.

Ver o instalador no GitHub Sobre a integração com o Wazuh

Avalie a nossa inteligência hoje mesmo!

Simplifique as suas operações de segurança, inicie a sua avaliação gratuita da Q-Feeds e veja a diferença.

Ativar o acesso gratuito