Coletar registros de DDI da EfficientIP

Compatível com:

Este documento explica como ingerir registros de DDI da EfficientIP no Google Security Operations usando o agente do Bindplane.

O EfficientIP SOLIDserver é uma solução abrangente de DDI (DNS-DHCP-IPAM) que oferece dispositivos virtuais e de hardware altamente escalonáveis, seguros e robustos para serviços de rede essenciais, incluindo DNS, DHCP, gerenciamento de endereços IP, NTP e TFTP. A plataforma oferece gerenciamento e automação centralizados para infraestrutura de rede com recursos avançados de monitoramento e segurança.

Antes de começar

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

  • Uma instância do Google SecOps
  • Windows Server 2016 ou mais recente ou um host Linux com systemd
  • Conectividade de rede entre o agente do Bindplane e o appliance SOLIDserver da EfficientIP
  • Se você estiver executando um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
  • Acesso administrativo ao console da Web do EfficientIP SOLIDserver.
  • SOLIDserver versão 8.0 ou mais recente (testado com 8.3.x e 8.4.x)

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 de 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
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sc query observiq-otel-collector
    

    O status do serviço deve ser EM EXECUÇÃO.

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
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sudo systemctl status observiq-otel-collector
    

    O status do serviço precisa ser active (running).

Outros recursos de instalação

Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.

Configurar o agente do Bindplane para ingerir syslog e enviar ao Google SecOps

Localizar o arquivo de configuração

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Editar o arquivo de configuração

  1. Substitua todo o conteúdo de config.yaml pela seguinte configuração:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/efficientip_ddi:
        compression: gzip
        creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: EFFICIENTIP_DDI
        raw_log_field: body
        ingestion_labels:
          env: production
          source: solidserver
    
    service:
      pipelines:
        logs/efficientip_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/efficientip_ddi
    
  2. Substitua os seguintes marcadores de posição:

    • Configuração do receptor:

      • listen_address: defina como 0.0.0.0:514 para detectar todas as interfaces na porta UDP 514.
        • Para implantações não raiz do Linux, use a porta 1514 ou mais recente.
        • Verifique se a porta corresponde à configuração no SOLIDserver.
    • Configuração do exportador:

      • creds_file_path: caminho completo para o arquivo de autenticação de ingestão:

        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id: substitua YOUR_CUSTOMER_ID pelo ID do cliente da etapa anterior.

      • endpoint: endpoint regional:

        • EUA: malachiteingestion-pa.googleapis.com
        • Europa: europe-malachiteingestion-pa.googleapis.com
        • Ásia: asia-southeast1-malachiteingestion-pa.googleapis.com
        • Consulte Endpoints regionais para ver uma lista completa.
      • log_type: defina como EFFICIENTIP_DDI (é necessário uma correspondência exata).

      • ingestion_labels: rótulos opcionais para categorizar registros (personalize conforme necessário).

Salve o arquivo de configuração.

Depois de editar, salve o arquivo:

  • Linux: pressione Ctrl+O, Enter e Ctrl+X.
  • Windows: clique em Arquivo > Salvar.

Reinicie o agente do Bindplane para aplicar as mudanças

  • Para reiniciar o agente do Bindplane no Linux:

    1. Execute este comando:

      sudo systemctl restart observiq-otel-collector
      
    2. Verifique se o serviço está em execução:

      sudo systemctl status observiq-otel-collector
      
    3. Verifique se há erros nos registros:

      sudo journalctl -u observiq-otel-collector -f
      
  • Para reiniciar o agente do Bindplane em Windows:

    1. Escolha uma das seguintes opções:

      • Prompt de comando ou PowerShell como administrador:

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • Console de serviços:

        1. Pressione Win+R, digite services.msc e pressione Enter.
        2. Localize o Coletor do OpenTelemetry da observIQ.
        3. Clique com o botão direito do mouse e selecione Reiniciar.
    2. Verifique se o serviço está em execução:

      sc query observiq-otel-collector
      
    3. Verifique se há erros nos registros:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

Configurar o encaminhamento de syslog da DDI do EfficientIP

  1. Faça login no console da Web do EfficientIP SOLIDserver.
  2. No painel de navegação à esquerda, clique em Administração.
  3. Na seção Monitoring, clique em Configuration.
  4. No menu, clique em + Adicionar.
  5. Na lista Serviços, selecione os seguintes serviços: named (para registros do DNS)
  6. No campo Servidor de destino, insira o endereço IP e a porta do host do agente do Bindplane no formato <ip-address>:<port>.
    • Exemplo: 192.168.1.100:514
    • Se você estiver usando uma porta não padrão no Linux, especifique a porta de acordo com a situação (por exemplo, 192.168.1.100:1514).
  7. Clique em OK para salvar a configuração.

Verificar o encaminhamento de registros

  1. Verifique os registros do agente do Bindplane para confirmar se eles estão sendo recebidos:
    • Linux: sudo journalctl -u observiq-otel-collector -f
    • Windows: type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
  2. Procure entradas de registro que contenham eventos de consulta e resposta de DNS do SOLIDserver.
  3. Faça login no console do Google SecOps e verifique se os registros de DDI da EfficientIP aparecem na página Eventos.

Tipos de registros compatíveis

Essa integração coleta os seguintes tipos de registros do EfficientIP SOLIDserver:

  • Registros de consultas DNS: consultas DNS do cliente com tipo de consulta, nome de domínio e IP do cliente
  • Registros de respostas DNS: respostas DNS com registros de respostas, TTL e códigos de resposta
  • Registros do DHCP: operações do DHCP, incluindo DISCOVER, OFFER, REQUEST, ACK, NAK, RELEASE e INFORM.
  • Registros do DNS Guardian: eventos de segurança, incluindo detecção de comportamento suspeito e ativação/desativação de gatilhos.
  • Registros de transferência de zona de DNS: operações e notificações de transferência de zona
  • Registros de erros de DNS: erros de formato, SERVFAIL, REFUSED e outros erros de DNS

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ip_version additional.fields Unido como rótulo com a chave "ip_version" se não estiver vazio
message_size additional.fields Unido como rótulo com a chave "message_size" se não estiver vazio
domain_name additional.fields Unido como rótulo com a chave "domain_name" se não estiver vazio
N/A intermediário Mesclado de um objeto intermediário
descrição metadata.description O valor é copiado diretamente se não estiver vazio.
msg2 metadata.description Definido como msg2 se event_type for GENERIC_EVENT e a descrição estiver vazia
su_cmd metadata.event_type Defina como "PROCESS_OPEN" se su_cmd for "sudo"
activity_type metadata.event_type Definido como "NETWORK_DNS" se activity_type corresponder a dns e has_dns_questions for verdadeiro
mensagem metadata.event_type Definido como "NETWORK_DHCP" se a mensagem corresponder a dhcp
inner_message metadata.event_type Definido como "NETWORK_UNCATEGORIZED" se inner_message corresponder a padrões específicos e has_principal e has_target forem verdadeiros
difusão reversa que restaura metadata.event_type Definido como "NETWORK_DNS" se o processo for "named" e has_dns_questions for verdadeiro; definido como "STATUS_UPDATE" se o processo for "named" e has_principal for verdadeiro; definido como "GENERIC_EVENT" se o processo for "named"; definido como "NETWORK_DHCP" se o processo for "dhcpd".
PWD metadata.event_type Definido como "PROCESS_OPEN" se PWD não estiver vazio e has_target ou has_principal for verdadeiro
activity_type metadata.product_event_type Valor copiado diretamente
N/A metadata.vendor_name Defina como "EFFICIENTIP_DDI"
N/A metadata.product_name Defina como "EFFICIENTIP_DDI DHCP"
activity_type network.application_protocol Definido como "DNS" se activity_type corresponder a dns e has_dns_questions for verdadeiro.
mensagem network.application_protocol Definido como "DHCP" se a mensagem corresponder a dhcp
difusão reversa que restaura network.application_protocol Definido como "DNS" se o processo for "named" ou como "DHCP" se o processo for "dhcpd".
src_mac network.dhcp.chaddr Valor copiado diretamente se o processo for "dhcpd"
src_ip network.dhcp.ciaddr O valor é copiado diretamente se dhcp_info for "REQUEST"
giaddr network.dhcp.giaddr Valor copiado diretamente
dhcp_info network.dhcp.opcode Defina como "BOOTREQUEST" se dhcp_info for "INFORM", "DISCOVER" ou "REQUEST"; defina como "BOOTREPLY" se dhcp_info for "OFFER" ou "ACK"
siaddr network.dhcp.siaddr Valor copiado diretamente
transaction_id network.dhcp.transaction_id Valor convertido em uinteger se não estiver vazio ou for "0"
dhcp_info network.dhcp.type Definido como "INFORM" se dhcp_info for "INFORM"; definido como "DISCOVER" se for "DISCOVER"; definido como "OFFER" se for "OFFER"; definido como "REQUEST" se for "REQUEST"; definido como "ACK" se for "PACK"
yiaddr network.dhcp.yiaddr Valor copiado diretamente
src_ip network.dhcp.yiaddr Definido como "src_ip" se o processo for "dhcpd" e yiaddr estiver vazio
answer_rrs network.dns.answers Mesclado do objeto de resposta para cada rd em answer_rrs
N/A network.dns.questions Unido do objeto de perguntas se "has_dns_questions" for verdadeiro.
rcode network.dns.response_code Valor convertido em uinteger
response_code network.dns.response_code Valor mapeado para código numérico e convertido em uinteger
transport network.ip_protocol Valor em maiúsculas se corresponder a UDP ou TCP
observador observer.ip Valor convertido em ipaddress
su_cmd principal.application O valor é copiado diretamente se su_cmd for "sudo"
difusão reversa que restaura principal.application Definido para processar se o processo for "named" ou "dhcpd".
host principal.asset.hostname O valor é copiado diretamente se não estiver vazio.
nome do host principal.asset.hostname O valor é copiado diretamente se não estiver vazio e o host estiver vazio.
src_ip principal.asset.ip Valor copiado diretamente
asset_id principal.asset_id Concatenado como "ID:" + asset_id
host principal.hostname O valor é copiado diretamente se não estiver vazio.
nome do host principal.hostname O valor é copiado diretamente se não estiver vazio e o host estiver vazio.
domain_name principal.hostname O valor é copiado diretamente se a descrição contiver o nome do host e o host/nome do host estiverem vazios
src_ip principal.ip O valor é copiado diretamente se a conversão para ipaddress for bem-sucedida ou extraído da descrição se src_ip estiver vazio.
src_mac principal.mac Valor copiado diretamente
src_port principal.port Valor convertido em número inteiro
process_id principal.process.pid Valor copiado diretamente
source_user principal.user.userid Valor copiado diretamente
N/A security_result Mesclado de sec_result
dst_ip target.asset.ip Valor copiado diretamente
file_path target.file.full_path Valor copiado diretamente
dst_ip target.hostname Valor copiado diretamente se não for um endereço IP válido
host target.hostname O valor é copiado diretamente se inner_message corresponder a padrões específicos
dst_ip target.ip Valor copiado diretamente
dst_port target.port Valor convertido em número inteiro
target_cmd_line target.process.command_line Valor copiado diretamente
target_user target.user.userid Valor copiado diretamente

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