Coletar registros DNS do ExtraHop
Este documento explica como ingerir registros de DNS do ExtraHop no Google Security Operations usando o Bindplane. O analisador extrai registros formatados em JSON de uma string de mensagem bruta, descartando o evento ao lidar com dados não JSON. Em seguida, ele mapeia campos específicos do JSON extraído para os campos correspondentes no esquema do Modelo Unificado de Dados (UDM, na sigla em inglês), convertendo tipos de dados e processando diferentes estruturas de resposta de DNS para garantir uma representação consistente.
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 você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Acesso privilegiado ao DNS do ExtraHop
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- 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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- 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 sistema operacional Windows ou Linux de acordo com as instruções a seguir.
Instalação do Windows
- Abra o Prompt de Comando ou o PowerShell como administrador.
Execute este comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de root ou sudo.
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
- 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).
- Localize o arquivo
- Edite o arquivo
config.yaml
da seguinte forma:yaml 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 log_type: 'EXTRAHOP_DNS' raw_log_field: body ingestion_labels: 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.
- Substitua
Reinicie o agente do Bindplane para aplicar as mudanças
Para reiniciar o agente do Bindplane em 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 para o fluxo de dados abertos do ExtraHop (DNS)
- Faça login na Administração do ExtraHop usando
https://<extrahop-hostname-or-IP-address>/admin
.
- Acesse Configuração do sistema > Abrir fluxos de dados.
- Clique em Adicionar destino.
- No menu suspenso Tipo de destino, selecione Syslog.
- Informe os seguintes detalhes de configuração:
- Nome: insira um nome exclusivo para identificar o destino.
- Host: insira o endereço IP do agente do Bindplane.
- Porta: digite o número da porta do agente do Bindplane.
- Protocolo: selecione UDP ou TCP, dependendo da sua configuração do Bindplane.
- (Opcional) Selecione Horário local para enviar informações do syslog com carimbos de data/hora no fuso horário local.
- Clique em Testar.
- Clique em Salvar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
ans.data |
network.dns.answers.data | Extraído do campo data na matriz answers do registro bruto. |
ans.name |
network.dns.answers.name | Extraído do campo name na matriz answers do registro bruto. |
ans.ttl |
network.dns.answers.ttl | Extraído do campo ttl na matriz answers do registro bruto. Convertido para uinteger . |
ans.typeNum |
network.dns.answers.type | Extraído do campo typeNum na matriz answers do registro bruto. Convertido para uinteger . |
ans_data |
network.dns.answers.data | Extraído do campo ans_data no registro bruto quando a matriz answers não está presente. |
ans_name |
network.dns.answers.name | Extraído do campo ans_name no registro bruto quando a matriz answers não está presente. |
ans_ttl |
network.dns.answers.ttl | Extraído do campo ans_ttl no registro bruto quando a matriz answers não está presente. Convertido para uinteger . |
client_ip |
principal.ip | Extraído do campo client_ip no registro bruto. |
dns_type |
network.dns.response | Se o valor for "response", será "true". Caso contrário, não será mapeado. Convertido para boolean |
dst_ip |
target.ip | Extraído do campo dst_ip no registro bruto. |
ip_or_host |
intermediary.hostname | Se ip_or_host não for um endereço IP válido, ele será mapeado para intermediary.hostname . |
ip_or_host |
intermediary.ip | Se ip_or_host for um endereço IP válido, ele será mapeado para intermediary.ip . |
opcode |
network.dns.opcode | Extraído do campo opcode no registro bruto. Mapeado para valores numéricos com base na string de opcode (por exemplo, "QUERY" -> 0). Convertido para uinteger . |
qname |
network.dns.questions.name | Extraído do campo qname no registro bruto. |
qtype |
network.dns.questions.type | Extraído do campo qtype no registro bruto. Mapeado para valores numéricos com base na string do tipo de registro (por exemplo, "A" -> 1). Convertido para uinteger . |
metadata.event_type | Defina como NETWORK_DNS . |
|
metadata.log_type | Defina como EXTRAHOP_DNS . |
|
network.application_protocol | Defina como DNS . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.