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

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 em 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 o encaminhamento de registros de auditoria do sistema 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 do UDM

Campo de registro Mapeamento do 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.
descrição 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 usar 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.