Sophos AV-Logs erfassen
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
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
- 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
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Profile auf.
- 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
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
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
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
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
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
Konfigurationsdatei aufrufen:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet sie sich unter Linux im Verzeichnis/etc/bindplane-agent/
oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano
,vi
oder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so: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
- Melden Sie sich in Sophos Central Admin an.
- Wählen Sie Globale Einstellungen > API-Token-Verwaltung aus.
- Klicken Sie auf Token hinzufügen, um ein neues Token zu erstellen.
- Geben Sie einen Tokennamen ein und klicken Sie auf Speichern. Die API-Token-Zusammenfassung für das angegebene Token wird angezeigt.
- 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
- Öffnen Sie den Webbrowser und rufen Sie die Python-Website auf.
- Klicken Sie auf Python herunterladen für Ihr Betriebssystem.
Python installieren:
- Unter Windows:
- Führen Sie das Installationsprogramm aus.
- Setzen Sie ein Häkchen bei Python zu PATH hinzufügen.
- Klicken Sie auf Jetzt installieren.
Auf dem Mac:
- Python ist möglicherweise bereits installiert. Andernfalls können Sie die neueste Version über das Terminal installieren.
Öffnen Sie Terminal und geben Sie den folgenden Befehl ein:
python --version
- Unter Windows:
Sophos-Integrationsskript herunterladen
- Rufen Sie die GitHub-Seite für das GitHub-Repository für die Sophos Central SIEM-Integration auf.
- Klicken Sie auf die grüne Schaltfläche Code > Download ZIP.
- Extrahieren Sie die ZIP-Datei.
Skriptkonfiguration einrichten
- Öffnen Sie die Datei
config.ini
in dem Verzeichnis, in dem Sie das ZIP-Archiv extrahiert haben. - 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.
- Speichern Sie die Datei.
Skript ausführen
Wechseln Sie zum Skriptordner.
Unter Windows:
- Drücken Sie die Windows-Taste und geben Sie
cmd
ein. - Klicken Sie auf Eingabeaufforderung.
- Wechseln Sie zum Skriptordner:
cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
- Drücken Sie die Windows-Taste und geben Sie
Unter macOS:
- Rufen Sie Anwendungen > Dienstprogramme auf.
- Öffnen Sie das Terminal.
- Wechseln Sie zum Skriptordner:
cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
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):
- Öffnen Sie den Taskplaner, indem Sie im Startmenü Taskplaner eingeben.
- Klicken Sie auf Aufgabe erstellen.
- Auf dem Tab Allgemein:
- Geben Sie der Aufgabe einen Namen, z. B.
Sophos AV Log Export
.
- Geben Sie der Aufgabe einen Namen, z. B.
- 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).
- 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 unterC:/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
.
- Klicken Sie auf OK, um die Aufgabe zu speichern.
Skript so automatisieren, dass es auf einem Mac kontinuierlich ausgeführt wird (mit Cron-Jobs):
- Öffnen Sie das Terminal.
- Geben Sie
crontab -e
ein und drücken Sie die Eingabetaste. Fügen Sie am Ende der Datei eine neue Zeile hinzu:
* * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
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