Sophos AV-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Sophos AV-Logs mit Bindplane erfassen. Der Parser wandelt JSON-Logs in ein einheitliches Datenmodell (Unified Data Model, UDM) um. Felder werden aus verschachtelten JSON-Strukturen extrahiert, UDM-Feldern zugeordnet und Ereignisse werden anhand des Typfelds kategorisiert. Die Daten werden mit spezifischen Details und Aktionen für verschiedene Sophos AV-Ereignistypen angereichert.

Hinweise

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

  • Eine Google SecOps-Instanz
  • Windows 2016 oder höher oder ein Linux-Host mit systemd
  • Ein zusätzlicher Windows- oder Linux-Computer, auf dem Python kontinuierlich ausgeführt werden kann
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Privilegierter Zugriff auf die Sophos Central Admin-Konsole

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.

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 Kunden-ID aus dem Bereich Organisationsdetails.

BindPlane-Agent installieren

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

Fenstereinbau

  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
    

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
    

Zusätzliche Installationsressourcen

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

  1. Konfigurationsdatei aufrufen:

    1. Suchen Sie die Datei config.yaml. Normalerweise befindet sie sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    2. Öffnen Sie die Datei mit einem Texteditor (z. B. nano, vi oder Notepad).
  2. Bearbeiten Sie die Datei config.yamlso:

    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: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'SOPHOS_AV'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
    • Ersetzen Sie <customer_id> durch die tatsächliche Kunden-ID.
    • Aktualisieren Sie /path/to/ingestion-authentication-file.json auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen gespeichert wurde.

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

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

    sudo systemctl restart bindplane-agent
    
  • Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Sophos Central API-Zugriff konfigurieren

  1. Melden Sie sich in Sophos Central Admin an.
  2. Wählen Sie Globale Einstellungen > API-Token-Verwaltung aus.
  3. Klicken Sie auf Token hinzufügen, um ein neues Token zu erstellen.
  4. Geben Sie einen Tokennamen ein und klicken Sie auf Speichern. Die API-Token-Zusammenfassung für das angegebene Token wird angezeigt.
  5. Klicken Sie im Abschnitt API Token Summary (Zusammenfassung des API-Tokens) auf Copy (Kopieren), um die API-Zugriffs-URL und die Header zu kopieren.

Python auf einem zusätzlichen Computer installieren

  1. Öffnen Sie den Webbrowser und rufen Sie die Python-Website auf.
  2. Klicken Sie auf Python herunterladen für Ihr Betriebssystem.
  3. Python installieren:

    • Unter Windows:
      1. Führen Sie das Installationsprogramm aus.
      2. Setzen Sie ein Häkchen bei Python zu PATH hinzufügen.
      3. Klicken Sie auf Jetzt installieren.
    • Auf dem Mac:

      1. Python ist möglicherweise bereits installiert. Andernfalls können Sie die neueste Version über das Terminal installieren.
      2. Öffnen Sie Terminal und geben Sie den folgenden Befehl ein:

        python --version
        

Sophos-Integrationsskript herunterladen

  1. Rufen Sie die GitHub-Seite für das GitHub-Repository für die Sophos Central SIEM-Integration auf.
  2. Klicken Sie auf die grüne Schaltfläche Code > Download ZIP.
  3. Extrahieren Sie die ZIP-Datei.

Skriptkonfiguration einrichten

  1. Öffnen Sie die Datei config.ini in dem Verzeichnis, in dem Sie das ZIP-Archiv extrahiert haben.
  2. Bearbeiten Sie die Konfigurationsdatei:
    • API-Token: Geben Sie den API-Schlüssel ein, den Sie zuvor aus Sophos Central kopiert haben.
    • Syslog-Serverdetails: Geben Sie die Details Ihres Syslog-Servers ein.
    • Host: Geben Sie die IP-Adresse des BindPlane-Agents ein.
    • Port: Geben Sie die Portnummer des BindPlane-Agents ein.
    • Protokoll: Geben Sie UDP ein. Je nach Konfiguration können Sie auch TCP oder TLS verwenden.
  3. Speichern Sie die Datei.

Skript ausführen

  1. Wechseln Sie zum Skriptordner.

    • Unter Windows:

      1. Drücken Sie die Windows-Taste und geben Sie cmd ein.
      2. Klicken Sie auf Eingabeaufforderung.
      3. Wechseln Sie zum Skriptordner:
      cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
    • Unter macOS:

      1. Rufen Sie Anwendungen > Dienstprogramme auf.
      2. Öffnen Sie das Terminal.
      3. Wechseln Sie zum Skriptordner:
      cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
  2. Skript ausführen:

    • Geben Sie den folgenden Befehl ein, um das Skript zu starten:

      python siem.py
      

Skript für die kontinuierliche Ausführung unter Windows automatisieren (mit dem Aufgabenplaner):

  1. Öffnen Sie den Taskplaner, indem Sie im Startmenü Taskplaner eingeben.
  2. Klicken Sie auf Aufgabe erstellen.
  3. Auf dem Tab Allgemein:
    • Geben Sie der Aufgabe einen Namen, z. B. Sophos AV Log Export.
  4. Auf dem Tab Trigger:
    • Klicken Sie auf Neu und legen Sie fest, dass die Aufgabe Täglich oder Beim Start ausgeführt werden soll (je nach Ihren Anforderungen).
  5. Auf dem Tab Aktionen:
    • Klicken Sie auf Neu und wählen Sie Programm starten aus.
    • Suchen Sie nach der ausführbaren Datei python.exe (normalerweise unter C:/Python/XX/python.exe).
    • Geben Sie im Feld Argumente hinzufügen den Pfad zum Skript ein, z. B. C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integrationsiem.py.
  6. Klicken Sie auf OK, um die Aufgabe zu speichern.

Skript so automatisieren, dass es auf einem Mac kontinuierlich ausgeführt wird (mit Cron-Jobs):

  1. Öffnen Sie das Terminal.
  2. Geben Sie crontab -e ein und drücken Sie die Eingabetaste.
  3. Fügen Sie am Ende der Datei eine neue Zeile hinzu:

    * * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
    
  4. Klicken Sie auf Speichern und beenden Sie den Editor.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
customer_id target.resource.id Direkte Zuordnung
data.customer_id target.resource.id Direkte Zuordnung
data.dhost principal.hostname Direkte Zuordnung
data.end timestamp Direkte Zuordnung
data.endpoint_id principal.resource.id Direkte Zuordnung
data.group security_result.category_details Direkte Zuordnung
data.id principal.resource.id Direkte Zuordnung
data.location principal.hostname Direkte Zuordnung
data.name metadata.description Direkte Zuordnung
data.rt timestamp Direkte Zuordnung
data.severity security_result.severity Direkte Zuordnung
data.source principal.user.user_display_name Direkte Zuordnung
data.source_info.ip principal.ip Direkte Zuordnung
data.suser principal.user.userid Direkte Zuordnung
data.threat security_result.rule_name Direkte Zuordnung, wenn „data.group“ den Wert „POLICY“ hat
data.type metadata.product_event_type Direkte Zuordnung
data.user_id principal.user.userid Direkte Zuordnung
data.when timestamp Direkte Zuordnung
dhost principal.hostname Direkte Zuordnung
Ende timestamp Direkte Zuordnung
Endpunkt-ID principal.resource.id Direkte Zuordnung
Gruppe security_result.category_details Direkte Zuordnung
id principal.resource.id Direkte Zuordnung
Standort principal.hostname Direkte Zuordnung
Name metadata.description Direkte Zuordnung
rt timestamp Direkte Zuordnung
die Ausprägung security_result.severity Direkte Zuordnung
source principal.user.user_display_name Direkte Zuordnung
source_info.ip principal.ip Direkte Zuordnung
suser principal.user.userid Direkte Zuordnung
Typ metadata.product_event_type Direkte Zuordnung
user_id principal.user.userid Direkte Zuordnung
Wann? timestamp Direkte Zuordnung
- is_alert Das Feld „is_alert“ wird für Ereignisse mit dem Schweregrad „Mittel“ oder „Hoch“ auf „true“ gesetzt oder wenn das Feld „type“ auf ein ereigniswürdiges Ereignis wie „Event::Endpoint::UpdateRebootRequired“ hinweist.
- is_significant Das Feld „is_significant“ wird für Ereignisse mit dem Schweregrad „mittel“ oder „hoch“ auf „true“ gesetzt.
- metadata.description Das Beschreibungsfeld wird mit dem Wert des Felds „name“ aus dem Rohlog gefüllt.
- metadata.event_timestamp Das Feld „event_timestamp“ wird mit dem Wert des Felds „end“, „rt“ oder „when“ aus dem Rohlog gefüllt.
- metadata.event_type Das Feld „event_type“ wird aus dem Feld „type“ im Rohlog abgeleitet und ordnet bestimmte Sophos-Ereignistypen Chronicle UDM-Ereignistypen zu.
- metadata.log_type Das Feld „log_type“ ist für alle Ereignisse auf „SOPHOS_AV“ festgelegt.
- metadata.product_event_type Das Feld „product_event_type“ wird mit dem Wert des Felds „type“ aus dem Rohlog gefüllt.
- metadata.product_name Das Feld „product_name“ ist für alle Ereignisse auf „Sophos Anti-Virus“ festgelegt.
- metadata.vendor_name Das Feld „vendor_name“ ist für alle Ereignisse auf „Sophos“ festgelegt.
- network.direction Das Feld „direction“ ist für alle „NETWORK_CONNECTION“-Ereignisse auf „OUTBOUND“ festgelegt.
- network.ip_protocol Das Feld „ip_protocol“ ist für „NETWORK_CONNECTION“-Ereignisse, bei denen das Feld „target.url“ vorhanden ist, auf „TCP“ festgelegt.
- principal.hostname Das Feld „Hostname“ wird mit dem Wert des Felds „dhost“ oder „location“ aus dem Rohlog gefüllt.
- principal.ip Das Feld „ip“ wird mit dem Wert des Felds „source_info.ip“ aus dem Rohlog gefüllt.
- principal.resource.id Das Feld „id“ wird mit dem Wert des Felds „id“ oder „endpoint_id“ aus dem Rohlog gefüllt.
- principal.user.user_display_name Das Feld „user_display_name“ wird mit dem Wert des Felds „suser“ oder „source“ aus dem Rohlog gefüllt.
- principal.user.userid Das Feld „userid“ wird mit dem Wert des Felds „suser“, „user_id“ oder „data.suser“ aus dem Rohlog gefüllt.
- security_result.action Das Feld „action“ wird aus dem Feld „data.name“ im Rohlog abgeleitet, indem bestimmte Sophos-Aktionen Chronicle UDM-Aktionen zugeordnet werden.
- security_result.category_details Das Feld „category_details“ wird mit dem Wert des Felds „group“ aus dem Rohlog gefüllt.
- security_result.rule_name Das Feld „rule_name“ wird aus dem Feld „data.name“ im Rohlog extrahiert. Dabei wird speziell nach Mustern wie „Policy non-compliance: [rule_name]“ oder „Rule names: [rule_name]“ gesucht.
- security_result.severity Das Feld „severity“ wird mit dem Wert des Felds „severity“ aus dem Rohlog gefüllt und in den entsprechenden Chronicle UDM-Schweregrad umgewandelt.
- security_result.summary Das Feld „Zusammenfassung“ wird mit dem Wert des Felds „name“ aus dem Rohlog gefüllt, wenn der Ereignistyp „GENERIC_EVENT“ oder „STATUS_HEARTBEAT“ ist.
- target.application Das Anwendungsfeld wird mit dem Wert des Felds „data.name“ aus dem Rohprotokoll gefüllt, wenn der Ereignistyp „NETWORK_CONNECTION“ ist und in der Beschreibung erwähnt wird, dass eine Anwendung blockiert wurde.
- target.asset_id Das Feld „asset_id“ wird mit dem Wert des Felds „data.endpoint_id“ aus dem Rohlog gefüllt, wenn der Ereignistyp „NETWORK_CONNECTION“ ist und in der Beschreibung eine Asset-ID erwähnt wird.
- target.file.full_path Das Feld „full_path“ wird aus dem Feld „data.name“ im Rohlog extrahiert. Dabei wird speziell nach Mustern wie „Source path: [full_path]“ gesucht.
- target.file.size Das Feld „Größe“ wird aus dem Feld „data.name“ im Rohlog extrahiert. Dabei wird speziell nach Mustern wie „Dateigröße: [Größe]“ gesucht.
- target.hostname Das Feld „Hostname“ wird mit dem Wert des Felds „data.dhost“ aus dem Rohlog gefüllt, wenn der Ereignistyp „NETWORK_CONNECTION“ ist und in der Beschreibung ein Zielhostname erwähnt wird.
- target.process.file.full_path Das Feld „full_path“ wird aus dem Feld „data.name“ im Rohlog extrahiert. Dabei wird speziell nach Mustern wie „Controlled application [action]: [full_path]“ gesucht.
- target.resource.id Das Feld „id“ wird mit dem Wert des Felds „customer_id“ aus dem Rohlog gefüllt.
- target.resource.name Das Feld „Name“ wird je nach Ereignistyp mit bestimmten Werten gefüllt. Für „SETTING_CREATION“ und „SETTING_MODIFICATION“ ist sie auf „Geräteregistrierung“ bzw. „Echtzeitschutz“ festgelegt. Bei „SCAN_UNCATEGORIZED“ wird das Feld mit dem Wert des Felds „data.name“ aus dem Rohlog gefüllt.
- target.resource.type Das Feld „type“ wird je nach Ereignistyp mit bestimmten Werten gefüllt. Für „SETTING_CREATION“ und „SETTING_MODIFICATION“ ist „SETTING“ festgelegt. Für „SCAN_UNCATEGORIZED“ ist „Scan“ festgelegt. Für „SCAN_NETWORK“ ist „Gerät“ festgelegt.
- target.url Das Feld „url“ wird aus dem Feld „data.name“ im Rohlog extrahiert. Dabei wird speziell nach Mustern wie „[url] blocked“ gesucht.
- target.user.userid Das Feld „userid“ wird mit dem Wert des Felds „data.user_id“ aus dem Rohlog gefüllt, wenn der Ereignistyp „USER_CREATION“ ist.
- timestamp Das Zeitstempelfeld wird mit dem Wert des Felds „end“, „rt“ oder „when“ aus dem Rohlog gefüllt.

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