Coletar registros do roteador Nokia

Compatível com:

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

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. 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

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. 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

Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    1. 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.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Notepad).
  2. 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
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID real do cliente.

  5. 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

  1. Entrar no modo de configuração:

    config# log
    
  2. Defina um destino do Syslog:

    config>log# syslog 1
    
  3. 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).
  4. Aplique o destino do Syslog a um arquivo de registro:

    config>log# log-id 1
    config>log>log-id# to syslog 1
    
  5. Ative o arquivo de registro:

    config>log>log-id# no shutdown
    
  6. 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.