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,viou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
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 de cliente real.Atualize
/path/to/ingestion-authentication-file.jsonpara 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-agentPara 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# 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 adequada (por exemplo,514para UDP).
- Substitua
Aplique o destino Syslog a um ficheiro de registo:
config>log# log-id 1 config>log>log-id# to syslog 1Ative o ficheiro de registo:
config>log>log-id# no shutdownGuarde 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.