Coletar registros do resolvedor DNS de borda do BlueCat

Compatível com:

Este documento explica como ingerir o resolvedor de DNS de borda da BlueCat no Google Security Operations usando o Bindplane. O analisador primeiro tenta analisar a mensagem de entrada como JSON. Se for bem-sucedida, ela vai extrair e estruturar vários campos no esquema do modelo de dados unificado (UDM), com foco especial em informações relacionadas ao DNS. Se a análise JSON falhar, ele tentará métodos alternativos, como grok e pares de chave-valor, para extrair dados relevantes e mapeá-los para o esquema do UDM.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Instância do Google SecOps
  • Windows 2016 ou mais recente ou um host Linux com systemd
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • Acesso privilegiado ao DNS/DHCP da BlueCat.

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.

Receber o ID do cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de root ou sudo.
  2. Execute este comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Outros recursos de instalação

Para mais opções de instalação, consulte o guia de instalação.

Configurar o agente do BindPlane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:
    • Localize o arquivo config.yaml. Normalmente, ele fica no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    • Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: 'BLUECAT_EDGE'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    • Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
    • Substitua <customer_id> pelo ID do cliente real.
    • Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão do Google SecOps.

Reinicie o agente do Bindplane para aplicar as mudanças

  • Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Syslog no resolvedor DNS de borda da BlueCat

  1. Faça login na UI da Web do BDDS.
  2. Acesse Configuração > guia "Servidores".
  3. Selecione o nome de um BDDS para abrir a guia "Detalhes" do servidor.
  4. Clique no menu de nome do servidor > Configuração do serviço.
  5. Clique em Tipo de serviço > Syslog.
  6. Informe os seguintes detalhes de configuração:
    • Marque a caixa de seleção Carimbo de data/hora ISO 8601 para usar o formato de carimbo de data/hora ISO 8601 em mensagens registradas localmente.
    • Servidor: insira o endereço IP do agente do Bindplane.
    • Porta: digite o número da porta do agente do Bindplane.
    • Nível: selecione Informativo.
    • Marque a caixa de seleção Usar o protocolo Syslog RFC5 424 para usar o protocolo Syslog RFC5 424 em mensagens do Syslog.
    • Marque a caixa de seleção Carimbo de data/hora ISO 8601 para usar o formato de carimbo de data/hora ISO 8601 em mensagens syslog redirecionadas para um servidor syslog remoto.
    • Em Tipo de serviço, selecione DNS, DHCP e Todos os outros serviços.
    • Transporte: selecione UDP.
    • Clique em Adicionar.
  7. Clique em Atualizar.

Tabela de mapeamento da UDM

Campo de registro Mapeamento do UDM Lógica
answer.domainName network.dns.answers.name O nome de domínio da seção answer da resposta do DNS. O . à direita é removido.
answer.recordTypeId network.dns.answers.type O ID do tipo de registro da seção answer da resposta DNS, convertido em um número inteiro sem sinal.
answer.ttl network.dns.answers.ttl O valor de Time to Live (TTL) da seção answer da resposta DNS, convertido em um número inteiro sem sinal.
customerId target.user.userid O ID do cliente no registro, representando o usuário que iniciou a solicitação de DNS.
domain.domainName network.dns.authority.data O nome de domínio das seções authority ou additional da resposta do DNS. O . à direita é removido.
nome do host principal.hostname O nome do host extraído do cabeçalho Host no registro bruto, somente se o registro não estiver no formato JSON.
método network.http.method O método HTTP extraído do registro bruto, somente se o registro não estiver no formato JSON.
parentDomain principal.administrative_domain O domínio principal do nome DNS consultado. O . à direita é removido.
porta principal.port O número da porta extraído do cabeçalho Host no registro bruto, somente se o registro não estiver no formato JSON, convertido em um número inteiro.
question.domainName network.dns.questions.name O nome de domínio da seção question da solicitação de DNS. O . à direita é removido.
question.questionTypeId network.dns.questions.type O ID do tipo de pergunta da seção question da solicitação DNS, convertido em um número inteiro sem sinal.
responseData.header.aa network.dns.authoritative Indica se a resposta DNS é válida, extraída da seção responseData.
responseData.header.id network.dns.id O ID da mensagem DNS, extraído da seção responseData e convertido em um número inteiro sem sinal.
responseData.header.opcode network.dns.opcode O opcode da mensagem DNS, extraído da seção responseData e convertido em um número inteiro sem sinal.
responseData.header.ra network.dns.recursion_available Se a recursão está disponível, extraída da seção responseData.
responseData.header.rcode network.dns.response_code O código de resposta do DNS, extraído da seção responseData e convertido em um número inteiro sem sinal.
responseData.header.rd network.dns.recursion_desired Indica se a recursão está selecionada, extraída da seção responseData.
responseData.header.tc network.dns.truncated Se a mensagem DNS foi truncada ou extraída da seção responseData.
servicePointId additional.fields.value.string_value O ID do ponto de serviço do registro.
siteId additional.fields.value.string_value O ID do site no registro.
socketProtocol network.ip_protocol O protocolo de rede usado para a solicitação de DNS (TCP ou UDP).
sourceAddress principal.ip O endereço IP do cliente DNS.
sourcePort principal.port O número da porta do cliente DNS, convertido em um número inteiro.
threat.indicators security_result.category_details Os indicadores associados a uma ameaça detectada.
threat.type security_result.threat_name O tipo de ameaça detectada.
tempo metadata.event_timestamp.seconds O carimbo de data/hora do evento de DNS, extraído do campo time e convertido de milissegundos para segundos.
User agent network.http.user_agent A string do user agent extraída do registro bruto, somente se o registro não estiver no formato JSON.
additional.fields.key servicePointId ou siteId ou Content-Type ou Content-Length, dependendo do conteúdo do registro bruto.
metadata.event_type O tipo de evento, definido como NETWORK_DNS se houver uma pergunta de DNS, caso contrário, definido como GENERIC_EVENT.
metadata.log_type O tipo de registro, sempre definido como BLUECAT_EDGE.
network.application_protocol O protocolo de aplicativo, definido como DNS se houver uma consulta de DNS, caso contrário, definido como HTTP se um método HTTP for extraído ou deixado em branco.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.