Coletar registros do DNSFilter

Compatível com:

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

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, DNSFilter HEC Feed).
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione DNSFILTER como o Tipo de registro.
  7. Clique em Próxima.
  8. 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
  9. Clique em Próxima.
  10. 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:

  1. Na página de detalhes do feed, clique em Gerar chave secreta.
  2. Uma caixa de diálogo mostra a chave secreta.
  3. Copie e salve a chave secreta com segurança.

Receber o URL do endpoint do feed

  1. Acesse a guia Detalhes do feed.
  2. Na seção Informações do endpoint, copie o URL do endpoint do feed.
  3. O formato do URL é:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    ou

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. Salve esse URL para as próximas etapas.

  5. 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

  1. Acesse a página "Credenciais" do Console do Google Cloud.
  2. Selecione seu projeto (o projeto associado à sua instância do Google SecOps).
  3. Clique em Criar credenciais > Chave de API.
  4. Uma chave de API é criada e mostrada em uma caixa de diálogo.
  5. Clique em Editar chave de API para restringir a chave.

Restringir a chave de API

  1. Na página de configurações da chave de API: Nome: insira um nome descritivo (por exemplo, Google SecOps DNSFilter Webhook API Key).
  2. Em Restrições de API:
    1. Selecione Restringir chave.
    2. No menu suspenso Selecionar APIs, pesquise e selecione API Google SecOps (ou API Chronicle).
  3. Clique em Salvar.
  4. Copie o valor da chave de API do campo Chave de API na parte de cima da página.
  5. 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

  1. Faça login no painel do DNSFilter.
  2. Acesse Ferramentas > Exportação de dados.
  3. Na seção Destino da exportação, selecione Coletor de eventos HTTP (HEC).
  4. 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.
  5. Clique em Save Configuration.
  6. 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

  1. No painel do DNSFilter, acesse Ferramentas > Exportação de dados.
  2. Verifique se o Status aparece como Ativo ou Conectado.
  3. No console do Google SecOps, acesse Configurações do SIEM > Feeds.
  4. Localize seu feed do DNSFilter e verifique se o Status aparece como Ativo.
  5. Clique no nome do feed para ver os detalhes.
  6. Verifique a métrica Registros ingeridos para confirmar se os dados estão fluindo.
  7. 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:

  1. Verifique se o URL do HEC está correto e inclui o parâmetro da chave de API.
  2. Verifique se a chave secreta (token do HEC) foi copiada corretamente, sem espaços extras.
  3. Verifique se a chave de API do Google Cloud tem o acesso à API Chronicle ativado.
  4. Verifique se o feed do Google SecOps está com o status Ativo.
  5. 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:

  1. Verifique se as consultas DNS estão sendo geradas na sua implantação do DNSFilter.
  2. Verifique o registro de consultas do DNSFilter para confirmar se o tráfego está sendo processado.
  3. No Google SecOps, pesquise metadata.log_type = "DNSFILTER" para verificar a ingestão.
  4. Confira a métrica Registros ingeridos no feed do Google SecOps.
  5. 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.