McAfee Firewall Enterprise-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie McAfee Firewall Enterprise-Protokolle erfassen. Der Parsercode extrahiert zuerst Felder mit einer Reihe von Grok-Mustern und verarbeitet sowohl SYSLOG- als auch JSON-Formate. Je nach der erkannten Protokollkategorie werden dann bestimmte Grok-Muster und Schlüssel/Wert-Extraktionen angewendet, um die Daten dem UDM-Schema von Google Security Operations zuzuordnen.
Hinweis
- Sie benötigen eine Google Security Operations-Instanz.
- Sie müssen Windows 2016 oder höher oder einen Linux-Host mit
systemd
verwenden. - Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.
- Sie benötigen Berechtigungen für den Zugriff auf McAfee ESM.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
- Lade die Datei zur Authentifizierung der Datenaufnahme 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 Console an.
- Gehen Sie zu SIEM-Einstellungen > Profil.
- Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Windows-Installation
- Öffnen Sie die Eingabeaufforderung oder die 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 so konfigurieren, dass er Syslog-Protokolle aufnimmt und an Google SecOps sendet
Rufen Sie die Konfigurationsdatei auf:
- Suchen Sie die Datei
config.yaml
. Unter Linux befindet es sich normalerweise im Verzeichnis/etc/bindplane-agent/
, 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 with your specific IP and port listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Path to the ingestion authentication file creds: '/path/to/your/ingestion-auth.json' # Your Chronicle customer ID customer_id: 'your_customer_id' endpoint: malachiteingestion-pa.googleapis.com ingestion_labels: log_type: SYSLOG namespace: mcafee_esm raw_log_field: body 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 Kundennummer.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
im Abschnitt Authentifizierungsdatei für die Datenaufnahme von Google SecOps abrufen auf den Pfad, unter dem die Authentifizierungsdatei gespeichert wurde.
BindPlane-Agent neu starten, um die Änderungen anzuwenden
Führen Sie unter Linux den folgenden Befehl aus, um den BindPlane-Agent neu zu starten:
sudo systemctl restart bindplane-agent
Unter Windows können Sie den BindPlane-Agenten entweder über die Konsole Dienste oder über den folgenden Befehl neu starten:
net stop BindPlaneAgent && net start BindPlaneAgent
McAfee ESM für die Weiterleitung von Syslog konfigurieren
- Melden Sie sich in der McAfee ESM-Konsole an.
- Gehen Sie zu Systemeigenschaften > Ereignisweiterleitung.
- Klicken Sie auf Hinzufügen, um eine neue syslog-Weiterleitungsregel zu erstellen.
- Legen Sie folgende Einstellungen fest:
- Name: Geben Sie einen aussagekräftigen Namen ein, z. B. „Google SecOps-Weiterleitung“.
- Ziel-IP-Adresse: Geben Sie die IP-Adresse Ihres Syslog-Servers (oder BindPlane-Agents) ein.
- Zielport: Verwenden Sie 514 für UDP. Je nach Syslog-Server-/Bindplane-Konfiguration können Sie auch einen anderen Port angeben.
- Protokoll: Wählen Sie UDP aus. Je nach Syslog-Server-/Bindplane-Konfiguration sind auch TCP oder TLS möglich.
- Format: Wählen Sie CEF (Common Event Format) oder ASCII (empfohlenes Format für McAfee-Protokolle) aus.
- Filter: Hier können Sie Ereignistypen definieren, die weitergeleitet werden sollen, z. B. Firewall-Logs, Authentifizierungsereignisse oder Bedrohungserkennungen.
- Klicken Sie auf Speichern.
- Starten Sie den Dienst McAfee ESM neu, damit die Änderungen wirksam werden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
handeln | security_result.action_details | Der Wert wird aus dem Feld „act“ in der geparsten JSON-Nutzlast übernommen. |
Katze | security_result.category_details | Der Wert wird aus dem Feld „cat“ in der geparsten JSON-Nutzlast übernommen. |
data.AppID | target.application | Der Wert wird aus dem Feld „AppID“ in der geparsten JSON-Nutzlast übernommen. |
data.Destination_Hostname | target.hostname | Der Wert wird aus dem Feld „Destination_Hostname“ in der geparsten JSON-Nutzlast übernommen. |
data.Destination_UserID | target.user.windows_sid | Der Wert wird aus dem Feld „Destination_UserID“ in der geparsten JSON-Nutzlast übernommen. |
data.DomainID | target.administrative_domain | Der Wert wird aus dem Feld „DomainID“ in der geparsten JSON-Nutzlast übernommen. |
data.dst_ip | target.ip | Der Wert wird aus dem Feld „dst_ip“ in der geparsten JSON-Nutzlast übernommen. |
data.dst_mac | target.mac | Der Wert wird aus dem Feld „dst_mac“ in der geparsten JSON-Nutzlast übernommen. |
data.dst_port | target.port | Der Wert wird aus dem Feld „dst_port“ in der geparsten JSON-Nutzlast übernommen und in eine Ganzzahl konvertiert. |
data.HostID | target.hostname | Der Wert wird aus dem Feld „HostID“ in der geparsten JSON-Nutzlast übernommen. |
data.norm_sig.name | Anhand des Werts dieses Felds wird der Ereignistyp bestimmt. | |
data.PID | target.process.pid | Der Wert wird aus dem Feld „PID“ in der geparsten JSON-Nutzlast übernommen. |
data.Process_Name | target.process.command_line | Der Wert wird aus dem Feld „Process_Name“ in der geparsten JSON-Nutzlast übernommen. |
data.severity | security_result.severity | Der Wert wird aus dem Feld „severity“ in der geparsten JSON-Nutzlast übernommen, in eine Ganzzahl konvertiert und basierend auf seinem Wert einer UDM-Schweregradstufe zugeordnet: NIEDRIG (1–32), MITTEL (33–65), HOCH (66–100). |
data.sig.name | security_result.description | Der Wert wird aus dem Feld „sig.name“ in der geparsten JSON-Nutzlast übernommen. |
data.Source_Logon_ID | about.labels.value | Der Wert wird aus dem Feld „Source_Logon_ID“ in der geparsten JSON-Nutzlast übernommen. |
data.Source_UserID | principal.user.windows_sid | Der Wert wird aus dem Feld „Source_UserID“ in der geparsten JSON-Nutzlast übernommen. |
data.src_ip | principal.ip | Der Wert wird aus dem Feld „src_ip“ in der geparsten JSON-Nutzlast übernommen. |
data.src_mac | principal.mac | Der Wert wird aus dem Feld „src_mac“ in der geparsten JSON-Nutzlast übernommen. |
data.src_port | principal.port | Der Wert wird aus dem Feld „src_port“ in der geparsten JSON-Nutzlast übernommen und in eine Ganzzahl konvertiert. |
data.UserIDDst | target.user.userid | Der Wert wird aus dem Feld „UserIDDst“ in der geparsten JSON-Nutzlast übernommen. |
data.UserIDSrc | principal.user.userid | Der Wert wird aus dem Feld „UserIDSrc“ in der geparsten JSON-Nutzlast übernommen. |
deviceExternalId | about.asset.asset_id | Der Wert wird aus dem Feld „deviceExternalId“ in der geparsten JSON-Nutzlast übernommen und mit dem Produktnamen kombiniert, um eine eindeutige Asset-ID zu erstellen. |
deviceTranslatedAddress | about.nat_ip | Der Wert wird aus dem Feld „deviceTranslatedAddress“ in der geparsten JSON-Nutzlast übernommen. |
dst | target.ip | Der Wert wird aus dem Feld „dst“ in der geparsten JSON-Nutzlast übernommen. |
dpt | target.port | Der Wert wird aus dem Feld „dpt“ in der geparsten JSON-Nutzlast übernommen und in eine Ganzzahl konvertiert. |
eventId | additional.fields.value.string_value | Der Wert wird aus dem Feld „eventId“ in der geparsten JSON-Nutzlast übernommen. |
externalId | metadata.product_log_id | Der Wert wird aus dem Feld „externalId“ in der geparsten JSON-Nutzlast übernommen. |
Hostname | principal.hostname | Der Wert wird aus dem Feld „hostname“ extrahiert, das vom Grok-Muster extrahiert wird. |
log_category | metadata.log_type | Der Wert stammt aus dem Feld „log_category“, das vom Grok-Muster extrahiert wird. |
log_type | metadata.product_event_type | Der Wert wird aus dem Feld „log_type“ extrahiert, das vom Grok-Muster extrahiert wird. |
Nachricht | Dieses Feld wird analysiert, um je nach Protokollkategorie verschiedene Felder zu extrahieren. | |
nitroURL | Dieses Feld ist nicht dem IDM-Objekt im UDM zugeordnet. | |
pid | principal.process.pid | Der Wert wird aus dem Feld „pid“ extrahiert, das vom Grok-Muster extrahiert wird. |
process_id | about.process.pid | Der Wert wird aus dem Feld „process_id“ extrahiert, das vom Grok-Muster extrahiert wird. |
proto | network.ip_protocol | Der Wert wird aus dem Feld „proto“ in der geparsten JSON-Nutzlast übernommen und dem entsprechenden IP-Protokoll zugeordnet. |
rhost | principal.ip | Der Wert wird aus dem Feld „rhost“ übernommen, das vom Grok-Muster extrahiert und als IP-Adresse geparst wird. |
shost | principal.hostname | Der Wert wird aus dem Feld „shost“ in der geparsten JSON-Nutzlast übernommen. |
sntdom | principal.administrative_domain | Der Wert wird aus dem Feld „sntdom“ in der geparsten JSON-Nutzlast übernommen. |
spt | principal.port | Der Wert wird aus dem Feld „spt“ in der geparsten JSON-Nutzlast übernommen und in eine Ganzzahl konvertiert. |
src | principal.ip | Der Wert wird aus dem Feld „src“ in der geparsten JSON-Nutzlast übernommen. |
Zeit | timestamp | Der Wert wird aus dem Feld „time“ übernommen, das vom Grok-Muster extrahiert und als Zeitstempel geparst wird. |
Typ | metadata.product_event_type | Der Wert wird aus dem Feld „type“ extrahiert, das vom kv-Filter extrahiert wird. |
uid | principal.user.userid | Der Wert wird aus dem Feld „uid“ übernommen, das vom kv-Filter extrahiert wird. |
metadata.event_type | metadata.event_type | Der Wert wird anhand des Ereignisnamens und anderer Felder im Protokoll festgelegt. So wird der Ereignistyp ermittelt: Wenn der Ereignisname „TCP“ enthält, wird der Ereignistyp auf „NETWORK_CONNECTION“ gesetzt. – Wenn der Ereignisname „Mail“ enthält, wird der Ereignistyp auf „EMAIL_TRANSACTION“ festgelegt. – Wenn der Ereignisname „HTTP“ oder „http“ enthält, wird der Ereignistyp auf „NETWORK_HTTP“ festgelegt. – Wenn der Ereignisname „Nutzerzugriff“ oder „durch Zugriffsliste abgelehnt“ enthält, wird der Ereignistyp auf „USER_RESOURCE_ACCESS“ festgelegt. – Wenn der Ereignisname „Data Source Idle“ enthält, wird der Ereignistyp auf „STATUS_UPDATE“ gesetzt. – Wenn der Ereignisname „Comm with snowflex“ enthält, wird der Ereignistyp auf „SERVICE_UNSPECIFIED“ gesetzt. – Wenn der Ereignisname „Ein Konto wurde erfolgreich angemeldet“ enthält, wird der Ereignistyp auf „USER_LOGIN“ festgelegt. – Wenn der Ereignisname „Initialization status for service objects“ enthält, wird der Ereignistyp auf „GENERIC_EVENT“ gesetzt. – Wenn keine der oben genannten Bedingungen erfüllt ist, wird der Ereignistyp auf „GENERIC_EVENT“ festgelegt. |
metadata.vendor_name | metadata.vendor_name | Der Wert ist auf „MCAFEE“ festgelegt. |
network.direction | network.direction | Der Wert wird auf „INBOUND“ gesetzt, wenn das Feld „deviceDirection“ in der geparsten JSON-Nutzlast den Wert 0 hat. Andernfalls wird es auf „OUTBOUND“ gesetzt. |
security_result.severity | security_result.severity | Der Wert wird auf „LOW“ festgelegt, wenn das Feld „cef_event_severity“ in der geparsten JSON-Nutzlast den Wert „1“ hat, auf „MEDIUM“, wenn es den Wert „2“ hat, auf „HIGH“, wenn es den Wert „3“ hat, und auf „CRITICAL“, wenn es den Wert „9“ hat. |
Änderungen
2024-03-21
- Neu erstellter Parser.