Recolha registos do router Nokia
Este documento explica como recolher registos do router Nokia para o Google Security Operations através de um agente Bindplane. O analisador extrai primeiro campos como datas/horas, endereços IP, nomes de anfitriões e detalhes de eventos através de padrões Grok. Em seguida, mapeia estes 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
- Certifique-se de que tem uma instância do Google SecOps.
- Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
. - Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.
- Certifique-se de que tem acesso privilegiado ao router Nokia.
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte 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 raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
- Para ver opções de instalação adicionais, consulte este guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml
. Normalmente, encontra-se no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yaml
da 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_labels
Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<customer_id>
pelo ID de cliente real.Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
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, pode usar a consola Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog no router de serviços Nokia
Entre no modo de configuração:
config# log
Defina um destino Syslog:
config>log# syslog 1
Configure 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 adequada (por exemplo,514
para UDP).
- Substitua
Aplique o destino Syslog a um ficheiro de registo:
config>log# log-id 1 config>log>log-id# to syslog 1
Ative o ficheiro de registo:
config>log>log-id# no shutdown
Guarde 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 da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
%{SYSLOGTIMESTAMP:date_time} |
metadata.event_timestamp |
Extraído do registo não processado e convertido numa data/hora. |
%{IP:src_ip} |
principal.ip |
Extraído do registo não processado. |
%{HOSTNAME:host_name} |
principal.hostname |
Extraído do registo não processado. |
%{INT:sequence_id} |
metadata.product_log_id |
Extraído do registo não processado. |
%{DATA:router_name} |
metadata.product_name |
Extraído do registo não processado. |
%{DATA:application} |
target.application |
Extraído do registo não processado. |
%{WORD:severity} |
security_result.severity |
Mapeado a partir da gravidade do registo não processado 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 registo não processado. |
%{INT:event_id} |
additional.fields.value.string_value |
Extraído do registo não processado e colocado em additional fields com a chave Event Id . |
%{GREEDYDATA:message1} |
Usado para extrair vários campos com base no event_name . Veja a lógica para campos específicos abaixo. |
|
Group %{NOTSPACE:group_id} |
target.group.product_object_id |
Extraído de message1 quando event_name está relacionado com eventos BGP. |
%{WORD} %{IP:dest_ip} |
target.ip |
Extraído de message1 quando event_name está relacionado com eventos 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 no interior de 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 no interior de 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 no interior de 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 no interior de 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 no interior de 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 no interior de 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 no interior de 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 no interior de 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 no interior de 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 no interior de 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 de event_name específicos 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 de event_name específicos 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 event_name específicos. |
remote chassis-id %{DATA:dest_mac} |
target.mac |
Extraído de message1 para valores event_name específicos. |
remote port-id %{DATA:port_id} |
target.resource.attribute.labels.value |
Extraído de message1 para valores de event_name específicos 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 de event_name específicos 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 event_name específicos. |
advRtr:%{HOSTNAME:dest_host}%{GREEDYDATA}, ip@:%{IP:dest_ip}/%{INT:dest_port} |
target.hostname , target.ip , target.port |
Extraído de message1 para valores event_name específicos. |
SID:%{INT:sid} |
network.session_id |
Extraído de message1 para valores event_name específicos. |
level:%{DATA:level} |
target.resource.attribute.labels.value |
Extraído de message1 para valores de event_name específicos 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 de event_name específicos 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 de event_name específicos 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 de event_name específicos 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 de event_name específicos 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 |
Definido 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 da Google SecOps.