Cisco Wireless LAN Controller (WLC)-Logs erfassen

Parserversion: 12.0

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Cisco Wireless LAN Controller-Logs (WLC) mit dem Bindplane-Agenten in Google Security Operations aufnehmen.

Der Parser extrahiert Felder aus Cisco WLC-Syslog-Nachrichten mithilfe von Grok-Mustern und verarbeitet verschiedene Logformate, darunter DHCP-, Authentifizierungs- und Netzwerkereignisse. Die extrahierten Felder werden dem Unified Data Model (UDM) zugeordnet und der Ereignistyp wird anhand von mnemonic und Nachrichteninhalten bestimmt.

Hinweis

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

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher oder Linux-Host mit systemd
  • Netzwerkverbindung zwischen dem Bindplane-Agent und dem Cisco WLC
  • Wenn der Agent hinter einem Proxy ausgeführt wird, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Privilegierter Zugriff auf Cisco WLC

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

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

  • Neue Deployments: Verwenden Sie die Chronicle API (Option 1).
  • Legacy-Bereitstellungen: Verwenden Sie die Authentifizierungsdatei für die Datenaufnahme (Option 2) weiter, bis die Ingestion API am 20. Juli 2027 eingestellt wird.
  1. Melden Sie sich in der Google Cloud Console 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, damit der Pfad mit dem Pfad übereinstimmt, in 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 Konfiguration des Exporters.

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 Datenaufnahme 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 Organisationsdetails.

Bindplane-Agent installieren

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

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 (WIRD AUSGEFÜHRT) 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 in der Installationsanleitung für den Bindplane-Agenten.

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

Konfigurationsdatei suchen

  • 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_wireless:
        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: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: CISCO_WIRELESS
        raw_log_field: body
    
    service:
      pipelines:
        logs/cisco_wireless_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/cisco_wireless
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • listen_address: IP-Adresse und Port, auf dem gelauscht werden soll:
      • 0.0.0.0, um auf allen Schnittstellen zuzuhören (empfohlen)
      • Port 514 ist der Standard-Syslog-Port (erfordert Root unter Linux; verwenden Sie 1514 für Nicht-Root).
  • 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
    • customer_id: Kundennummer, die aus der Google SecOps-Konsole kopiert wurde
    • location: Ersetzen Sie <LOCATION> durch die Region Ihrer Google SecOps-Instanz (z. B. us, europe oder asia-southeast1). Der Exporteur stellt diesem Wert das Präfix 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.

Legacy-Ingestion-API-Exporter

  • Wenn Sie die Datei zur Authentifizierung bei der Aufnahme aus Option 2 verwenden, ersetzen Sie den Block exporters durch Folgendes. Legen Sie für creds_file_path den Pfad zur Authentifizierungsdatei für die Datenaufnahme 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_wireless:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: CISCO_WIRELESS
        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.

Starten Sie den Bindplane-Agent neu, um die Änderungen zu übernehmen.

  • Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:

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

      sudo systemctl status observiq-otel-collector
      
    2. Prüfen Sie die Logs auf Fehler:

      sudo journalctl -u observiq-otel-collector -f
      
  • Wählen Sie eine der folgenden Optionen aus, um den Bindplane-Agenten unter Windows neu zu starten:

    • 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. Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.
      4. Prüfen Sie, ob der Dienst ausgeführt wird:

        sc query observiq-otel-collector
        
      5. Prüfen Sie die Logs auf Fehler:

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

Syslog auf Cisco WLC konfigurieren

  1. Melden Sie sich in der WLC-Web-UI an.
  2. Gehen Sie zu Verwaltung > Protokolle > Konfiguration.
  3. Geben Sie die IP-Adresse des Bindplane-Agents in das Feld Syslog Server IP Address (IP-Adresse des Syslog-Servers) ein.
  4. Klicken Sie auf Hinzufügen.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • Syslog-Schweregrad: Wählen Sie Informational aus.
    • Syslog Facility: Wählen Sie Local Use 0 aus.
  6. Klicken Sie auf Übernehmen.
  7. Klicken Sie auf Konfiguration speichern.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
action_data read_only_udm.security_result.action_details Wird direkt aus dem Feld action_data zugeordnet.
data read_only_udm.metadata.description Direkt aus dem Feld data abgeleitet, nachdem einige Verarbeitungsschritte durchgeführt wurden (z.B. Entfernen von Zeitstempeln und zusätzlichen Zeichen). Wird aus dem Zeitstempel am Anfang des Logeintrags extrahiert. Der Parser kann verschiedene Formate verarbeiten. Wird anhand der Felder mnemonic und messageToProcess mit komplexer Logik in der Datei cisco_wireless.include bestimmt. Legen Sie diesen Wert auf „CISCO_WIRELESS“ fest. Verkettung der Felder facility, cisco_severity und mnemonic. Wird, sofern verfügbar, aus dem Logeintrag extrahiert. Legen Sie diesen Wert auf „CISCO_WIRELESS“ fest. Wird aus dem Feld version extrahiert, falls verfügbar. Legen Sie diesen Wert auf „CISCO“ fest. Wird auf „DHCP“ gesetzt, wenn sich das Ereignis auf DHCP bezieht. Legen Sie für Broadcast-Netzwerkereignisse „BROADCAST“ fest. Legen Sie für UDP-Netzwerkereignisse „UDP“ fest. Sofern verfügbar, aus der Beschreibung extrahiert. Sofern verfügbar, aus der Beschreibung extrahiert. Wird je nach Logformat aus den Feldern wlc_controller oder hostname zugeordnet. Wird aus der Beschreibung oder MessageSourceAddress extrahiert, sofern verfügbar. Wird je nach Logformat aus den Feldern wlc_controller oder hostname zugeordnet. Wird aus der Beschreibung oder MessageSourceAddress extrahiert, sofern verfügbar. Wird aus der Beschreibung extrahiert, sofern verfügbar. Wird aus der Beschreibung extrahiert, sofern verfügbar. Wird aus den Feldern SourceModuleName und SourceModuleType erstellt, sofern verfügbar. Wird von read_only_udm.principal.user.userid zugeordnet, wenn die Nutzer-ID wie eine E‑Mail-Adresse aussieht. Wird aus der Beschreibung extrahiert, sofern verfügbar. Sofern verfügbar, aus der Beschreibung extrahiert. Wird anhand des Ereignistyps und der Beschreibung ermittelt. Wird anhand des Ereignistyps und der Beschreibung ermittelt. Sofern verfügbar, werden sie aus bestimmten Feldern in der Beschreibung erstellt. Sofern verfügbar, aus der Beschreibung extrahiert. Kombiniert manchmal Informationen aus mehreren Feldern. Wird auf Grundlage des Felds cisco_severity und des Ereignistyps ermittelt. Wird aus dem Feld read_only_udm.security_result.severity abgeleitet. Eine kurze Zusammenfassung des Sicherheitsergebnisses, die aus der Beschreibung und dem Ereignistyp abgeleitet wird. Sofern verfügbar, aus der Beschreibung extrahiert. Sofern verfügbar, aus der Beschreibung extrahiert. Wird aus der Beschreibung extrahiert, sofern verfügbar. Sofern verfügbar, aus der Beschreibung extrahiert. Wird aus der Beschreibung extrahiert, sofern verfügbar. Sofern verfügbar, aus der Beschreibung extrahiert. Wird aus der Beschreibung extrahiert, sofern verfügbar. Legen Sie „SETTING“ für Ereignisse zur Änderung von Einstellungen fest. Wird aus der Beschreibung extrahiert, sofern verfügbar.
event_data read_only_udm.metadata.product_event_type Wird direkt aus dem Feld event_data zugeordnet.
event_id read_only_udm.metadata.product_log_id Direkt aus dem Feld event_id zugeordnet.
event_ts read_only_udm.metadata.event_timestamp Direkt aus dem Feld event_ts zugeordnet.
facility read_only_udm.metadata.product_event_type Wird direkt aus dem Feld facility zugeordnet.
hostname read_only_udm.principal.hostname Wird direkt aus dem Feld hostname zugeordnet.
hostname read_only_udm.target.hostname Wird direkt aus dem Feld hostname zugeordnet.
inter_mac read_only_udm.intermediary.mac Direkt aus dem Feld inter_mac zugeordnet.
intermediary_hostname read_only_udm.intermediary.hostname Wird direkt aus dem Feld intermediary_hostname zugeordnet.
kv_data read_only_udm.principal.resource.attribute.labels Wird als Schlüssel/Wert-Paare geparst und zum Ausfüllen von Labels verwendet.
log_message read_only_udm.security_result.description Direkt aus dem Feld log_message zugeordnet.
MessageSourceAddress read_only_udm.principal.asset.ip Direkt aus dem Feld MessageSourceAddress zugeordnet.
MessageSourceAddress read_only_udm.principal.ip Wird direkt aus dem Feld MessageSourceAddress zugeordnet.
messageToProcess read_only_udm.metadata.description Direkt aus dem Feld messageToProcess zugeordnet, nachdem einige Verarbeitungsschritte durchgeführt wurden.
mnemonic read_only_udm.metadata.event_type Wird in Verbindung mit anderen Feldern verwendet, um den Ereignistyp zu bestimmen.
mnemonic read_only_udm.metadata.product_event_type Wird direkt aus dem Feld mnemonic zugeordnet.
severity_data read_only_udm.security_result.severity Wird aus dem Feld severity_data zugeordnet, nachdem es in einen Enum-Wert konvertiert wurde.
SourceModuleName read_only_udm.principal.resource.attribute.labels Direkt aus dem Feld SourceModuleName zugeordnet.
SourceModuleType read_only_udm.principal.resource.attribute.labels Direkt aus dem Feld SourceModuleType zugeordnet.
timestamp read_only_udm.metadata.event_timestamp Wird direkt aus dem Feld timestamp zugeordnet.
version read_only_udm.metadata.product_version Wird direkt aus dem Feld version zugeordnet.
wlc_controller read_only_udm.principal.hostname Direkt aus dem Feld wlc_controller zugeordnet.
wlc_controller read_only_udm.target.hostname Direkt aus dem Feld wlc_controller zugeordnet.
mnemonic event.idm.read_only_udm.metadata.product_event_type Aus Änderungsprotokoll zugeordnet
urlHolder event.idm.read_only_udm.target.url Aus Änderungsprotokoll zugeordnet
syslog_sequence event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
userid event.idm.read_only_udm.principal.user.userid Aus Änderungsprotokoll zugeordnet
principal_mac event.idm.read_only_udm.principal.mac Aus Änderungsprotokoll zugeordnet
obs_host event.idm.read_only_udm.observer.hostname Aus Änderungsprotokoll zugeordnet
obs_desc event.idm.read_only_udm.observer.labels Aus Änderungsprotokoll zugeordnet
addr event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
component_status event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
ecc event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
multipleErrorsDetected event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
rep[0] event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
rep[1] event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
rep[2] event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
suppressed_times event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
valid event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
interface event.idm.read_only_udm.additional.fields Aus Änderungsprotokoll zugeordnet
event_id event.idm.read_only_udm.metadata.product_log_id Aus Änderungsprotokoll zugeordnet
principal_hostname event.idm.read_only_udm.principal.hostname und event.idm.read_only_udm.principal.asset.hostname Aus Änderungsprotokoll zugeordnet
wlc_controller event.idm.read_only_udm.principal.hostname und event.idm.read_only_udm.principal.asset.hostname Aus Änderungsprotokoll zugeordnet
src_ip_1 event.idm.read_only_udm.principal.ip Aus Änderungsprotokoll zugeordnet
src_ip_2 event.idm.read_only_udm.principal.ip Aus Änderungsprotokoll zugeordnet
mac1 event.idm.read_only_udm.principal.mac Aus Änderungsprotokoll zugeordnet
mac2 event.idm.read_only_udm.principal.mac Aus Änderungsprotokoll zugeordnet
slot event.idm.read_only_udm.security_result.detection_fields Aus Änderungsprotokoll zugeordnet
username event.idm.read_only_udm.principal.user.userid Aus Änderungsprotokoll zugeordnet
src_ip event.idm.read_only_udm.principal.ip und event.idm.read_only_udm.principal.asset.ip Aus Änderungsprotokoll zugeordnet
ssid event.idm.read_only_udm.security_result.detection_fields Aus Änderungsprotokoll zugeordnet
SourceModuleName" and "SourceModuleType principal.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
client_host", and "hostname principal.hostname Aus Änderungsprotokoll zugeordnet
client_ip principal.ip Aus Änderungsprotokoll zugeordnet
client_mac principal.mac Aus Änderungsprotokoll zugeordnet
ap_ip target.ip Aus Änderungsprotokoll zugeordnet
ap_mac target.mac Aus Änderungsprotokoll zugeordnet
messageToProcess" and "description metadata.description Aus Änderungsprotokoll zugeordnet
inter_url intermediary.url Aus Änderungsprotokoll zugeordnet
inter_ip intermediary.ip Aus Änderungsprotokoll zugeordnet
sec_desc security_result.description Aus Änderungsprotokoll zugeordnet
latest_version", "current_version", "certificate", "expiry_date", "clostest_sensor", "ssid", "client", "xid", "failure_reason", "auth_failure_reason", and "interface security_result.detection_fields Aus Änderungsprotokoll zugeordnet
action_data security_result.acion_details Aus Änderungsprotokoll zugeordnet
username principal.user.userid Aus Änderungsprotokoll zugeordnet
vendor", and "RSSI principal.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
vendor", "security_setting", "channel", "protocol", and "RSSI target.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
msg1 metadata.description Aus Änderungsprotokoll zugeordnet
wlc_controller event.idm.read_only_udm.principal.hostname Aus Änderungsprotokoll zugeordnet
event.idm.read_only_udm.metadata.event_type USER_RESOURCE_ACCESS Aus Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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