Coletar registros do Cisco Prime
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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- 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
- 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
Instale o agente do Bindplane no sistema operacional Windows ou Linux de acordo com as instruções a seguir.
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 root 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 o guia de instalação.
Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps
- 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).
- 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_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
É 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
Faça login na UI da Web do Cisco Prime.
Acesse Administração > Configurações > Configurações do sistema.
Selecione E-mail e notificação > Alterar notificação de auditoria.
Clique na caixa de seleção Ativar notificação de auditoria de mudanças.
Clique no botão + para especificar um servidor syslog.
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.
Clique em Salvar.
Configurar registros de auditoria do sistema de encaminhamento como syslog
- Faça login na UI da Web do Cisco Prime.
- Acesse Administração > Configurações > Registro > Opções de registro do Syslog.
- Clique na caixa de seleção Ativar Syslog.
- 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
.
- 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. |
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.