Raccogli i log di Cisco Catalyst Center (in precedenza DNA Center)

Versione parser: 2.0

Supportata in:

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 sugli intenti, gestione delle policy, provisioning dei dispositivi, analisi di assurance e rilevamento dei problemi basato sull'AI nell'infrastruttura cablata e wireless. Catalyst Center genera eventi relativi allo stato della rete, alle modifiche dello stato dei dispositivi, alle violazioni delle policy di sicurezza e ai problemi di controllo.

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 systemd per l'agente Bindplane.
  • Per l'opzione 2: connettività di rete tra Cisco Catalyst Center e l'endpoint webhook di Google SecOps.

Opzione 1: integrazione di Syslog utilizzando l'agente Bindplane

Questa opzione utilizza l'inoltro syslog da Cisco Catalyst Center all'agente Bindplane, che poi inoltra i log strutturati a Google SecOps.

Ottieni le credenziali di Google SecOps per l'agente Bindplane

Per autenticare l'agente Bindplane in Google SecOps, scegli uno dei seguenti metodi:

  • Nuove implementazioni: utilizza l'API Chronicle (opzione 1).
  • Deployment legacy: continua a utilizzare il file di autenticazione dell'acquisizione (opzione 2) fino al ritiro dell'API Ingestion il 20 luglio 2027.
  1. Accedi alla consoleGoogle Cloud e seleziona il progetto Google Cloud collegato alla tua istanza Google SecOps.
  2. Vai a IAM e amministrazione > Service account.
  3. Fai clic su Crea service account.
  4. Fornisci i seguenti dettagli di configurazione:
    • Nome service account: inserisci un nome per l'account (ad esempio bindplane-ingest).
    • Descrizione service account: inserisci una descrizione (ad esempio Bindplane agent log ingestion).
  5. Fai clic su Crea e continua.
  6. Nella sezione Concedi a questo account di servizio l'accesso al progetto, fai clic su Seleziona un ruolo e seleziona Editor Chronicle.
  7. Fai clic su Continua e poi su Fine.
  8. Fai clic sul account di servizio che hai creato, quindi vai alla scheda Chiavi.
  9. Fai clic su Aggiungi chiave > Crea nuova chiave.
  10. Seleziona JSON e fai clic su Crea. Il file della chiave viene scaricato sul tuo computer.
  11. Salva il file della chiave come ingestion-auth.json nella directory del raccoglitore Bindplane (/opt/observiq-otel-collector/ingestion-auth.json su Linux o C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json su Windows) oppure aggiorna creds_file_path in config.yaml in modo che corrisponda al percorso in cui lo salvi.
  12. Vai a IAM e amministrazione > Impostazioni e copia il numero di progetto. Ti servirà per la configurazione dell'esportatore.

Opzione 2: scarica il file di autenticazione dell'acquisizione (legacy)

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'acquisizione.
  4. Salva il file in modo sicuro sul sistema in cui verrà installato l'agente Bindplane.

Recuperare l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul tuo sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di Windows

  1. Apri il prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sc query observiq-otel-collector
    

Il servizio dovrebbe essere visualizzato come RUNNING.

Installazione di Linux

  1. Apri un terminale con privilegi root o sudo.
  2. Esegui questo comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Attendi il completamento dell'installazione.

  4. 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 come segue:

    • Linux:
    sudo nano /opt/observiq-otel-collector/config.yaml
    
    • Windows:
    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifica il file di configurazione

  • Sostituisci l'intero contenuto di config.yaml con la seguente configurazione:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/cisco_catalyst_center:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.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 ricevitore:

    • listen_address: l'indirizzo IP e la porta su cui ascoltare. Utilizza 0.0.0.0 per ascoltare su tutte le interfacce. Sostituisci la porta se necessario (ad esempio, 1514 per Linux non root).
  • Configurazione dell'esportatore:

    • creds_file_path: percorso completo del file della chiave JSON del account di servizio (opzione 1):
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • YOUR_CUSTOMER_ID: il tuo ID cliente Google SecOps.
    • location: sostituisci <LOCATION> con la regione della tua istanza Google SecOps (ad esempio us, europe o asia-southeast1). L'esportatore aggiunge chronicle.googleapis.com come prefisso a questo valore. Per l'elenco completo, consulta Endpoint regionali.
    • project: sostituisci <PROJECT_NUMBER> con il numero di progetto in IAM e amministrazione > Impostazioni.
    • endpoint: mantieni l'impostazione chronicle.googleapis.com.

Esportatore API di importazione legacy

  • Se utilizzi il file di autenticazione dell'acquisizione dell'Opzione 2, sostituisci il blocco exporters con il seguente. Imposta creds_file_path sul percorso del file di autenticazione dell'acquisizione e, se l'istanza si trova al di fuori degli Stati Uniti, sostituisci malachiteingestion-pa.googleapis.com con il tuo endpoint regionale (ad esempio, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/cisco_catalyst_center:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: CISCO_DNAC
        raw_log_field: body
    

Salva il file di configurazione

  • Dopo la modifica, salva il file:
    • Linux: premi Ctrl+O, poi Enter e infine Ctrl+X
    • Windows: fai clic su File > Salva

Riavvia l'agente Bindplane per applicare le modifiche

Per riavviare l'agente Bindplane in Linux:

  1. Esegui questo comando:

    sudo systemctl restart observiq-otel-collector
    
  2. Verifica che il servizio sia in esecuzione:

    sudo systemctl status observiq-otel-collector
    
  3. Controlla i log per verificare la presenza di errori:

    sudo journalctl -u observiq-otel-collector -f
    

Per riavviare l'agente Bindplane in Windows:

  1. 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:
      1. Premi Win+R, digita services.msc e premi Invio.
      2. Individua observIQ OpenTelemetry Collector.
      3. Fai clic con il tasto destro del mouse e seleziona Riavvia.
  2. Verifica che il servizio sia in esecuzione:

    sc query observiq-otel-collector
    
  3. Controlla 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

  1. Accedi a Cisco Catalyst Center.
  2. Vai a System (Sistema) > Settings (Impostazioni) > External Services (Servizi esterni) > Destinations (Destinazioni) > Syslog.
  3. Fai clic sull'icona Aggiungi (+) per creare una nuova destinazione syslog.
  4. 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.
  5. 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

Crea il feed

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed di notizie.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Cisco Catalyst Center Webhook).
  5. Seleziona Webhook come Tipo di origine.
  6. Seleziona Cisco Catalyst Center come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:
    • (Facoltativo) Delimitatore di divisione: inserisci \n per 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.
  9. Fai clic su Avanti.
  10. Controlla la nuova configurazione del feed di notizie nella schermata Finalizza, quindi fai clic su Invia.

Genera e salva la chiave segreta

Dopo aver creato il feed, devi generare una chiave segreta per l'autenticazione:

  1. Nella pagina dei dettagli del feed, fai clic su Genera chiave segreta.
  2. Viene visualizzata una finestra di dialogo con la chiave segreta.
  3. Copia e salva la chiave segreta in modo sicuro.

Recuperare l'URL dell'endpoint del feed

  1. Vai alla scheda Dettagli del feed.
  2. Nella sezione Endpoint Information (Informazioni sull'endpoint), copia l'Feed endpoint URL (URL endpoint del feed).
  3. Salva questo URL per i passaggi successivi.
  4. Fai clic su Fine.

Crea una chiave API Google Cloud

Google SecOps richiede una chiave API per l'autenticazione. Crea una chiave API con limitazioni nella Google Cloud Console.

Crea la chiave API

  1. Vai alla pagina Credenziali della console Google Cloud.
  2. Seleziona il tuo progetto (il progetto associato alla tua istanza di Google SecOps).
  3. Fai clic su Crea credenziali > Chiave API.
  4. Viene creata una chiave API, che viene visualizzata in una finestra di dialogo.
  5. Fai clic su Modifica chiave API per limitare la chiave.

Limita la chiave API

  1. Nella pagina delle impostazioni Chiave API:
    • Nome: inserisci un nome descrittivo (ad esempio, Chronicle Webhook API Key).
  2. In Limitazioni API:
    1. Seleziona Limita chiave.
    2. Nel menu a discesa Seleziona API, cerca e seleziona API Chronicle.
  3. Fai clic su Salva.
  4. Copia il valore della chiave API dal campo Chiave API nella parte superiore della pagina.
  5. Salva la chiave API in modo sicuro.

Configura la destinazione webhook in Cisco Catalyst Center

  1. Accedi a Cisco Catalyst Center.
  2. Vai a System (Sistema) > Settings (Impostazioni) > External Services (Servizi esterni) > Destinations (Destinazioni) > Webhook.
  3. Fai clic sull'icona Aggiungi (+) per creare una nuova destinazione webhook.
  4. 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
      • Nome: X-Webhook-Access-Key, Valore: la chiave segreta del feed Google SecOps
  5. Fai clic su Salva.

Iscrivere gli eventi alle notifiche webhook

  1. In Cisco Catalyst Center, vai a Platform > Developer Toolkit > Event Notifications.
  2. Nella scheda Notifiche, fai clic su Crea nuova notifica.
  3. Nel passaggio 1 (Seleziona sito ed eventi), seleziona i siti e gli eventi che vuoi monitorare:
    • Eventi di rete: dispositivo non raggiungibile, interfaccia non attiva, 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 controllo: peggioramento delle prestazioni, problemi di connettività.
  4. Fai clic su Avanti.
  5. Nel passaggio 2 (Seleziona canali), seleziona REST come canale di notifica.
  6. Nel menu a discesa Endpoint, seleziona la destinazione webhook creata nella sezione precedente (ad esempio, Google SecOps-Webhook).
  7. Fai clic su Avanti.
  8. Nel Passaggio 3 (Riepilogo), esamina la configurazione della notifica.
  9. Inserisci un Nome per la sottoscrizione (ad esempio, Google SecOps Events).
  10. 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 si tratta di 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 è 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 dal prefisso "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 è 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 viene mappato con la chiave "tntId".
type target.resource.attribute.labels[].value Il valore di type del log non elaborato è 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.