Coletar registros da plataforma de serviço de fibra da ADVA
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
- 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 de 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 seu 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 este 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,viou Bloco de Notas).
- Localize o arquivo
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.jsonpara 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-agentPara reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgentConfigurar o encaminhamento do Syslog no ADVA FSP
- Faça login no ADVA FSP Management Console.
- Acesse Nó > Geral > Controles.
- Na seção Destinatários de eventos remotos (SysLog), clique em Adicionar.
- 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.
- 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.