Coletar registros do roteador Nokia
Este documento explica como coletar registros do Nokia Router para as operações de segurança do Google usando um agente do Bindplane. O analisador primeiro extrai campos como carimbos de data/hora, endereços IP, nomes de host e detalhes do evento 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 mais contexto com base em tipos e condições de evento específicos.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Confira 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.
- Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança 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
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 raiz 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 processar o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele está 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
,vi
ou Notepad).
- Localize o arquivo
Edite o arquivo
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 real do cliente.Atualize
/path/to/ingestion-authentication-file.json
para o caminho em que o arquivo de autenticação foi salvo na seção Receber o arquivo de autenticação de transferência 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 Services ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Syslog no roteador de serviço da Nokia
Entrar no modo de configuração:
config# log
Defina um destino do 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 apropriada (por exemplo,514
para UDP).
- Substitua
Aplique o destino do Syslog a um arquivo de registro:
config>log# log-id 1 config>log>log-id# to syslog 1
Ative o arquivo de registro:
config>log>log-id# no shutdown
Salve 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ídos do registro bruto e convertidos em um carimbo de data/hora. |
%{IP:src_ip} |
principal.ip |
Extraídos do registro bruto. |
%{HOSTNAME:host_name} |
principal.hostname |
Extraídos do registro bruto. |
%{INT:sequence_id} |
metadata.product_log_id |
Extraídos do registro bruto. |
%{DATA:router_name} |
metadata.product_name |
Extraídos do registro bruto. |
%{DATA:application} |
target.application |
Extraídos 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ídos do registro bruto. |
%{INT:event_id} |
additional.fields.value.string_value |
Extraídos do registro bruto e colocados no additional fields com a chave Event Id . |
%{GREEDYDATA:message1} |
Usado para extrair vários campos com base em event_name . Confira a lógica para campos específicos abaixo. |
|
Group %{NOTSPACE:group_id} |
target.group.product_object_id |
Extraídos de message1 quando event_name está relacionado a eventos do BGP. |
%{WORD} %{IP:dest_ip} |
target.ip |
Extraídos de message1 quando event_name está relacionado a eventos do BGP. |
%{GREEDYDATA:desc} |
security_result.description |
Extraídos 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 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 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 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 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 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 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 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 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 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 additional fields com a chave CA . |
EAPOL-destination %{MAC:dest_mac} |
target.mac |
Extraídos de message1 quando event_name é tmnxMkaSessionEstablished . |
local port-id %{DATA:local_port_id} |
target.resource.attribute.labels.value |
Extraídos de message1 para valores específicos de event_name e colocados no target.resource.attribute.labels com a chave local_port_id . |
dest-mac-type %{NOTSPACE:mac_type} |
target.resource.attribute.labels.value |
Extraídos de message1 para valores específicos de event_name e colocados no target.resource.attribute.labels com a chave mac_type . |
remote system name %{HOSTNAME:dest_host} |
target.hostname |
Extraídos de message1 para valores específicos de event_name . |
remote chassis-id %{DATA:dest_mac} |
target.mac |
Extraídos de message1 para valores específicos de event_name . |
remote port-id %{DATA:port_id} |
target.resource.attribute.labels.value |
Extraídos de message1 para valores específicos de event_name e colocados no target.resource.attribute.labels com a chave port_id . |
remote-index %{INT:remote_index} |
target.resource.attribute.labels.value |
Extraídos de message1 para valores específicos de event_name e colocados no target.resource.attribute.labels com a chave remote_index . |
remote management address %{IP:dest_ip} |
target.ip |
Extraídos 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ídos de message1 para valores específicos de event_name . |
SID:%{INT:sid} |
network.session_id |
Extraídos de message1 para valores específicos de event_name . |
level:%{DATA:level} |
target.resource.attribute.labels.value |
Extraídos de message1 para valores específicos de event_name e colocados no target.resource.attribute.labels com a chave level . |
mtid:%{INT:mtid} |
target.resource.attribute.labels.value |
Extraídos de message1 para valores específicos de event_name e colocados no target.resource.attribute.labels com a chave mtid . |
type:%{WORD:type} |
target.resource.attribute.labels.value |
Extraídos de message1 para valores específicos de event_name e colocados no target.resource.attribute.labels com a chave type . |
flags:%{WORD:flag} |
target.resource.attribute.labels.value |
Extraídos de message1 para valores específicos de event_name e colocados no target.resource.attribute.labels com a chave flag . |
, algo:%{INT:algo} |
target.resource.attribute.labels.value |
Extraídos de message1 para valores específicos de event_name e colocados no target.resource.attribute.labels com a chave algo . |
Description:%{GREEDYDATA:desc}. |
security_result.description |
Extraídos de message1 quando event_name é mafEntryMatch . |
SrcIP |
principal.ip |
Extraídos do campo kv_data quando event_name é mafEntryMatch . |
SrcIP: %{INT:src_port} |
principal.port |
Extraídos do campo kv_data quando event_name é mafEntryMatch . |
DstIP |
target.ip |
Extraídos do campo kv_data quando event_name é mafEntryMatch . |
DstIP: %{INT:dest_port} |
target.port |
Extraídos do campo kv_data quando event_name é mafEntryMatch . |
Protocol |
network.ip_protocol |
Extraídos 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 combinação de 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ídos de message1 quando event_name é tmnxMkaSessionEstablished . |
Alterações
2023-11-27
- Parser recém-criado.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.