Coletar registros da plataforma de serviço de fibra da ADVA

Compatível com:

Este documento explica como ingerir registros da plataforma de serviços de fibra (FSP, na sigla em inglês) da ADVA no Google Security Operations usando o Bindplane. O analisador extrai campos das mensagens syslog do switch e do roteador, convertendo-os em pares de chave-valor. Em seguida, ele mapeia esses campos extraídos e os valores deles para os campos correspondentes no esquema UDM do Chronicle, enriquecendo os dados para análise de segurança.

Antes de começar

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

  • Uma instância do Google SecOps
  • Um host Windows 2012 SP2 ou posterior ou Linux com systemd
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
  • Acesso privilegiado ao console de gerenciamento de dispositivos FSP da ADVA.

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
    

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

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

  1. Acesse o arquivo de configuração:

    1. 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.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo config.yaml. Confira duas opções de receptor em funcionamento. Escolha aquela que corresponde à forma como seu dispositivo envia registros:

    • Opção A: receptor de registros UDP (UDP simples)
    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'ADVA_FSP'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/adva-fsp:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Opção B: receptor Syslog (recomendado para enquadramento estrito do Syslog)
    receivers:
      syslog:
        tcp:
          listen_address: "0.0.0.0:514"
        protocol: rfc5424   # or rfc3164 if your device uses BSD syslog
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'ADVA_FSP'
        raw_log_field: body
        ingestion_labels:
          source: 'adva-fsp'
          env: 'production'
    
    service:
      pipelines:
        logs/adva-fsp:
          receivers:
            - syslog
          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 encaminhamento do Syslog no ADVA FSP

  1. Faça login no ADVA FSP Management Console.
  2. Acesse > Geral > Controles.
  3. Na seção Destinatários de eventos remotos (SysLog), clique em Adicionar.
  4. Informe os seguintes detalhes de configuração:
    • Endereço IPv4/v6: insira o endereço IP do agente do Bindplane.
    • Porta: insira o número da porta do agente Bindplane (por exemplo, 514).
    • Protocolo: selecione UDP ou TCP, dependendo da configuração real do agente do Bindplane.
    • Extensão de mensagem: opcional: clique em Adicionar rótulo do usuário para incluir outros identificadores nas mensagens.
  5. Clique em Salvar para ativar a configuração.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ACCESSORDER additional.fields.value.string_value O valor é extraído do campo "ACCESSORDER" no registro bruto.
ADDRESS principal.ip O valor é extraído do campo ADDRESS no registro bruto e analisado como um endereço IP.
ADMINSTATE additional.fields.value.string_value O valor é extraído do campo ADMINSTATE no registro bruto.
AISCLIENTMDLEVEL additional.fields.value.string_value O valor é extraído do campo "AISCLIENTMDLEVEL" no registro bruto.
AISGENENABLED additional.fields.value.string_value O valor é extraído do campo AISGENENABLED no registro bruto.
AISPRIORITY additional.fields.value.string_value O valor é extraído do campo AISPRIORITY no registro bruto.
AISTXPERIOD additional.fields.value.string_value O valor é extraído do campo AISTXPERIOD no registro bruto.
AISTRIGGERTYPES additional.fields.value.string_value O valor é extraído do campo AISTRIGGERTYPES no registro bruto.
BUFFERSIZE additional.fields.value.string_value O valor é extraído do campo BUFFERSIZE no registro bruto.
CCIENABLED additional.fields.value.string_value O valor é extraído do campo CCIENABLED no registro bruto.
CCMINTERFACESTATUSTLVCONTROL additional.fields.value.string_value O valor é extraído do campo CCMINTERFACESTATUSTLVCONTROL no registro bruto.
CCMLTMPRIORITY additional.fields.value.string_value O valor é extraído do campo CCMLTMPRIORITY no registro bruto.
CFMTAGETHERTYPE additional.fields.value.string_value O valor é extraído do campo CFMTAGETHERTYPE no registro bruto.
CIR additional.fields.value.string_value O valor é extraído do campo "CIR" no registro bruto.
COS additional.fields.value.string_value O valor é extraído do campo "COS" no registro bruto.
CT metadata.description O valor é extraído do campo "CT" no registro bruto.
DESTBMAC target.mac O valor é extraído do campo DESTBMAC no registro bruto e analisado como um endereço MAC.
DHCPCIDENABLED additional.fields.value.string_value O valor é extraído do campo DHCPCIDENABLED no registro bruto.
DHCPENABLED additional.fields.value.string_value O valor é extraído do campo DHCPENABLED no registro bruto.
DHCPHOSTNAME network.dhcp.client_hostname O valor é extraído do campo DHCPHOSTNAME no registro bruto.
DHCPHOSTNAMEENABLED additional.fields.value.string_value O valor é extraído do campo DHCPHOSTNAMEENABLED no registro bruto.
DHCPHOSTNAMETYPE additional.fields.value.string_value O valor é extraído do campo DHCPHOSTNAMETYPE no registro bruto.
DHCPLOGSERVERENABLED additional.fields.value.string_value O valor é extraído do campo DHCPLOGSERVERENABLED no registro bruto.
DHCPNTPSERVERENABLED additional.fields.value.string_value O valor é extraído do campo DHCPNTPSERVERENABLED no registro bruto.
DHCPV6CIDENABLED additional.fields.value.string_value O valor é extraído do campo DHCPV6CIDENABLED no registro bruto.
DHCPV6ENABLED additional.fields.value.string_value O valor é extraído do campo DHCPV6ENABLED no registro bruto.
DHCPV6ROLE additional.fields.value.string_value O valor é extraído do campo DHCPV6ROLE no registro bruto.
DHCPVENDORINFOTYPE additional.fields.value.string_value O valor é extraído do campo DHCPVENDORINFOTYPE no registro bruto.
DIR additional.fields.value.string_value O valor é extraído do campo DIR no registro bruto.
DIREÇÃO network.direction O valor é definido como "OUTBOUND" se o campo "DIRECTION" no registro bruto for "UP" (sem diferenciação de maiúsculas e minúsculas), "INBOUND" se for "DOWN" e deixado em branco caso contrário.
ENCAPSULATIONTYPE additional.fields.value.string_value O valor é extraído do campo ENCAPSULATIONTYPE no registro bruto.
GUARANTEEDA2NBW additional.fields.value.string_value O valor é extraído do campo GUARANTEEDA2NBW no registro bruto.
HCOSMGMTENABLED additional.fields.value.string_value O valor é extraído do campo HCOSMGMTENABLED no registro bruto.
INT additional.fields.value.string_value O valor é extraído do campo INT no registro bruto.
IPMODE additional.fields.value.string_value O valor é extraído do campo IPMODE no registro bruto.
IPV6ADDR principal.ip O valor é extraído do campo IPV6ADDR no registro bruto e analisado como um endereço IP.
IPV6ADDRPREFIXLENGTH additional.fields.value.string_value O valor é extraído do campo IPV6ADDRPREFIXLENGTH no registro bruto.
IPV6MTU additional.fields.value.string_value O valor é extraído do campo IPV6MTU no registro bruto.
ITAG additional.fields.value.string_value O valor é extraído do campo ITAG no registro bruto.
ITAGENABLED additional.fields.value.string_value O valor é extraído do campo ITAGENABLED no registro bruto.
LBMTXDESTTYPE additional.fields.value.string_value O valor é extraído do campo LBMTXDESTTYPE no registro bruto.
LBMTXNUMMSGS additional.fields.value.string_value O valor é extraído do campo LBMTXNUMMSGS no registro bruto.
LBMTXVLANDROPENABLE additional.fields.value.string_value O valor é extraído do campo LBMTXVLANDROPENABLE no registro bruto.
LBMTXVLANPRIORITY additional.fields.value.string_value O valor é extraído do campo LBMTXVLANPRIORITY no registro bruto.
LLRESPONDERENABLED additional.fields.value.string_value O valor é extraído do campo LLRESPONDERENABLED no registro bruto.
LLVIDLIST additional.fields.value.string_value O valor é extraído do campo LLVIDLIST no registro bruto.
LMDUALENDEDCOUNTALLPRIOS additional.fields.value.string_value O valor é extraído do campo LMDUALENDEDCOUNTALLPRIOS no registro bruto.
LMINPROFILEONLY additional.fields.value.string_value O valor é extraído do campo LMINPROFILEONLY no registro bruto.
LMRXCOUNTALLPRIOS additional.fields.value.string_value O valor é retirado do campo LMRXCOUNTALLPRIOS no registro bruto.
LMTXCOUNTALLPRIOS additional.fields.value.string_value O valor é extraído do campo LMTXCOUNTALLPRIOS no registro bruto.
LOC additional.fields.value.string_value O valor é extraído do campo LOC no registro bruto.
LOCN additional.fields.value.string_value O valor é extraído do campo LOCN no registro bruto.
LOGINTIMEOUT additional.fields.value.string_value O valor é extraído do campo LOGINTIMEOUT no registro bruto.
LOOPBACKBLOCKINGENABLED additional.fields.value.string_value O valor é extraído do campo LOOPBACKBLOCKINGENABLED no registro bruto.
LOOPBACKCONFIG additional.fields.value.string_value O valor é extraído do campo LOOPBACKCONFIG no registro bruto.
LOOPBACKDESTMAC target.mac O valor é extraído do campo LOOPBACKDESTMAC no registro bruto e analisado como um endereço MAC.
LOOPBACKDESTMACCONTROL additional.fields.value.string_value O valor é extraído do campo LOOPBACKDESTMACCONTROL no registro bruto.
LOOPBACKINNERVLAN1 additional.fields.value.string_value O valor é extraído do campo LOOPBACKINNERVLAN1 no registro bruto.
LOOPBACKINNERVLAN1ENABLED additional.fields.value.string_value O valor é extraído do campo "LOOPBACKINNERVLAN1ENABLED" no registro bruto.
LOOPBACKINNERVLAN2 additional.fields.value.string_value O valor é extraído do campo LOOPBACKINNERVLAN2 no registro bruto.
LOOPBACKINNERVLAN2ENABLED additional.fields.value.string_value O valor é extraído do campo "LOOPBACKINNERVLAN2ENABLED" no registro bruto.
LOOPBACKINNERVLAN3 additional.fields.value.string_value O valor é extraído do campo LOOPBACKINNERVLAN3 no registro bruto.
LOOPBACKINNERVLAN3ENABLED additional.fields.value.string_value O valor é extraído do campo "LOOPBACKINNERVLAN3ENABLED" no registro bruto.
LOOPBACKOUTERITAG1 additional.fields.value.string_value O valor é extraído do campo LOOPBACKOUTERITAG1 no registro bruto.
LOOPBACKOUTERITAG1ENABLED additional.fields.value.string_value O valor é extraído do campo LOOPBACKOUTERITAG1ENABLED no registro bruto.
LOOPBACKOUTERITAG2 additional.fields.value.string_value O valor é extraído do campo LOOPBACKOUTERITAG2 no registro bruto.
LOOPBACKOUTERITAG2ENABLED additional.fields.value.string_value O valor é extraído do campo LOOPBACKOUTERITAG2ENABLED no registro bruto.
LOOPBACKOUTERITAG3 additional.fields.value.string_value O valor é extraído do campo LOOPBACKOUTERITAG3 no registro bruto.
LOOPBACKOUTERITAG3ENABLED additional.fields.value.string_value O valor é retirado do campo LOOPBACKOUTERITAG3ENABLED no registro bruto.
LOOPBACKOUTERVLAN1 additional.fields.value.string_value O valor é extraído do campo LOOPBACKOUTERVLAN1 no registro bruto.
LOOPBACKOUTERVLAN1ENABLED additional.fields.value.string_value O valor é extraído do campo "LOOPBACKOUTERVLAN1ENABLED" no registro bruto.
LOOPBACKOUTERVLAN2 additional.fields.value.string_value O valor é extraído do campo LOOPBACKOUTERVLAN2 no registro bruto.
LOOPBACKOUTERVLAN2ENABLED additional.fields.value.string_value O valor é extraído do campo LOOPBACKOUTERVLAN2ENABLED no registro bruto.
LOOPBACKOUTERVLAN3 additional.fields.value.string_value O valor é extraído do campo LOOPBACKOUTERVLAN3 no registro bruto.
LOOPBACKOUTERVLAN3ENABLED additional.fields.value.string_value O valor é extraído do campo "LOOPBACKOUTERVLAN3ENABLED" no registro bruto.
LOOPBACKSOURCEMAC principal.mac O valor é extraído do campo LOOPBACKSOURCEMAC no registro bruto e analisado como um endereço MAC.
LOOPBACKSWAPSADA additional.fields.value.string_value O valor é extraído do campo LOOPBACKSWAPSADA no registro bruto.
LOOPBACKTIMER additional.fields.value.string_value O valor é extraído do campo LOOPBACKTIMER no registro bruto.
LOWESTPRIODEFECT additional.fields.value.string_value O valor é extraído do campo LOWESTPRIODEFECT no registro bruto.
LTMTXDESTTYPE additional.fields.value.string_value O valor é extraído do campo LTMTXDESTTYPE no registro bruto.
LTMTXEGRESSID metadata.product_log_id O valor é extraído do campo LTMTXEGRESSID no registro bruto.
LTMTXFLAGS additional.fields.value.string_value O valor é extraído do campo LTMTXFLAGS no registro bruto.
LTMTXTTL additional.fields.value.string_value O valor é extraído do campo LTMTXTTL no registro bruto.
MT additional.fields.value.string_value O valor é extraído do campo MT no registro bruto.
MAXIMUMA2NBW additional.fields.value.string_value O valor é extraído do campo MAXIMUMA2NBW no registro bruto.
MVAL additional.fields.value.string_value O valor é extraído do campo MVAL no registro bruto.
NOME additional.fields.value.string_value O valor é extraído do campo "NAME" no registro bruto.
NC additional.fields.value.string_value O valor é extraído do campo "NC" no registro bruto.
PORTEID additional.fields.value.string_value O valor é extraído do campo "PORTEID" no registro bruto.
PORTLLENABLED additional.fields.value.string_value O valor é extraído do campo PORTLLENABLED no registro bruto.
PRIMARYSERVER target.ip O valor é extraído do campo PRIMARYSERVER no registro bruto e analisado como um endereço IP.
PRIMARYVID additional.fields.value.string_value O valor é extraído do campo PRIMARYVID no registro bruto.
QUEUEPROFILEID additional.fields.value.string_value O valor é extraído do campo QUEUEPROFILEID no registro bruto.
RXSHAPEREID additional.fields.value.string_value O valor é extraído do campo RXSHAPEREID no registro bruto.
SATRESPONDENABLED additional.fields.value.string_value O valor é extraído do campo SATRESPONDENABLED no registro bruto.
Suécia additional.fields.value.string_value O valor é extraído do campo SE no registro bruto.
SHAREDVIM additional.fields.value.string_value O valor é extraído do campo SHAREDVIM no registro bruto.
SVLANENABLED additional.fields.value.string_value O valor é extraído do campo SVLANENABLED no registro bruto.
SVLANID additional.fields.value.string_value O valor é extraído do campo SVLANID no registro bruto.
SYSLOCATION principal.location.country_or_region O valor é extraído do campo SYSLOCATION no registro bruto.
THVAL additional.fields.value.string_value O valor é extraído do campo THVAL no registro bruto.
TIPO additional.fields.value.string_value O valor é extraído do campo "TYPE" no registro bruto.
USERACCESSTYPE additional.fields.value.string_value O valor é extraído do campo USERACCESSTYPE no registro bruto.
USERAUTHKEY additional.fields.value.string_value O valor é extraído do campo USERAUTHKEY no registro bruto.
USERAUTHKEYLOCAL additional.fields.value.string_value O valor é extraído do campo USERAUTHKEYLOCAL no registro bruto.
USERAUTHPROTOCOL additional.fields.value.string_value O valor é extraído do campo USERAUTHPROTOCOL no registro bruto.
USERENGINEID additional.fields.value.string_value O valor é extraído do campo USERENGINEID no registro bruto.
USERKEYSLOCAL additional.fields.value.string_value O valor é extraído do campo USERKEYSLOCAL no registro bruto.
NOME DE USUÁRIO principal.user.userid O valor é extraído do campo USERNAME no registro bruto.
USERPRIVKEY additional.fields.value.string_value O valor é extraído do campo USERPRIVKEY no registro bruto.
USERPRIVKEYLOCAL additional.fields.value.string_value O valor é extraído do campo USERPRIVKEYLOCAL no registro bruto.
USERPRIVPROTOCOL additional.fields.value.string_value O valor é extraído do campo USERPRIVPROTOCOL no registro bruto.
USERSECURITYLEVEL additional.fields.value.string_value O valor é extraído do campo USERSECURITYLEVEL no registro bruto.
USERSECURITYNAME principal.user.user_display_name O valor é extraído do campo USERSECURITYNAME no registro bruto.
aplicativo principal.application O valor é extraído do campo "application" pelo analisador grok.
descrição security_result.description O valor é extraído do campo de descrição pelo analisador grok.
metadata.description O valor é definido como "Backup NTP Server Failed" se o campo CT no registro bruto for "Backup NTP Server Failed".
metadata.event_timestamp.seconds O valor é extraído do campo de carimbo de data/hora pelo analisador grok e convertido em segundos de época.
metadata.event_type O valor é definido com base na seguinte lógica:
- NETWORK_DHCP se network_dhcp_present for verdadeiro e principal_present ou target_present for verdadeiro.
- NETWORK_CONNECTION se target_present e principal_present forem verdadeiros.
- USER_RESOURCE_ACCESS se user_present for verdadeiro.
: STATUS_UPDATE se "principal_present" for "true".
ou GENERIC_EVENT.
metadata.product_log_id O valor é extraído do campo LTMTXEGRESSID no registro bruto.
metadata.product_name O valor é definido como "ADVA_FSP".
metadata.vendor_name O valor é definido como "ADVA_FSP".
network.application_protocol O valor é definido como "DHCP" se network_dhcp_present for verdadeiro e principal_present ou target_present for verdadeiro.
principal.hostname O valor é extraído do campo "principal_hostname" pelo analisador grok, com os sublinhados removidos.
principal.ip O valor é extraído do campo IPADDR no registro bruto e analisado como um endereço IP.
timestamp.seconds O valor é extraído do campo de carimbo de data/hora pelo analisador grok e convertido em segundos de época.

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