Raccogliere i log della piattaforma Cisco DNA Center
Questo documento spiega come importare i log della piattaforma Cisco DNA Center in Google Security Operations utilizzando due approcci diversi. Scegli l'opzione più adatta al tuo ambiente e ai tuoi requisiti. Il parser trasforma i log SYSLOG+JSON di Cisco DNA Center in un modello UDM (Unified Data Model). Estrae i campi dal messaggio di log non elaborato e dal payload JSON, li mappa agli attributi UDM corrispondenti e arricchisce i dati con etichette e contesto di sicurezza in base alle caratteristiche dell'evento, come gravità ed entità coinvolte.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Accesso privilegiato alla console di gestione della piattaforma Cisco DNA Center
- Scegli il metodo di integrazione che preferisci:
- Per l'opzione 2: connettività di rete tra Cisco DNA Center e l'endpoint webhook di Google SecOps
- Per l'opzione 1: Windows 2016 o versioni successive oppure un host Linux con
systemd
per l'installazione dell'agente Bindplane
Opzione 1: integrazione Syslog utilizzando l'agente Bindplane
Questa opzione utilizza l'inoltro di syslog da Cisco DNA Center a Bindplane, che a sua volta inoltra i log strutturati a Google SecOps.
Recuperare il file di autenticazione importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.
Installazione di Windows
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Risorse aggiuntive per l'installazione
- Per ulteriori opzioni di installazione, consulta questa guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps
Accedi al file di configurazione:
- Individua il file
config.yaml
. In genere, si trova nella directory/etc/bindplane-agent/
su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano
,vi
o Blocco note).
- Individua il file
Modifica il file
config.yaml
come segue: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
- Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.
- Sostituisci
<YOUR_CUSTOMER_ID>
con l'ID cliente effettivo. - Aggiorna
/path/to/ingestion-authentication-file.json
al percorso in cui è stato salvato il file di autenticazione nella sezione Recupera il file di autenticazione per l'importazione di Google SecOps. - Questa configurazione utilizza il ricevitore Syslog (UDP) dell'agente Bindplane per raccogliere i messaggi syslog strutturati da DNA Center.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart bindplane-agent
Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurare l'inoltro di Syslog sulla piattaforma Cisco DNA Center
- Accedi alla piattaforma Cisco DNA Center.
- Vai a Sistema > Impostazioni > Servizi esterni > Destinazioni > Syslog.
- Fai clic su + Aggiungi per creare una nuova destinazione syslog.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome descrittivo (ad esempio,
Google SecOps BindPlane
). - Host: inserisci l'indirizzo IP dell'agente BindPlane.
- Porta: inserisci
514
(o la porta configurata in BindPlane). - Protocollo: seleziona UDP o TCP a seconda della configurazione di BindPlane.
- Struttura: seleziona la struttura appropriata (ad esempio Local0).
- Gravità: seleziona Informazioni per acquisire tutti i livelli di eventi.
- Nome: inserisci un nome descrittivo (ad esempio,
- Fai clic su Salva.
Opzione 2: integrazione webhook in tempo reale
Questa opzione utilizza le funzionalità webhook native di Cisco DNA Center per fornire eventi JSON strutturati direttamente a Google SecOps in tempo reale.
Panoramica
Cisco DNA Center supporta in modo nativo le notifiche webhook per la distribuzione di eventi in tempo reale. Questa opzione fornisce payload JSON strutturati con un contesto di eventi avanzato, inviando gli eventi direttamente a Google SecOps senza richiedere Bindplane come intermediario.
Configura il feed webhook di Google SecOps
- In Google SecOps, vai a Impostazioni SIEM > Feed.
- Fai clic su + Aggiungi nuovo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Cisco DNA Center Webhook
). - Seleziona Webhook come Tipo di origine.
- Seleziona Cisco DNA Center Platform come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- Delimitatore di divisione:
\n
facoltativo. - Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
- Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
- Delimitatore di divisione:
- Fai clic su Avanti.
- Rivedi la configurazione del feed e fai clic su Invia.
- Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
- Copia e salva la chiave segreta, perché non potrai più visualizzarla.
- Vai alla scheda Dettagli.
- Copia l'URL dell'endpoint del feed dal campo Endpoint Information (Informazioni sull'endpoint).
- Fai clic su Fine.
Crea una chiave API per il feed webhook
- Vai alla pagina Credenziali della console Google Cloud.
- Fai clic su Crea credenziali e poi seleziona Chiave API.
- Limita l'accesso alla chiave API all'API Google SecOps.
Configura la destinazione webhook in Cisco DNA Center
- Accedi alla piattaforma Cisco DNA Center.
- Vai a Sistema > Impostazioni > Servizi esterni > Destinazioni > Webhook.
- Fai clic su + Aggiungi per creare una nuova destinazione webhook.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome descrittivo (ad esempio,
Google SecOps Webhook
). - Descrizione: inserisci una descrizione del webhook.
- URL: inserisci l'URL dell'endpoint webhook di Google SecOps del passaggio precedente.
- Metodo: seleziona POST.
- Certificato attendibile: seleziona No se utilizzi certificati autofirmati.
- Intestazioni: aggiungi le intestazioni richieste:
- Tipo di contenuti:
application/json
- X-goog-api-key: la tua Google Cloud chiave API
- X-Webhook-Access-Key: la chiave segreta del feed Google SecOps
- Tipo di contenuti:
- Nome: inserisci un nome descrittivo (ad esempio,
- Fai clic su Prova connessione per verificare la connettività.
- Fai clic su Salva.
Iscrivere eventi alle notifiche webhook
- In Cisco DNA Center, vai a Platform > Developer Toolkit > Event Notifications.
- Fai clic su + Abbonati.
- Fornisci i seguenti dettagli di configurazione:
- Nome abbonamento: inserisci un nome descrittivo (ad esempio,
Google SecOps Events
). - Tipo di connettore: seleziona Endpoint REST.
- Destinazione: seleziona la destinazione webhook creata nel passaggio precedente.
- Nome abbonamento: inserisci un nome descrittivo (ad esempio,
- Seleziona i tipi di eventi che vuoi monitorare:
- Eventi di rete: dispositivo non raggiungibile, interfaccia inattiva, modifiche alla configurazione.
- Eventi di sicurezza: violazioni delle norme di sicurezza, errori di autenticazione.
- Eventi di sistema: eventi della piattaforma, aggiornamenti software, manutenzione.
- Eventi di garanzia: degrado delle prestazioni, problemi di connettività.
- Configura i filtri eventi, se necessario:
- Gravità: seleziona il livello di gravità minimo (ad esempio P1, P2).
- Dominio: filtra in base a domini specifici (ad esempio Connettività, Rendimento).
- Fai clic su Abbonati.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
categoria | security_result.severity_details | Mappato direttamente dal campo category nel log non elaborato. |
ciscoDnaEventLink | target.url | Mappato direttamente dal campo ciscoDnaEventLink nel log non elaborato. |
date_time | metadata.event_timestamp | Estratto dal messaggio di log non elaborato utilizzando il pattern grok e convertito nel formato timestamp. |
details.Assurance_Issue_Category | security_result.about.resource.attribute.labels[].value | Mappato direttamente dal campo details.Assurance_Issue_Category nel log non elaborato. La chiave per questa etichetta è "Assurance_Issue_Category". |
details.Assurance_Issue_Details | security_result.summary | Mappato direttamente dal campo details.Assurance_Issue_Details nel log non elaborato. |
details.Assurance_Issue_Name | security_result.about.resource.attribute.labels[].value | Mappato direttamente dal campo details.Assurance_Issue_Name nel log non elaborato. La chiave per questa etichetta è "Assurance_Issue_Name". |
details.Assurance_Issue_Priority | security_result.about.resource.attribute.labels[].value | Mappato direttamente dal campo details.Assurance_Issue_Priority nel log non elaborato. La chiave per questa etichetta è "Assurance_Issue_Priority". |
details.Assurance_Issue_Status | security_result.about.resource.attribute.labels[].value | Mappato direttamente dal campo details.Assurance_Issue_Status nel log non elaborato. La chiave per questa etichetta è "Assurance_Issue_Status". |
details.Device | target.ip OR target.hostname | Mappato dal campo details.Device nel log non elaborato. Se il valore è un indirizzo IP, viene mappato su target.ip , altrimenti su target.hostname . |
dnacIp | target.ip | Mappato direttamente dal campo dnacIp nel log non elaborato, se si tratta di un indirizzo IP. |
dominio | additional.fields[].value.string_value | Mappato direttamente dal campo domain nel log non elaborato. La chiave per questo campo è "domain". |
eventId | metadata.product_event_type | Mappato direttamente dal campo eventId nel log non elaborato. |
instanceId | target.resource.product_object_id | Mappato direttamente dal campo instanceId nel log non elaborato. |
nome | target.resource.attribute.labels[].value | Mappato direttamente dal campo name nel log non elaborato. La chiave per questa etichetta è "name". |
spazio dei nomi | target.namespace | Mappato direttamente dal campo namespace nel log non elaborato. |
network.deviceId | target.asset.asset_id | Mappato direttamente dal campo network.deviceId nel log non elaborato e con il prefisso "deviceId: ". |
nota | additional.fields[].value.string_value | Mappato direttamente dal campo note nel log non elaborato. La chiave per questo campo è "note". |
metadata.event_type | Determinato in base alla presenza e ai valori dei campi has_principal , has_target e userId . Valori possibili: NETWORK_CONNECTION, USER_UNCATEGORIZED, STATUS_UPDATE, GENERIC_EVENT. |
|
is_alert | True se la gravità è 0 o 1, False in caso contrario. | |
is_significant | True se la gravità è 0 o 1, False in caso contrario. | |
gravità | Utilizzato per determinare il valore di security_result.severity , is_alert e is_significant . |
|
origine | target.resource.attribute.labels[].value | Mappato direttamente dal campo source nel log non elaborato. La chiave per questa etichetta è "source". |
src_ip | principal.ip | Estratto dal messaggio di log non elaborato utilizzando il pattern grok. |
subDomain | additional.fields[].value.string_value | Mappato direttamente dal campo subDomain nel log non elaborato. La chiave per questo campo è "subDomain". |
tntId | target.resource.attribute.labels[].value | Mappato direttamente dal campo tntId nel log non elaborato. La chiave per questa etichetta è "tntId". |
tipo | target.resource.attribute.labels[].value | Mappato direttamente dal campo type nel log non elaborato. La chiave per questa etichetta è "type". |
userId | target.user.userid | Mappato direttamente dal campo userId nel log non elaborato. |
versione | metadata.product_version | Mappato direttamente dal campo version nel log non elaborato. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.