Coletar registros do DNSFilter
Este documento explica como configurar o DNSFilter para enviar registros ao Google Security Operations usando webhooks pelo protocolo HTTP Event Collector (HEC).
O DNSFilter é uma solução de segurança de DNS com tecnologia de IA que oferece proteção contra ameaças, filtragem de conteúdo e visibilidade de rede. Com a exportação de dados, é possível exportar automaticamente dados de registros de consultas de DNS para plataformas SIEM usando a API HTTP Event Collector (HEC), o que permite o monitoramento de segurança e a geração de relatórios de compliance em tempo real.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Acesso ao painel do DNSFilter com permissões de administrador ou superior
- O recurso complementar Exportação de dados do DNSFilter está ativado (disponível para os planos Basic, Pro e Enterprise como um complemento pago).
- Acesso ao console do Google Cloud (para criação de chaves de API)
Criar um feed de webhook no Google SecOps
Criar o feed
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
DNSFilter HEC Feed). - Selecione Webhook como o Tipo de origem.
- Selecione DNSFILTER como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- Delimitador de divisão (opcional): deixe em branco, já que cada solicitação de HEC contém eventos formatados corretamente.
- Namespace do recurso: o namespace do recurso
- Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed
- Clique em Próxima.
- Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Gerar e salvar a chave secreta
Depois de criar o feed, gere uma chave secreta para autenticação:
- Na página de detalhes do feed, clique em Gerar chave secreta.
- Uma caixa de diálogo mostra a chave secreta.
Copie e salve a chave secreta com segurança.
Receber o URL do endpoint do feed
- Acesse a guia Detalhes do feed.
- Na seção Informações do endpoint, copie o URL do endpoint do feed.
O formato do URL é:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateou
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSalve esse URL para as próximas etapas.
Clique em Concluído.
Criar chave de API do Google Cloud
O Google SecOps exige uma chave de API para autenticação. Crie uma chave de API restrita no console do Google Cloud.
Criar a chave de API
- Acesse a página "Credenciais" do Console do Google Cloud.
- Selecione seu projeto (o projeto associado à sua instância do Google SecOps).
- Clique em Criar credenciais > Chave de API.
- Uma chave de API é criada e mostrada em uma caixa de diálogo.
- Clique em Editar chave de API para restringir a chave.
Restringir a chave de API
- Na página de configurações da chave de API:
Nome: insira um nome descritivo (por exemplo,
Google SecOps DNSFilter Webhook API Key). - Em Restrições de API:
- Selecione Restringir chave.
- No menu suspenso Selecionar APIs, pesquise e selecione API Google SecOps (ou API Chronicle).
- Clique em Salvar.
- Copie o valor da chave de API do campo Chave de API na parte de cima da página.
Salve a chave de API com segurança.
Configurar a exportação de dados do DNSFilter
Criar o URL do endpoint do HEC
Combine o URL do endpoint do Google SecOps e a chave de API para criar o URL do HEC:
<ENDPOINT_URL>?key=<API_KEY>Exemplo:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
Configurar a exportação de dados no DNSFilter
- Faça login no painel do DNSFilter.
- Acesse Ferramentas > Exportação de dados.
- Na seção Destino da exportação, selecione Coletor de eventos HTTP (HEC).
- Na seção Configuração do HEC, insira o seguinte:
- URL do coletor de eventos HTTP: cole o URL completo do endpoint com a chave de API da etapa anterior.
- Token do coletor de eventos ativo: cole a chave secreta gerada durante a criação do feed do Google SecOps.
- Clique em Save Configuration.
O DNSFilter vai testar a conexão e mostrar uma mensagem de sucesso se a configuração estiver correta.
Verificar a ingestão de dados
- No painel do DNSFilter, acesse Ferramentas > Exportação de dados.
- Verifique se o Status aparece como Ativo ou Conectado.
- No console do Google SecOps, acesse Configurações do SIEM > Feeds.
- Localize seu feed do DNSFilter e verifique se o Status aparece como Ativo.
- Clique no nome do feed para ver os detalhes.
- Verifique a métrica Registros ingeridos para confirmar se os dados estão fluindo.
Para pesquisar eventos do DNSFilter, acesse Pesquisar e execute a seguinte consulta:
metadata.log_type = "DNSFILTER"
Referência de métodos de autenticação
Os feeds de webhook do Google SecOps são compatíveis com vários métodos de autenticação. A integração do DNSFilter HEC usa o método híbrido.
Método usado: híbrido (URL + cabeçalho)
O DNSFilter envia a chave de API no URL e a chave secreta (token do HEC) no cabeçalho da solicitação.
Formato da solicitação:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json Authorization: Splunk <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Método alternativo: cabeçalhos personalizados
Se você estiver configurando um aplicativo personalizado para enviar registros ao Google SecOps, use esse método para aumentar a segurança.
Formato da solicitação:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }Vantagens:
- A chave de API e o secret não estão visíveis no URL
- Mais seguro (cabeçalhos não registrados nos registros de acesso ao servidor da Web)
- Método preferido quando o fornecedor oferece suporte
Nomes dos cabeçalhos de autenticação
O Google SecOps aceita os seguintes nomes de cabeçalho para autenticação:
Para chave de API:
x-goog-chronicle-auth(recomendado)X-Goog-Chronicle-Auth(não diferencia maiúsculas de minúsculas)
Para chave secreta:
x-chronicle-auth(recomendado)X-Chronicle-Auth(não diferencia maiúsculas de minúsculas)Authorization: Splunk <TOKEN>(compatibilidade com HEC)
Limites e práticas recomendadas de webhook
Limites de solicitações
| Limite | Valor |
|---|---|
| Tamanho máximo da solicitação | 4 MB |
| QPS máximo (consultas por segundo) | 15.000 |
| Tempo limite da solicitação | 30 segundos |
| Comportamento de repetição | Automático com espera exponencial |
Práticas recomendadas
- Monitore o status da exportação: verifique regularmente o status da exportação de dados no painel do DNSFilter para garantir o fluxo contínuo de dados.
- Rotação de chaves de API: gire periodicamente sua chave de API do Google Cloud por segurança.
- Gerenciamento de chaves secretas: armazene a chave secreta do Google SecOps com segurança e gere novamente se ela for comprometida.
- Retenção de dados: configure políticas de retenção de dados adequadas no DNSFilter e no Google SecOps.
- Configuração de alertas: configure alertas no Google SecOps para eventos críticos de segurança de DNS.
Solução de problemas
Falha no teste de conexão
Se o teste de configuração da exportação de dados do DNSFilter falhar:
- Verifique se o URL do HEC está correto e inclui o parâmetro da chave de API.
- Verifique se a chave secreta (token do HEC) foi copiada corretamente, sem espaços extras.
- Verifique se a chave de API do Google Cloud tem o acesso à API Chronicle ativado.
- Verifique se o feed do Google SecOps está com o status Ativo.
- Verifique a conectividade de rede do DNSFilter com os endpoints do Google Cloud.
Nenhum dado aparece no Google SecOps
Se a conexão for estabelecida, mas nenhum dado aparecer:
- Verifique se as consultas DNS estão sendo geradas na sua implantação do DNSFilter.
- Verifique o registro de consultas do DNSFilter para confirmar se o tráfego está sendo processado.
- No Google SecOps, pesquise
metadata.log_type = "DNSFILTER"para verificar a ingestão. - Confira a métrica Registros ingeridos no feed do Google SecOps.
- Analise os registros de erros do feed para identificar problemas de ingestão.
A exportação de dados retorna uma mensagem de erro
Causas comuns de erros:
- Credenciais inválidas: a chave de API ou a chave secreta está incorreta ou expirou.
- Região incompatível: a região do URL do endpoint do Google SecOps não corresponde à sua instância.
- Permissões: a chave de API não tem acesso à API Chronicle ativado.
- Problemas de rede: o firewall ou proxy está bloqueando conexões HTTPS de saída.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| tempo | metadata.collected_timestamp | Convertido usando o formato de data: aaaa-MM-dd HH:mm:ss Z UTC |
| metadata.event_type | Definido como "STATUS_UPDATE" se principal_ip_present, principal_hostname_present ou principal_mac_present for verdadeiro. Caso contrário, "GENERIC_EVENT". | |
| question_type | network.dns.questions | Converti question_type para question.type usando o mapeamento de tipo de registro DNS e mesclei em uma matriz. |
| código | network.dns.response_code | Convertido usando o mapeamento de código de resposta DNS |
| protocolo | network.ip_protocol | Convertido usando o mapeamento de protocolo IP |
| cliente | principal.hostname | Valor copiado diretamente |
| request_address, ip4, ip6, source_addresses | principal.ip | Mesclado de request_address (IP extraído), ip4 (IP extraído), ip6 (IP extraído) e IPs extraídos da matriz source_addresses. |
| região | principal.location.country_or_region | Valor copiado diretamente |
| clientMac | principal.mac | O valor é copiado diretamente se corresponder à expressão regular MAC |
| clientID | principal.resource.product_object_id | Valor copiado diretamente |
| nome de usuário | principal.user.user_display_name | Valor copiado diretamente |
| user_id | principal.user.userid | Valor copiado diretamente |
| code, original_code, clientType, collection, network_name, networkID, collectionID, policy, policyID, scheduled_policy, scheduled_policyID, sec_cats, sec_allow_cats, block_cats, block_allow_cats, threat, allowed, method, organization, organizationID, applicationID, application_name, application_categoryID, application_category_name | security_result.detection_fields | Rótulos mesclados de vários campos de origem como pares de chave-valor |
| domínio | target.administrative_domain | Valor copiado diretamente |
| fqdn | target.domain.name | Valor copiado diretamente |
| metadata.product_name | Definido como "DNSFILTER" | |
| metadata.vendor_name | Definido como "DNSFILTER" |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.