Coletar registros do roteador Nokia
Este documento explica como coletar registros do roteador Nokia para o Google Security Operations usando um agente do Bindplane. Primeiro, o analisador extrai campos como carimbos de data/hora, endereços IP, nomes de host e detalhes de eventos usando padrões Grok. Em seguida, ele mapeia esses campos extraídos para os campos correspondentes no esquema UDM do Google SecOps, realizando transformações de dados e enriquecendo os dados com contexto adicional com base em tipos e condições de eventos específicos.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Use o Windows 2016 ou uma versão 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.
- Verifique se você tem acesso privilegiado ao roteador Nokia.
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
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.yamlda 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: '/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: NOKIA_ROUTER raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsSubstitua 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 BindPlaneAgent
Configurar o Syslog no roteador de serviço Nokia
Entre no modo de configuração:
config# logDefina um destino Syslog:
config>log# syslog 1Configure os parâmetros do Syslog:
config>log>syslog# address <syslog-server-ip> config>log>syslog# port <port-number> config>log>syslog# facility local0 config>log>syslog# level info config>log>syslog# log-prefix "Nokia-SR" config>log>syslog# description "Google SecOps syslog server"- Substitua
<syslog-server-ip>pelo endereço IP do agente do Bindplane e<port-number>pela porta apropriada (por exemplo,514para UDP).
- Substitua
Aplique o destino Syslog a um arquivo de registros:
config>log# log-id 1 config>log>log-id# to syslog 1Ative o arquivo de registro:
config>log>log-id# no shutdownSalve a configuração:
config>log>log-id# exit config>log# save
Exemplo de configuração completa:
```bash
config# log
config>log# syslog 1
config>log>syslog# address 192.168.1.100
config>log>syslog# port 514
config>log>syslog# facility local0
config>log>syslog# level info
config>log>syslog# log-prefix "Nokia-SR"
config>log>syslog# description "Google SecOps syslog server"
config>log>syslog# exit
config>log# log-id 1
config>log>log-id# to syslog 1
config>log>log-id# no shutdown
config>log>log-id# exit
config>log# save
```
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
%{SYSLOGTIMESTAMP:date_time} |
metadata.event_timestamp |
Extraído do registro bruto e convertido em um carimbo de data/hora. |
%{IP:src_ip} |
principal.ip |
Extraído do registro bruto. |
%{HOSTNAME:host_name} |
principal.hostname |
Extraído do registro bruto. |
%{INT:sequence_id} |
metadata.product_log_id |
Extraído do registro bruto. |
%{DATA:router_name} |
metadata.product_name |
Extraído do registro bruto. |
%{DATA:application} |
target.application |
Extraído do registro bruto. |
%{WORD:severity} |
security_result.severity |
Mapeado da gravidade do registro bruto com base na seguinte lógica: - CLEARED, INFO -> INFORMATIONAL - MINOR -> ERROR - WARNING -> LOW - MAJOR -> HIGH - CRITICAL -> CRITICAL |
%{DATA:event_name} |
metadata.product_event_type |
Extraído do registro bruto. |
%{INT:event_id} |
additional.fields.value.string_value |
Extraído do registro bruto e colocado em additional fields com a chave Event Id. |
%{GREEDYDATA:message1} |
Usado para extrair vários campos com base no event_name. Confira abaixo a lógica para campos específicos. |
|
Group %{NOTSPACE:group_id} |
target.group.product_object_id |
Extraído de message1 quando event_name está relacionado a eventos do BGP. |
%{WORD} %{IP:dest_ip} |
target.ip |
Extraído de message1 quando event_name está relacionado a eventos do BGP. |
%{GREEDYDATA:desc} |
security_result.description |
Extraído de message1 para vários cenários de event_name. |
SAP %{DATA:sap_id} |
additional.fields.value.string_value |
Extraído de message1 quando event_name é sapStatusChanged e colocado em additional fields com a chave SAP Id. |
in service %{INT:service_id} |
additional.fields.value.string_value |
Extraído de message1 quando event_name é sapStatusChanged e colocado em additional fields com a chave Service Id. |
\\(customer %{INT:customer_id}\\) |
additional.fields.value.string_value |
Extraído de message1 quando event_name é sapStatusChanged e colocado em additional fields com a chave Customer Id. |
admin=%{WORD:admin_status} |
additional.fields.value.string_value |
Extraído de message1 quando event_name é sapStatusChanged e colocado em additional fields com a chave Admin Status. |
oper=%{WORD:operation_status} |
additional.fields.value.string_value |
Extraído de message1 quando event_name é sapStatusChanged e colocado em additional fields com a chave Operation Status. |
flags=%{WORD:flag} |
additional.fields.value.string_value |
Extraído de message1 quando event_name é sapStatusChanged e colocado em additional fields com a chave Flag. |
with MI:SCI %{DATA:mi_sci} |
additional.fields.value.string_value |
Extraído de message1 quando event_name é tmnxMkaSessionEstablished e colocado em additional fields com a chave MI:SCI. |
on port %{DATA:port_id} |
additional.fields.value.string_value |
Extraído de message1 quando event_name é tmnxMkaSessionEstablished e colocado em additional fields com a chave Port Id. |
sub-port %{INT:sub_port_id} |
additional.fields.value.string_value |
Extraído de message1 quando event_name é tmnxMkaSessionEstablished e colocado em additional fields com a chave Sub-port Id. |
CA %{INT:ca} |
additional.fields.value.string_value |
Extraído de message1 quando event_name é tmnxMkaSessionEstablished e colocado em additional fields com a chave CA. |
EAPOL-destination %{MAC:dest_mac} |
target.mac |
Extraído de message1 quando event_name é tmnxMkaSessionEstablished. |
local port-id %{DATA:local_port_id} |
target.resource.attribute.labels.value |
Extraído de message1 para valores específicos de event_name e colocado em target.resource.attribute.labels com a chave local_port_id. |
dest-mac-type %{NOTSPACE:mac_type} |
target.resource.attribute.labels.value |
Extraído de message1 para valores específicos de event_name e colocado em target.resource.attribute.labels com a chave mac_type. |
remote system name %{HOSTNAME:dest_host} |
target.hostname |
Extraído de message1 para valores específicos de event_name. |
remote chassis-id %{DATA:dest_mac} |
target.mac |
Extraído de message1 para valores específicos de event_name. |
remote port-id %{DATA:port_id} |
target.resource.attribute.labels.value |
Extraído de message1 para valores específicos de event_name e colocado em target.resource.attribute.labels com a chave port_id. |
remote-index %{INT:remote_index} |
target.resource.attribute.labels.value |
Extraído de message1 para valores específicos de event_name e colocado em target.resource.attribute.labels com a chave remote_index. |
remote management address %{IP:dest_ip} |
target.ip |
Extraído de message1 para valores específicos de event_name. |
advRtr:%{HOSTNAME:dest_host}%{GREEDYDATA}, ip@:%{IP:dest_ip}/%{INT:dest_port} |
target.hostname, target.ip, target.port |
Extraído de message1 para valores específicos de event_name. |
SID:%{INT:sid} |
network.session_id |
Extraído de message1 para valores específicos de event_name. |
level:%{DATA:level} |
target.resource.attribute.labels.value |
Extraído de message1 para valores específicos de event_name e colocado em target.resource.attribute.labels com a chave level. |
mtid:%{INT:mtid} |
target.resource.attribute.labels.value |
Extraído de message1 para valores específicos de event_name e colocado em target.resource.attribute.labels com a chave mtid. |
type:%{WORD:type} |
target.resource.attribute.labels.value |
Extraído de message1 para valores específicos de event_name e colocado em target.resource.attribute.labels com a chave type. |
flags:%{WORD:flag} |
target.resource.attribute.labels.value |
Extraído de message1 para valores específicos de event_name e colocado em target.resource.attribute.labels com a chave flag. |
, algo:%{INT:algo} |
target.resource.attribute.labels.value |
Extraído de message1 para valores específicos de event_name e colocado em target.resource.attribute.labels com a chave algo. |
Description:%{GREEDYDATA:desc}. |
security_result.description |
Extraído de message1 quando event_name é mafEntryMatch. |
SrcIP |
principal.ip |
Extraído do campo kv_data quando event_name é mafEntryMatch. |
SrcIP: %{INT:src_port} |
principal.port |
Extraído do campo kv_data quando event_name é mafEntryMatch. |
DstIP |
target.ip |
Extraído do campo kv_data quando event_name é mafEntryMatch. |
DstIP: %{INT:dest_port} |
target.port |
Extraído do campo kv_data quando event_name é mafEntryMatch. |
Protocol |
network.ip_protocol |
Extraído do campo kv_data quando event_name é mafEntryMatch. |
| N/A | metadata.vendor_name |
Defina como NOKIA_ROUTER. |
| N/A | metadata.event_type |
Determinado com base na presença e na combinação dos campos extraídos: - src_ip, dest_ip e network presentes -> NETWORK_CONNECTION- principal presente -> STATUS_UPDATE- Caso contrário -> GENERIC_EVENT |
%{GREEDYDATA:description} |
metadata.description |
Extraído de message1 quando event_name é tmnxMkaSessionEstablished. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.