Raccogli i log di Cisco Catalyst Center (in precedenza DNA Center)
Versione parser: 2.0
Questo documento spiega come importare i log di Cisco Catalyst Center (precedentemente noto come DNA Center) in Google Security Operations utilizzando due approcci diversi. Scegli l'opzione più adatta al tuo ambiente e ai tuoi requisiti.
Cisco Catalyst Center è una piattaforma centralizzata di gestione e automazione della rete per reti aziendali, filiali e IoT. Fornisce networking basato sull'intent, gestione delle policy, provisioning dei dispositivi, analisi di garanzia e rilevamento dei problemi basato sull'AI nell'infrastruttura cablata e wireless. Catalyst Center genera eventi relativi all'integrità della rete, alle modifiche dello stato del dispositivo, alle violazioni delle norme di sicurezza e ai problemi di garanzia.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps.
- Accesso con privilegi alla console di gestione di Cisco Catalyst Center.
- Per l'opzione 1: Windows Server 2016 o versioni successive oppure un host Linux con
systemdper l'agente Bindplane. - Per l'opzione 2: connettività di rete tra Cisco Catalyst Center e l'endpoint webhook di Google SecOps.
Opzione 1: integrazione Syslog utilizzando l'agente Bindplane
Questa opzione utilizza l'inoltro di syslog da Cisco Catalyst Center all'agente Bindplane, che a sua volta inoltra i log strutturati a Google SecOps.
Recuperare il file di autenticazione dell'importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
Scarica il file di autenticazione dell'acquisizione. 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 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" /quietAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sc query observiq-otel-collector
Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.
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.shAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sudo systemctl status observiq-otel-collector
Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la guida all'installazione dell'agente Bindplane.
Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps
Individua il file di configurazione
Individua il file di configurazione sul tuo sistema operativo nel seguente modo:
- Linux:
sudo systemctl status observiq-otel-collector- Windows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifica il file di configurazione
Sostituisci l'intero contenuto di
config.yamlcon la seguente configurazione:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/cisco_catalyst_center: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: CISCO_DNAC raw_log_field: body service: pipelines: logs/cisco_catalyst_center_to_chronicle: receivers: - udplog exporters: - chronicle/cisco_catalyst_center
Parametri di configurazione
Sostituisci i seguenti segnaposto:
Configurazione del destinatario:
listen_address: l'indirizzo IP e la porta su cui ascoltare. Utilizza0.0.0.0per ascoltare su tutte le interfacce. Sostituisci la porta se necessario (ad esempio,1514per Linux non root).
Configurazione dell'esportatore:
creds_file_path: il percorso completo del file di autenticazione dell'acquisizione:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID: il tuo ID cliente Google SecOps.endpoint: URL dell'endpoint regionale:- Stati Uniti:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Per l'elenco completo, consulta Endpoint regionali.
- Stati Uniti:
Salva il file di configurazione
- Dopo la modifica, salva il file:
- Linux: premi
Ctrl+O, poiEntere infineCtrl+X. - Windows: fai clic su File > Salva.
- Linux: premi
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux:
Esegui questo comando:
sudo systemctl restart observiq-otel-collectorVerifica che il servizio sia in esecuzione:
sudo systemctl status observiq-otel-collectorControlla i log per individuare eventuali errori:
sudo journalctl -u observiq-otel-collector -f
Per riavviare l'agente Bindplane in Windows:
Scegli una delle seguenti opzioni:
- Prompt dei comandi o PowerShell come amministratore:
net stop observiq-otel-collector && net start observiq-otel-collector- Console dei servizi:
- Premi
Win+R, digitaservices.msce premi Invio. - Individua observIQ OpenTelemetry Collector.
- Fai clic con il tasto destro del mouse e seleziona Riavvia.
- Premi
Verifica che il servizio sia in esecuzione:
sc query observiq-otel-collectorControlla i log per individuare eventuali errori:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configurare l'inoltro di syslog su Cisco Catalyst Center
- Accedi a Cisco Catalyst Center.
- Vai a Sistema > Impostazioni > Servizi esterni > Destinazioni > Syslog.
- Fai clic sull'icona Aggiungi (+) per creare una nuova destinazione syslog.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome descrittivo (ad esempio,
Google SecOps-Bindplane). - Descrizione: inserisci una breve descrizione (ad esempio,
Syslog forwarding to Google SecOps via Bindplane). - Nome host/indirizzo IP: inserisci l'indirizzo IP dell'host dell'agente Bindplane.
- Porta: inserisci
514(o la porta configurata nell'agente Bindplane). - Protocollo: seleziona UDP o TCP a seconda della configurazione di Bindplane.
- Nome: inserisci un nome descrittivo (ad esempio,
Fai clic su Salva.
Opzione 2: integrazione webhook
Questa opzione utilizza le funzionalità webhook native di Cisco Catalyst Center per inviare eventi JSON strutturati direttamente a Google SecOps in tempo reale.
Crea un feed webhook in Google SecOps
Creare il feed
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Cisco Catalyst Center Webhook). - Seleziona Webhook come Tipo di origine.
- Seleziona Cisco Catalyst Center come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- (Facoltativo) Delimitatore di divisione: inserisci
\nper gli eventi delimitati da un carattere di nuova riga. - Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
- Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
- (Facoltativo) Delimitatore di divisione: inserisci
- Fai clic su Avanti.
- Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Genera e salva la chiave segreta
Dopo aver creato il feed, devi generare una chiave segreta per l'autenticazione:
- Nella pagina dei dettagli del feed, fai clic su Genera chiave segreta.
- Una finestra di dialogo mostra la chiave segreta.
Copia e salva la chiave segreta in modo sicuro.
Recuperare l'URL dell'endpoint del feed
- Vai alla scheda Dettagli del feed.
- Nella sezione Endpoint Information (Informazioni sull'endpoint), copia l'URL dell'endpoint del feed.
- Salva questo URL per i passaggi successivi.
- Fai clic su Fine.
Creare una chiave API Google Cloud
Google SecOps richiede una chiave API per l'autenticazione. Crea una chiave API con limitazioni nella Google Cloud Console.
Creare la chiave API
- Vai alla pagina Credenziali della console Google Cloud.
- Seleziona il tuo progetto (quello associato alla tua istanza Google SecOps).
- Fai clic su Crea credenziali > Chiave API.
- Viene creata una chiave API e visualizzata in una finestra di dialogo.
- Fai clic su Modifica chiave API per limitare la chiave.
Limitare la chiave API
- Nella pagina delle impostazioni Chiave API:
- Nome: inserisci un nome descrittivo (ad esempio,
Chronicle Webhook API Key).
- Nome: inserisci un nome descrittivo (ad esempio,
- In Limitazioni API:
- Seleziona Limita chiave.
- Nel menu a discesa Seleziona API, cerca e seleziona API Chronicle.
- Fai clic su Salva.
- Copia il valore della chiave API dal campo Chiave API nella parte superiore della pagina.
Salva la chiave API in modo sicuro.
Configura la destinazione webhook in Cisco Catalyst Center
- Accedi a Cisco Catalyst Center.
- Vai a Sistema > Impostazioni > Servizi esterni > Destinazioni > Webhook.
- Fai clic sull'icona 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 breve descrizione (ad esempio,
Webhook to Google SecOps). - URL: incolla l'URL dell'endpoint webhook di Google SecOps.
- Metodo: seleziona POST.
- Autenticazione: seleziona Nessuna autenticazione.
- Considera attendibile il certificato: seleziona Sì.
- Intestazioni: fai clic su Aggiungi intestazione e aggiungi le seguenti intestazioni:
- Nome:
Content-Type, Valore:application/json - Nome:
X-goog-api-key, Valore: la tua chiave API Google Cloud - Name:
X-Webhook-Access-Key, Value: la chiave segreta del feed Google SecOps
- Nome:
- Nome: inserisci un nome descrittivo (ad esempio,
- Fai clic su Salva.
Iscrivere gli eventi alle notifiche webhook
- In Cisco Catalyst Center, vai a Platform > Developer Toolkit > Event Notifications.
- Nella scheda Notifiche, fai clic su Crea nuova notifica.
- Nel passaggio 1 (Seleziona sito ed eventi), seleziona i siti e gli eventi che vuoi monitorare:
- Eventi di rete: dispositivo non raggiungibile, interfaccia non funzionante, modifiche alla configurazione.
- Eventi di sicurezza: violazioni delle policy di sicurezza, errori di autenticazione.
- Eventi di sistema: eventi della piattaforma, aggiornamenti software, manutenzione.
- Eventi di garanzia: degrado delle prestazioni, problemi di connettività.
- Fai clic su Avanti.
- Nel passaggio 2 (Seleziona canali), seleziona REST come canale di notifica.
- Nel menu a discesa Endpoint, seleziona la destinazione webhook creata nella sezione precedente (ad esempio,
Google SecOps-Webhook). - Fai clic su Avanti.
- Nel passaggio 3 (Riepilogo), esamina la configurazione delle notifiche.
- Inserisci un Nome per l'abbonamento (ad esempio,
Google SecOps Events). - Fai clic su Fine.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
category |
security_result.severity_details |
Il valore di category del log non elaborato viene mappato al campo security_result.severity_details. |
ciscoDnaEventLink |
target.url |
Il valore di ciscoDnaEventLink del log non elaborato viene mappato al campo target.url. |
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 |
Il valore di details.Assurance_Issue_Category del log non elaborato è mappato con la chiave "Assurance_Issue_Category". |
details.Assurance_Issue_Details |
security_result.summary |
Il valore di details.Assurance_Issue_Details del log non elaborato viene mappato al campo security_result.summary. |
details.Assurance_Issue_Name |
security_result.about.resource.attribute.labels[].value |
Il valore di details.Assurance_Issue_Name del log non elaborato viene mappato con la chiave "Assurance_Issue_Name". |
details.Assurance_Issue_Priority |
security_result.about.resource.attribute.labels[].value |
Il valore di details.Assurance_Issue_Priority del log non elaborato viene mappato con la chiave "Assurance_Issue_Priority". |
details.Assurance_Issue_Status |
security_result.about.resource.attribute.labels[].value |
Il valore di details.Assurance_Issue_Status del log non elaborato viene mappato con la chiave "Assurance_Issue_Status". |
details.Device |
target.ip, target.hostname |
Se il valore è un indirizzo IP, viene mappato a target.ip, altrimenti a target.hostname. |
dnacIp |
target.ip |
Il valore di dnacIp del log non elaborato viene mappato a target.ip se è un indirizzo IP valido. |
domain |
additional.fields[].value.string_value |
Il valore di domain del log non elaborato viene aggiunto come coppia chiave-valore a additional.fields con la chiave "domain". |
eventId |
metadata.product_event_type |
Il valore di eventId del log non elaborato viene mappato al campo metadata.product_event_type. |
instanceId |
target.resource.product_object_id |
Il valore di instanceId del log non elaborato viene mappato al campo target.resource.product_object_id. |
name |
target.resource.attribute.labels[].value |
Il valore di name del log non elaborato viene mappato con la chiave "name". |
namespace |
target.namespace |
Il valore di namespace del log non elaborato viene mappato al campo target.namespace. |
network.deviceId |
target.asset.asset_id |
Il valore di network.deviceId del log non elaborato è preceduto da "deviceId: " e mappato a target.asset.asset_id. |
note |
additional.fields[].value.string_value |
Il valore di note del log non elaborato viene aggiunto come coppia chiave-valore a additional.fields con la chiave "note". |
severity |
security_result.severity |
Utilizzato per determinare il valore di security_result.severity, is_alert e is_significant. |
source |
target.resource.attribute.labels[].value |
Il valore di source del log non elaborato viene mappato con la chiave "source". |
src_ip |
principal.ip |
Estratto dal messaggio di log non elaborato utilizzando il pattern grok e mappato a principal.ip. |
subDomain |
additional.fields[].value.string_value |
Il valore di subDomain del log non elaborato viene aggiunto come coppia chiave-valore a additional.fields con la chiave "subDomain". |
tntId |
target.resource.attribute.labels[].value |
Il valore di tntId del log non elaborato è mappato con la chiave "tntId". |
type |
target.resource.attribute.labels[].value |
Il valore di type del log non elaborato viene mappato con la chiave "type". |
userId |
target.user.userid |
Il valore di userId del log non elaborato viene mappato al campo target.user.userid. |
version |
metadata.product_version |
Il valore di version del log non elaborato viene mappato al campo metadata.product_version. |
| N/D | metadata.event_type |
Impostato 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. |
| N/D | is_alert |
Impostato su true se la gravità è 0 o 1, altrimenti su false. |
| N/D | is_significant |
Impostato su true se la gravità è 0 o 1, altrimenti su false. |
correlationId |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
isSimulated |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
startTime |
event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time |
Mappato dal log delle modifiche |
details.wlcIp |
event.idm.read_only_udm.intermediary.ip |
Mappato dal log delle modifiche |
details.detectingApName |
event.idm.read_only_udm.observer.hostname |
Mappato dal log delle modifiche |
details.detectingApLocation |
event.idm.read_only_udm.observer.location.name |
Mappato dal log delle modifiche |
details.detectingApMacAddress |
event.idm.read_only_udm.observer.mac |
Mappato dal log delle modifiche |
network.siteId |
event.idm.read_only_udm.observer.resource.attribute.labels |
Mappato dal log delle modifiche |
src_ip |
event.idm.read_only_udm.principal.hostname |
Mappato dal log delle modifiche |
details |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
details.threatType |
event.idm.read_only_udm.security_result.threat_name |
Mappato dal log delle modifiche |
tenantId |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.