Coletar registros do Cisco Prime

Compatível com:

Este documento explica como ingerir registros do Cisco Prime no Google Security Operations usando o Bindplane. O analisador usa padrões Grok para extrair campos de vários formatos de mensagens syslog, mapeando-os para um modelo de dados unificado (UDM). Ele processa diferentes estruturas de registros, incluindo pares de chave-valor, e enriquece os dados com informações de usuário, principal, destino e segurança com base em palavras-chave e padrões específicos encontrados nas mensagens de registro.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Instância do Google SecOps
  • Windows 2016 ou 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.
  • Acesso privilegiado ao Cisco Prime

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

  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

Instale o agente do Bindplane no sistema operacional Windows ou Linux de acordo com as instruções a seguir.

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 root 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

Para mais opções de instalação, consulte o guia de instalação.

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

  1. 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, vi ou Bloco de Notas).
  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_file_path: '/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
            log_type: 'CISCO_PRIME'
            raw_log_field: body
            ingestion_labels:
    
    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 do cliente real.
    • Atualize /path/to/ingestion-authentication-file.json para 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 em Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar notificações de auditoria de mudanças e receptores syslog

  1. É possível configurar o sistema para enviar notificações do syslog sobre auditorias de mudanças relacionadas aos seguintes eventos:

    • Atualizações do inventário de dispositivos
    • Alterações de configuração
    • Mudanças nos modelos de configuração
    • Operações relacionadas a modelos
    • Atividades do usuário, como logins, logouts e modificações na conta
  2. Faça login na UI da Web do Cisco Prime.

  3. Acesse Administração > Configurações > Configurações do sistema.

  4. Selecione E-mail e notificação > Alterar notificação de auditoria.

  5. Clique na caixa de seleção Ativar notificação de auditoria de mudanças.

  6. Clique no botão + para especificar um servidor syslog.

  7. Informe os seguintes detalhes de configuração:

    • Insira o endereço IP do agente do Bindplane.
    • Selecione o protocolo UDP.
    • Insira o número da porta do agente do Bindplane.
  8. Clique em Salvar.

Configurar registros de auditoria do sistema de encaminhamento como syslog

  1. Faça login na UI da Web do Cisco Prime.
  2. Acesse Administração > Configurações > Registro > Opções de registro do Syslog.
  3. Clique na caixa de seleção Ativar Syslog.
  4. Informe os seguintes detalhes de configuração:
    • Insira o endereço IP do agente do Bindplane.
    • Selecione o protocolo UDP.
    • Insira o número da porta do agente do Bindplane.
    • Selecione uma das oito Unidades ou local0.
  5. Clique em Salvar.

Tabela de mapeamento da UDM

Campo de registro Mapeamento da UDM Lógica
client_ip_address principal.ip, principal.asset.ip O valor é retirado do campo client_ip_address, que é extraído do registro bruto usando o filtro kv.
data metadata.event_timestamp O valor é extraído do campo date, que é extraído do registro bruto usando padrões grok e convertido em um carimbo de data/hora usando o filtro de data.
description security_result.description O valor é extraído do campo description, que é extraído do registro bruto usando padrões grok.
dest_mac target.mac O valor é extraído do campo dest_mac, que é extraído do registro bruto usando padrões grok e convertido para letras minúsculas.
device_id principal.asset_id O valor é extraído do campo device_id, que é extraído do registro bruto usando padrões grok. O valor final é formatado como "ID do dispositivo:".
device_ip principal.ip, principal.asset.ip O valor é retirado do campo device_ip, que é extraído do registro bruto usando o filtro kv. Em seguida, o valor é analisado como uma matriz JSON, e cada endereço IP na matriz é adicionado aos campos da UDM.
device_type target.resource.attribute.labels.value O valor é extraído do campo device_type, que é extraído do registro bruto usando padrões grok.
dst_user target.user.userid O valor é extraído do campo dst_user, que é extraído do registro bruto usando padrões grok.
e-mail src.hostname O valor é extraído do campo email, que é extraído do registro bruto usando padrões grok.
file_path principal.process.file.full_path O valor é extraído do campo file_path, que é extraído do registro bruto usando padrões grok.
nome do host target.resource.attribute.labels.value O valor é extraído do campo hostname, que é extraído do registro bruto usando padrões grok.
ID principal.asset_id O valor é extraído do campo id, que é extraído do registro bruto usando padrões grok. O valor final é formatado como "ID da entidade:".
ip_address principal.ip, principal.asset.ip O valor é extraído do campo ip_address, que é extraído do registro bruto usando padrões grok.
log_level security_result.severity O valor é extraído do campo log_level, que é extraído do registro bruto usando padrões grok. Ele é usado para determinar o nível de gravidade se severity não estiver presente.
mac_address principal.mac, source_mac O valor é extraído do campo mac_address, que é extraído do registro bruto usando padrões grok e convertido para letras minúsculas. Ele também é usado como o valor de source_mac se source_mac estiver vazio.
oid principal.asset.product_object_id O valor é extraído do campo oid, que é extraído do registro bruto usando padrões grok.
principal_ip principal.ip, principal.asset.ip O valor é extraído do campo principal_ip, que é extraído do registro bruto usando padrões grok.
principal_port principal.port O valor é extraído do campo principal_port, que é extraído do registro bruto usando padrões grok e convertido em um número inteiro.
process_name principal.resource.name O valor é extraído do campo process_name, que é extraído do registro bruto usando padrões grok.
sec_description security_result.description O valor é extraído do campo sec_description, que é extraído do registro bruto usando padrões grok.
session_id network.session_id O valor é extraído do campo session_id, que é extraído do registro bruto usando padrões grok.
gravidade, security_result.severity O valor é extraído do campo severity, que é extraído do registro bruto usando padrões grok. É usado para determinar o nível de gravidade, se presente.
source_mac principal.mac O valor é extraído do campo source_mac, que é extraído do registro bruto usando padrões grok e convertido para letras minúsculas. Se estiver vazio, ele vai receber o valor de mac_address.
resumo security_result.summary O valor é extraído do campo summary, que é extraído do registro bruto usando padrões grok.
target_ip target.ip, target.asset.ip O valor é extraído do campo target_ip, que é extraído do registro bruto usando padrões grok.
thread_pool metadata.product_event_type O valor é extraído do campo thread_pool, que é extraído do registro bruto usando padrões grok.
timestamp metadata.event_timestamp O valor é extraído do campo timestamp, que é extraído do registro bruto usando padrões grok e convertido em um carimbo de data/hora usando o filtro de data.
Tipo metadata.product_event_type O valor é retirado do campo Type, que é extraído do registro bruto usando o filtro kv.
user_name principal.user.userid O valor é extraído do campo user_name, que é extraído do registro bruto usando padrões grok ou filtro kv.
metadata.event_type metadata.event_type O valor é determinado com base na presença de campos e padrões específicos no registro bruto. A lógica inclui:
- Valor padrão: GENERIC_EVENT
- Se thread_pool for "EmailAlertHelper": EMAIL_TRANSACTION
- Se application_name for "aesSystem" e desc contiver "HealthMonitorHelper": STATUS_HEARTBEAT
- Se user_present e target_resource_present forem verdadeiros: USER_RESOURCE_ACCESS
- Se user_present for verdadeiro: USER_UNCATEGORIZED
- Se principal_present e target_present forem verdadeiros: NETWORK_CONNECTION
- Se principal_present for verdadeiro: STATUS_UPDATE
- Se dst_user estiver presente e description contiver "logout": USER_LOGOUT
- Se dst_user estiver presente e description não contiver "logout": USER_LOGIN
metadata.vendor_name metadata.vendor_name O valor é definido como "CISCO".
metadata.product_name metadata.product_name O valor é definido como "CISCO_PRIME".
metadata.log_type metadata.log_type O valor é definido como "CISCO_PRIME".
network.session_id network.session_id O valor é extraído do campo session_id, que é extraído do registro bruto usando padrões grok.
principal.application principal.application O valor é extraído do campo application_name, que é extraído do registro bruto usando padrões grok.
principal.asset.ip principal.asset.ip O valor pode vir dos seguintes campos: client_ip_address, device_ip, ip_address, principal_ip, target_ip.
principal.asset.product_object_id principal.asset.product_object_id O valor é extraído do campo oid, que é extraído do registro bruto usando padrões grok.
principal.asset_id principal.asset_id O valor pode vir dos seguintes campos: device_id, id.
principal.ip principal.ip O valor pode vir dos seguintes campos: client_ip_address, device_ip, ip_address, principal_ip.
principal.mac principal.mac O valor pode vir dos seguintes campos: mac_address, source_mac.
principal.port principal.port O valor é extraído do campo principal_port, que é extraído do registro bruto usando padrões grok e convertido em um número inteiro.
principal.process.file.full_path principal.process.file.full_path O valor é extraído do campo file_path, que é extraído do registro bruto usando padrões grok.
principal.resource.name principal.resource.name O valor é extraído do campo process_name, que é extraído do registro bruto usando padrões grok.
principal.user.userid principal.user.userid O valor é extraído do campo user_name, que é extraído do registro bruto usando padrões grok ou filtro kv.
security_result.action security_result.action O valor é definido como "BLOCK" se description contiver "fail".
security_result.description security_result.description O valor pode vir dos seguintes campos: desc, description, sec_description.
security_result.severity security_result.severity O valor pode vir dos seguintes campos: log_level, severity.
security_result.summary security_result.summary O valor é extraído do campo summary, que é extraído do registro bruto usando padrões grok.
src.hostname src.hostname O valor é extraído do campo email, que é extraído do registro bruto usando padrões grok.
target.asset.ip target.asset.ip O valor é extraído do campo target_ip, que é extraído do registro bruto usando padrões grok.
target.ip target.ip O valor é extraído do campo target_ip, que é extraído do registro bruto usando padrões grok.
target.mac target.mac O valor é extraído do campo dest_mac, que é extraído do registro bruto usando padrões grok e convertido para letras minúsculas.
target.resource.attribute.labels.key target.resource.attribute.labels.key O valor é definido como "Tipo de dispositivo" ou "Nome do host do dispositivo", dependendo do contexto.
target.resource.attribute.labels.value target.resource.attribute.labels.value O valor pode vir dos seguintes campos: device_type, hostname.
target.user.userid target.user.userid O valor é extraído do campo dst_user, que é extraído do registro bruto usando padrões grok.
extensions.auth.mechanism extensions.auth.mechanism O valor é definido como "USERNAME_PASSWORD" se dst_user estiver presente e description contiver "password".
extensions.auth.type extensions.auth.type O valor é definido como "MACHINE" se dst_user estiver presente.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.