Cisco Catalyst Center-Logs (früher DNA Center) erfassen

Parserversion: 2.0

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Cisco Catalyst Center-Logs (früher DNA Center) mit zwei verschiedenen Ansätzen in Google Security Operations aufnehmen. Wählen Sie die Option aus, die am besten zu Ihrer Umgebung und Ihren Anforderungen passt.

Cisco Catalyst Center ist eine zentrale Plattform für Netzwerkverwaltung und -automatisierung für Campus-, Zweigstellen- und IoT-Netzwerke von Unternehmen. Sie bietet Intent-Based Networking, Richtlinienverwaltung, Gerätebereitstellung, Assurance-Analysen und KI-gestützte Problemerkennung für kabelgebundene und kabellose Infrastrukturen. Catalyst Center generiert Ereignisse im Zusammenhang mit dem Netzwerkzustand, Änderungen des Gerätestatus, Verstößen gegen Sicherheitsrichtlinien und Assurance-Problemen.

Hinweis

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz.
  • Privilegierter Zugriff auf die Cisco Catalyst Center-Verwaltungskonsole.
  • Für Option 1: Windows Server 2016 oder höher oder ein Linux-Host mit systemd für den BindPlane-Agent.
  • Für Option 2: Netzwerkverbindung zwischen Cisco Catalyst Center und dem Google SecOps-Webhook-Endpunkt.

Option 1: Syslog-Integration mit dem Bindplane-Agenten

Bei dieser Option wird die Syslog-Weiterleitung vom Cisco Catalyst Center an den Bindplane-Agent verwendet, der dann strukturierte Logs an Google SecOps weiterleitet.

Google SecOps-Anmeldedaten für den Bindplane-Agenten abrufen

Wählen Sie eine der folgenden Methoden aus, um den Bindplane-Agenten bei Google SecOps zu authentifizieren:

  • Neue Bereitstellungen: Verwenden Sie die Chronicle API (Option 1).
  • Alte Bereitstellungen: Verwenden Sie die Datei für die Authentifizierung bei der Aufnahme (Option 2) weiterhin, bis die Ingestion API am 20. Juli 2027 eingestellt wird.
  1. Melden Sie sich in der Google Cloud -Konsole an und wählen Sie das Google Cloud -Projekt aus, das mit Ihrer Google SecOps-Instanz verknüpft ist.
  2. Rufen Sie IAM und Verwaltung > Dienstkonten auf.
  3. Klicken Sie auf Dienstkonto erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B. bindplane-ingest.
    • Dienstkontobeschreibung: Geben Sie eine Beschreibung ein, z. B. Bindplane agent log ingestion.
  5. Klicken Sie auf Erstellen und fortfahren.
  6. Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Rolle auswählen und wählen Sie Chronicle-Bearbeiter aus.
  7. Klicken Sie auf Weiter und dann auf Fertig.
  8. Klicken Sie auf das erstellte Dienstkonto und rufen Sie dann den Tab Schlüssel auf.
  9. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  10. Wählen Sie JSON aus und klicken Sie auf Erstellen. Die Schlüsseldatei wird auf Ihren Computer heruntergeladen.
  11. Speichern Sie die Schlüsseldatei als ingestion-auth.json im Bindplane-Collector-Verzeichnis (/opt/observiq-otel-collector/ingestion-auth.json unter Linux oder C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json unter Windows) oder aktualisieren Sie creds_file_path in config.yaml, sodass der Pfad mit dem Pfad übereinstimmt, unter dem Sie die Datei speichern.
  12. Rufen Sie IAM und Verwaltung > Einstellungen auf und kopieren Sie die Projektnummer. Sie benötigen sie für die Exporter-Konfiguration.

Option 2: Authentifizierungsdatei für die Datenaufnahme herunterladen (Legacy)

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Erfassungs-Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Aufnahme herunter.
  4. Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert werden soll.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organization Details (Organisationsdetails).

BindPlane-Agent installieren

Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.

Windows-Installation

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Warte, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sc query observiq-otel-collector
    

Der Dienst sollte als RUNNING angezeigt werden.

Linux-Installation

  1. Öffnen Sie ein Terminal mit Root- oder sudo-Berechtigungen.
  2. Führen Sie dazu diesen Befehl aus:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Warte, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sudo systemctl status observiq-otel-collector
    

Der Dienst sollte als active (running) angezeigt werden.

Zusätzliche Installationsressourcen

Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie im Installationsanleitung für den Bindplane-Agenten.

Bindplane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren

Konfigurationsdatei suchen

  • Suchen Sie die Konfigurationsdatei in Ihrem Betriebssystem:

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

Konfigurationsdatei bearbeiten

  • Ersetzen Sie den gesamten Inhalt von config.yaml durch die folgende Konfiguration:

    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
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • listen_address: IP-Adresse und Port, auf dem gelauscht werden soll. Verwenden Sie 0.0.0.0, um alle Schnittstellen abzuhören. Ersetzen Sie den Port bei Bedarf (z. B. 1514 für Linux ohne Root-Zugriff).
  • Exporter-Konfiguration:

    • creds_file_path: Vollständiger Pfad zur JSON-Schlüsseldatei des Dienstkontos (Option 1):
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • YOUR_CUSTOMER_ID: Ihre Google SecOps-Kundennummer.
    • location: Ersetzen Sie <LOCATION> durch die Region Ihrer Google SecOps-Instanz (z. B. us, europe oder asia-southeast1). Der Exporter stellt diesem Wert chronicle.googleapis.com voran. Eine vollständige Liste finden Sie unter Regionale Endpunkte.
    • project: Ersetzen Sie <PROJECT_NUMBER> durch die Projektnummer aus IAM & Verwaltung > Einstellungen.
    • endpoint: Behalten Sie die Einstellung chronicle.googleapis.com bei.

Exporter für die Legacy Ingestion API

  • Wenn Sie die Datei zur Authentifizierung bei der Aufnahme aus Option 2 verwenden, ersetzen Sie den Block exporters durch Folgendes. Legen Sie creds_file_path auf den Pfad zur Datei für die Authentifizierung bei der Aufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Sie malachiteingestion-pa.googleapis.com durch Ihren regionalen Endpunkt (z. B. 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
    

Konfigurationsdatei speichern

  • Speichern Sie die Datei nach der Bearbeitung:
    • Linux: Drücken Sie Ctrl+O, dann Enter und dann Ctrl+X.
    • Windows: Klicken Sie auf Datei > Speichern.

Bindplane-Agent neu starten, um die Änderungen zu übernehmen

So starten Sie den Bindplane-Agenten unter Linux neu:

  1. Führen Sie dazu diesen Befehl aus:

    sudo systemctl restart observiq-otel-collector
    
  2. Prüfen Sie, ob der Dienst ausgeführt wird:

    sudo systemctl status observiq-otel-collector
    
  3. Logs auf Fehler prüfen:

    sudo journalctl -u observiq-otel-collector -f
    

So starten Sie den Bindplane-Agent unter Windows neu:

  1. Wählen Sie eine der folgenden Optionen aus:

    • Eingabeaufforderung oder PowerShell als Administrator:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Dienstkonsole:
      1. Drücken Sie Win+R, geben Sie services.msc ein und drücken Sie die Eingabetaste.
      2. Suchen Sie nach observIQ OpenTelemetry Collector.
      3. Rechtsklicken Sie und wählen Sie Neu starten aus.
  2. Prüfen Sie, ob der Dienst ausgeführt wird:

    sc query observiq-otel-collector
    
  3. Logs auf Fehler prüfen:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Syslog-Weiterleitung im Cisco Catalyst Center konfigurieren

  1. Melden Sie sich im Cisco Catalyst Center an.
  2. Gehen Sie zu System > Einstellungen > Externe Dienste > Ziele > Syslog.
  3. Klicken Sie auf das Symbol Hinzufügen (+), um ein neues Syslog-Ziel zu erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Name: Geben Sie einen aussagekräftigen Namen ein (z. B. Google SecOps-Bindplane).
    • Beschreibung: Geben Sie eine kurze Beschreibung ein (z. B. Syslog forwarding to Google SecOps via Bindplane).
    • Hostname/IP-Adresse: Geben Sie die IP-Adresse des Bindplane-Agent-Hosts ein.
    • Port: Geben Sie 514 ein (oder den im Bindplane-Agenten konfigurierten Port).
    • Protokoll: Wählen Sie je nach Bindplane-Konfiguration UDP oder TCP aus.
  5. Klicken Sie auf Speichern.

Option 2: Webhook-Integration

Bei dieser Option werden die nativen Webhook-Funktionen von Cisco Catalyst Center verwendet, um strukturierte JSON-Ereignisse in Echtzeit direkt an Google SecOps zu senden.

Webhook-Feed in Google SecOps erstellen

Feed erstellen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Nachrichten-Feed hinzufügen.
  3. Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Cisco Catalyst Center Webhook.
  5. Wählen Sie Webhook als Quelltyp aus.
  6. Wählen Sie Cisco Catalyst Center als Logtyp aus.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:
    • Trennzeichen für Aufteilung (optional): Geben Sie \n für Ereignisse ein, die durch Zeilenumbrüche getrennt sind.
    • Asset-Namespace: Der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
  9. Klicken Sie auf Weiter.
  10. Prüfen Sie die neue Nachrichten-Feed-Konfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

Secret-Schlüssel generieren und speichern

Nachdem Sie den Feed erstellt haben, müssen Sie einen Secret-Schlüssel für die Authentifizierung generieren:

  1. Klicken Sie auf der Feed-Detailseite auf Geheimen Schlüssel generieren.
  2. In einem Dialogfeld wird der geheime Schlüssel angezeigt.
  3. Kopieren und speichern Sie den geheimen Schlüssel an einem sicheren Ort.

Feed-Endpunkt-URL abrufen

  1. Rufen Sie den Tab Details des Feeds auf.
  2. Kopieren Sie im Bereich Endpunktinformationen die Feed-Endpunkt-URL.
  3. Speichern Sie diese URL für die nächsten Schritte.
  4. Klicken Sie auf Fertig.

Google Cloud API-Schlüssel erstellen

Für Google SecOps ist ein API-Schlüssel für die Authentifizierung erforderlich. Erstellen Sie in der Google Cloud Console einen eingeschränkten API-Schlüssel.

API-Schlüssel erstellen

  1. Rufen Sie die Seite „Anmeldedaten“ in der Google Cloud Console auf.
  2. Wählen Sie Ihr Projekt aus (das Projekt, das mit Ihrer Google SecOps-Instanz verknüpft ist).
  3. Klicken Sie auf Anmeldedaten erstellen > API-Schlüssel.
  4. Ein API-Schlüssel wird erstellt und in einem Dialogfeld angezeigt.
  5. Klicken Sie auf API-Schlüssel bearbeiten, um den Schlüssel einzuschränken.

API-Schlüssel einschränken

  1. Gehen Sie auf der Seite API-Schlüssel so vor:
    • Name: Geben Sie einen aussagekräftigen Namen ein, z. B. Chronicle Webhook API Key.
  2. Gehen Sie unter API-Einschränkungen so vor:
    1. Wählen Sie Schlüssel einschränken aus.
    2. Suchen Sie im Drop-down-Menü APIs auswählen nach der Chronicle API und wählen Sie sie aus.
  3. Klicken Sie auf Speichern.
  4. Kopieren Sie den API-Schlüsselwert aus dem Feld API-Schlüssel oben auf der Seite.
  5. Speichern Sie den API-Schlüssel sicher.

Webhook-Ziel in Cisco Catalyst Center konfigurieren

  1. Melden Sie sich im Cisco Catalyst Center an.
  2. Gehen Sie zu System > Einstellungen > Externe Dienste > Ziele > Webhook.
  3. Klicken Sie auf das Symbol Hinzufügen (+), um ein neues Webhook-Ziel zu erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Name: Geben Sie einen aussagekräftigen Namen ein (z. B. Google SecOps-Webhook).
    • Beschreibung: Geben Sie eine kurze Beschreibung ein, z. B. Webhook to Google SecOps.
    • URL: Fügen Sie die URL des Google SecOps-Webhook-Endpunkts ein.
    • Methode: Wählen Sie POST aus.
    • Authentifizierung: Wählen Sie Keine Authentifizierung aus.
    • Zertifikat vertrauen: Wählen Sie Ja aus.
    • Header: Klicken Sie auf Header hinzufügen und fügen Sie die folgenden Header hinzu:
      • Name: Content-Type, Wert: application/json
      • Name: X-goog-api-key, Wert: Ihr Google Cloud API-Schlüssel
      • Name: X-Webhook-Access-Key, Wert: Ihr geheimer Schlüssel für den Google SecOps-Feed
  5. Klicken Sie auf Speichern.

Ereignisse für Webhook-Benachrichtigungen abonnieren

  1. Rufen Sie in Cisco Catalyst Center Platform > Developer Toolkit > Event Notifications auf.
  2. Klicken Sie auf dem Tab Benachrichtigungen auf Neue Benachrichtigung erstellen.
  3. Wählen Sie in Schritt 1 (Website und Ereignisse auswählen) die Websites und Ereignisse aus, die Sie beobachten möchten:
    • Netzwerkereignisse: Gerät nicht erreichbar, Schnittstelle ausgefallen, Konfigurationsänderungen.
    • Sicherheitsereignisse: Verstöße gegen Sicherheitsrichtlinien, fehlgeschlagene Authentifizierungen.
    • Systemereignisse: Plattformereignisse, Softwareupdates, Wartung.
    • Assurance-Ereignisse: Leistungsverschlechterung, Verbindungsprobleme.
  4. Klicken Sie auf Weiter.
  5. Wählen Sie in Schritt 2 (Kanäle auswählen) die Option REST als Benachrichtigungskanal aus.
  6. Wählen Sie im Drop-down-Menü Endpunkt das im vorherigen Abschnitt erstellte Webhook-Ziel aus (z. B. Google SecOps-Webhook).
  7. Klicken Sie auf Weiter.
  8. Prüfen Sie in Schritt 3 (Zusammenfassung) die Benachrichtigungskonfiguration.
  9. Geben Sie einen Namen für das Abo ein, z. B. Google SecOps Events.
  10. Klicken Sie auf Beenden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
category security_result.severity_details Der Wert von category aus dem Rohlog wird dem Feld security_result.severity_details zugeordnet.
ciscoDnaEventLink target.url Der Wert von ciscoDnaEventLink aus dem Rohlog wird dem Feld target.url zugeordnet.
date_time metadata.event_timestamp Aus dem Roh-Logeintrag mit dem Grok-Muster extrahiert und in das Zeitstempelformat konvertiert.
details.Assurance_Issue_Category security_result.about.resource.attribute.labels[].value Der Wert von details.Assurance_Issue_Category aus dem Rohlog wird mit dem Schlüssel „Assurance_Issue_Category“ zugeordnet.
details.Assurance_Issue_Details security_result.summary Der Wert von details.Assurance_Issue_Details aus dem Rohlog wird dem Feld security_result.summary zugeordnet.
details.Assurance_Issue_Name security_result.about.resource.attribute.labels[].value Der Wert von details.Assurance_Issue_Name aus dem Rohlog wird mit dem Schlüssel „Assurance_Issue_Name“ zugeordnet.
details.Assurance_Issue_Priority security_result.about.resource.attribute.labels[].value Der Wert von details.Assurance_Issue_Priority aus dem Rohlog wird mit dem Schlüssel „Assurance_Issue_Priority“ zugeordnet.
details.Assurance_Issue_Status security_result.about.resource.attribute.labels[].value Der Wert von details.Assurance_Issue_Status aus dem Rohlog wird dem Schlüssel „Assurance_Issue_Status“ zugeordnet.
details.Device target.ip, target.hostname Wenn der Wert eine IP-Adresse ist, wird er target.ip zugeordnet, andernfalls target.hostname.
dnacIp target.ip Der Wert von dnacIp aus dem Rohlog wird target.ip zugeordnet, wenn es sich um eine gültige IP-Adresse handelt.
domain additional.fields[].value.string_value Der Wert von domain aus dem Rohlog wird als Schlüssel/Wert-Paar zu additional.fields mit dem Schlüssel „domain“ hinzugefügt.
eventId metadata.product_event_type Der Wert von eventId aus dem Rohlog wird dem Feld metadata.product_event_type zugeordnet.
instanceId target.resource.product_object_id Der Wert von instanceId aus dem Rohlog wird dem Feld target.resource.product_object_id zugeordnet.
name target.resource.attribute.labels[].value Der Wert von name aus dem Rohlog wird dem Schlüssel „name“ zugeordnet.
namespace target.namespace Der Wert von namespace aus dem Rohlog wird dem Feld target.namespace zugeordnet.
network.deviceId target.asset.asset_id Der Wert von network.deviceId aus dem Rohlog wird mit „deviceId: “ versehen und target.asset.asset_id zugeordnet.
note additional.fields[].value.string_value Der Wert von note aus dem Rohlog wird als Schlüssel/Wert-Paar zu additional.fields mit dem Schlüssel „note“ hinzugefügt.
severity security_result.severity Wird verwendet, um den Wert von security_result.severity, is_alert und is_significant zu bestimmen.
source target.resource.attribute.labels[].value Der Wert von source aus dem Rohlog wird dem Schlüssel „source“ zugeordnet.
src_ip principal.ip Aus dem Roh-Logeintrag mit dem Grok-Muster extrahiert und principal.ip zugeordnet.
subDomain additional.fields[].value.string_value Der Wert von subDomain aus dem Rohprotokoll wird als Schlüssel/Wert-Paar zu additional.fields mit dem Schlüssel „subDomain“ hinzugefügt.
tntId target.resource.attribute.labels[].value Der Wert von tntId aus dem Rohlog wird dem Schlüssel „tntId“ zugeordnet.
type target.resource.attribute.labels[].value Der Wert von type aus dem Rohlog wird dem Schlüssel „type“ zugeordnet.
userId target.user.userid Der Wert von userId aus dem Rohlog wird dem Feld target.user.userid zugeordnet.
version metadata.product_version Der Wert von version aus dem Rohlog wird dem Feld metadata.product_version zugeordnet.
– metadata.event_type Wird basierend auf dem Vorhandensein und den Werten der Felder has_principal, has_target und userId festgelegt. Mögliche Werte: NETWORK_CONNECTION, USER_UNCATEGORIZED, STATUS_UPDATE, GENERIC_EVENT.
– is_alert Wird auf „true“ gesetzt, wenn der Schweregrad 0 oder 1 ist, andernfalls auf „false“.
– is_significant Wird auf „true“ gesetzt, wenn der Schweregrad 0 oder 1 ist, andernfalls auf „false“.
correlationId event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
isSimulated event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
startTime event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time Aus Änderungsprotokoll zugeordnet
details.wlcIp event.idm.read_only_udm.intermediary.ip Aus Änderungsprotokoll zugeordnet
details.detectingApName event.idm.read_only_udm.observer.hostname Aus Änderungsprotokoll zugeordnet
details.detectingApLocation event.idm.read_only_udm.observer.location.name Aus Änderungsprotokoll zugeordnet
details.detectingApMacAddress event.idm.read_only_udm.observer.mac Aus Änderungsprotokoll zugeordnet
network.siteId event.idm.read_only_udm.observer.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
src_ip event.idm.read_only_udm.principal.hostname Aus Änderungsprotokoll zugeordnet
details event.idm.read_only_udm.security_result.detection_fields Aus Änderungsprotokoll zugeordnet
details.threatType event.idm.read_only_udm.security_result.threat_name Aus Änderungsprotokoll zugeordnet
tenantId event.idm.read_only_udm.target.resource.attribute.labels Aus Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten