Coletar registros da plataforma Cisco DNA Center
Este documento explica como ingerir registros da plataforma Cisco DNA Center no Google Security Operations usando duas abordagens diferentes. Escolha a opção mais adequada ao seu ambiente e aos seus requisitos. O analisador transforma registros SYSLOG+JSON do Cisco DNA Center em um modelo de dados unificado (UDM). Ele extrai campos da mensagem de registro bruta e do payload JSON, mapeia-os para os atributos correspondentes do UDM e enriquece os dados com rótulos e contexto de segurança com base nas características do evento, como gravidade e entidades envolvidas.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Acesso privilegiado ao console de gerenciamento da plataforma Cisco DNA Center
- Escolha seu método de integração preferido:
- Para a Opção 2: conectividade de rede entre o Cisco DNA Center e o endpoint do webhook do Google SecOps
- Para a Opção 1: Windows 2016 ou mais recente ou um host Linux com
systemdpara a instalação do agente do Bindplane
Opção 1: integração do Syslog usando o agente do Bindplane
Essa opção usa o encaminhamento de syslog do Cisco DNA Center para o Bindplane, que encaminha registros estruturados para o Google SecOps.
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 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
Instale o agente do Bindplane no seu 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 este 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,viou Bloco de Notas).
- Localize o arquivo
Edite o arquivo
config.yamlda 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: YOUR_CUSTOMER_ID endpoint: malachiteingestion-pa.googleapis.com log_type: 'CISCO_DNAC' 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
<YOUR_CUSTOMER_ID>pelo ID do cliente real. - Atualize
/path/to/ingestion-authentication-file.jsonpara 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. - Essa configuração usa o receptor Syslog (UDP) do agente Bindplane para coletar mensagens syslog estruturadas do DNA Center.
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-agentPara reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o encaminhamento de syslog na plataforma do Cisco DNA Center
- Faça login na plataforma do Cisco DNA Center.
- Acesse Sistema > Configurações > Serviços externos > Destinos > Syslog.
- Clique em + Adicionar para criar um novo destino de syslog.
- Informe os seguintes detalhes de configuração:
- Nome: insira um nome descritivo, por exemplo,
Google SecOps BindPlane. - Host: insira o endereço IP do agente do BindPlane.
- Porta: digite
514(ou a porta configurada no BindPlane). - Protocolo: selecione UDP ou TCP, dependendo da sua configuração do BindPlane.
- Instalação: selecione a instalação adequada (por exemplo, Local0).
- Gravidade: selecione Informações para capturar todos os níveis de eventos.
- Nome: insira um nome descritivo, por exemplo,
- Clique em Salvar.
Opção 2: integração de webhook em tempo real
Essa opção usa os recursos nativos de webhook do Cisco DNA Center para entregar eventos JSON estruturados diretamente ao Google SecOps em tempo real.
Visão geral
O Cisco DNA Center oferece suporte nativo a notificações de webhook para entrega de eventos em tempo real. Essa opção fornece payloads JSON estruturados com contexto de evento avançado, entregando eventos diretamente ao Google SecOps sem exigir o Bindplane como intermediário.
Configurar o feed de webhook do Google SecOps
- No Google SecOps, acesse Configurações do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Cisco DNA Center Webhook). - Selecione Webhook como o Tipo de origem.
- Selecione Plataforma do Cisco DNA Center como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- Delimitador de divisão:
\nopcional. - Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
- Delimitador de divisão:
- Clique em Próxima.
- Revise a configuração do feed e clique em Enviar.
- Clique em Gerar chave secreta para autenticar o feed.
- Copie e salve a chave secreta, porque não será possível conferir esse Secret novamente.
- Acesse a guia Detalhes.
- Copie o URL do endpoint do feed no campo Informações do endpoint.
- Clique em Concluído.
Criar uma chave de API para o feed de webhook
- Acesse a página Credenciais do console do Google Cloud.
- Clique em Criar credenciais e selecione Chave de API.
- Restrinja o acesso da chave de API à API Google SecOps.
Configurar o destino do webhook no Cisco DNA Center
- Faça login na plataforma do Cisco DNA Center.
- Acesse Sistema > Configurações > Serviços externos > Destinos > Webhook.
- Clique em + Adicionar para criar um novo destino de webhook.
- Informe os seguintes detalhes de configuração:
- Nome: insira um nome descritivo, por exemplo,
Google SecOps Webhook. - Descrição: insira uma descrição para o webhook.
- URL: digite o URL do endpoint do webhook do Google SecOps da etapa anterior.
- Método: selecione POST.
- Confiar no certificado: selecione Não se estiver usando certificados autoassinados.
- Cabeçalhos: adicione os cabeçalhos obrigatórios:
- Content-Type:
application/json - X-goog-api-key: sua chave de Google Cloud API
- X-Webhook-Access-Key: sua chave secreta do feed do Google SecOps
- Content-Type:
- Nome: insira um nome descritivo, por exemplo,
- Clique em Testar conexão para verificar a conectividade.
- Clique em Salvar.
Inscrever eventos em notificações de webhook
- No Cisco DNA Center, acesse Plataforma > Kit de ferramentas para desenvolvedores > Notificações de eventos.
- Clique em + Inscrever-se.
- Informe os seguintes detalhes de configuração:
- Nome da assinatura: insira um nome descritivo (por exemplo,
Google SecOps Events). - Tipo de conector: selecione Endpoint REST.
- Destino: selecione o destino do webhook criado na etapa anterior.
- Nome da assinatura: insira um nome descritivo (por exemplo,
- Selecione os tipos de eventos que você quer monitorar:
- Eventos de rede: dispositivo inacessível, interface inativa, mudanças de configuração.
- Eventos de segurança: violações da política de segurança, falhas de autenticação.
- Eventos do sistema: eventos de plataforma, atualizações de software, manutenção.
- Eventos de garantia: degradação de performance, problemas de conectividade.
- Configure filtros de eventos, se necessário:
- Gravidade: selecione o nível mínimo de gravidade (por exemplo, P1, P2).
- Domínio: filtre por domínios específicos (por exemplo, Conectividade, Performance).
- Clique em Assinar.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| categoria | security_result.severity_details | Mapeado diretamente do campo category no registro bruto. |
| ciscoDnaEventLink | target.url | Mapeado diretamente do campo ciscoDnaEventLink no registro bruto. |
| date_time | metadata.event_timestamp | Extraído da mensagem de registro bruta usando o padrão grok e convertido para o formato de carimbo de data/hora. |
| details.Assurance_Issue_Category | security_result.about.resource.attribute.labels[].value | Mapeado diretamente do campo details.Assurance_Issue_Category no registro bruto. A chave desse rótulo é "Assurance_Issue_Category". |
| details.Assurance_Issue_Details | security_result.summary | Mapeado diretamente do campo details.Assurance_Issue_Details no registro bruto. |
| details.Assurance_Issue_Name | security_result.about.resource.attribute.labels[].value | Mapeado diretamente do campo details.Assurance_Issue_Name no registro bruto. A chave desse rótulo é "Assurance_Issue_Name". |
| details.Assurance_Issue_Priority | security_result.about.resource.attribute.labels[].value | Mapeado diretamente do campo details.Assurance_Issue_Priority no registro bruto. A chave desse rótulo é "Assurance_Issue_Priority". |
| details.Assurance_Issue_Status | security_result.about.resource.attribute.labels[].value | Mapeado diretamente do campo details.Assurance_Issue_Status no registro bruto. A chave desse rótulo é "Assurance_Issue_Status". |
| details.Device | target.ip OR target.hostname | Mapeado do campo details.Device no registro bruto. Se o valor for um endereço IP, ele será mapeado para target.ip. Caso contrário, será mapeado para target.hostname. |
| dnacIp | target.ip | Mapeado diretamente do campo dnacIp no registro bruto, se for um endereço IP. |
| domínio | additional.fields[].value.string_value | Mapeado diretamente do campo domain no registro bruto. A chave desse campo é "domain". |
| eventId | metadata.product_event_type | Mapeado diretamente do campo eventId no registro bruto. |
| instanceId | target.resource.product_object_id | Mapeado diretamente do campo instanceId no registro bruto. |
| nome | target.resource.attribute.labels[].value | Mapeado diretamente do campo name no registro bruto. A chave desse rótulo é "name". |
| namespace | target.namespace | Mapeado diretamente do campo namespace no registro bruto. |
| network.deviceId | target.asset.asset_id | Mapeado diretamente do campo network.deviceId no registro bruto e com o prefixo "deviceId: ". |
| nota | additional.fields[].value.string_value | Mapeado diretamente do campo note no registro bruto. A chave desse campo é "note". |
| metadata.event_type | Determinado com base na presença e nos valores dos campos has_principal, has_target e userId. Valores possíveis: NETWORK_CONNECTION, USER_UNCATEGORIZED, STATUS_UPDATE, GENERIC_EVENT. |
|
| is_alert | True se a gravidade for 0 ou 1. Caso contrário, False. | |
| is_significant | True se a gravidade for 0 ou 1. Caso contrário, False. | |
| gravidade, | Usado para determinar o valor de security_result.severity, is_alert e is_significant. |
|
| source | target.resource.attribute.labels[].value | Mapeado diretamente do campo source no registro bruto. A chave desse rótulo é "source". |
| src_ip | principal.ip | Extraído da mensagem de registro bruta usando o padrão grok. |
| subDomain | additional.fields[].value.string_value | Mapeado diretamente do campo subDomain no registro bruto. A chave desse campo é "subDomain". |
| tntId | target.resource.attribute.labels[].value | Mapeado diretamente do campo tntId no registro bruto. A chave desse rótulo é "tntId". |
| tipo | target.resource.attribute.labels[].value | Mapeado diretamente do campo type no registro bruto. A chave desse rótulo é "type". |
| userId | target.user.userid | Mapeado diretamente do campo userId no registro bruto. |
| version | metadata.product_version | Mapeado diretamente do campo version no registro bruto. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.