Netgate pfSense-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie die Netgate pfSense-Protokolle mithilfe eines Google Security Operations-Weiterleiters erfassen können.
Weitere Informationen finden Sie unter Datenaufnahme in Google SecOps.
Mit einem Datenaufnahmelabel wird der Parser angegeben, der Roh-Logdaten in das strukturierte UDM-Format normalisiert. Die Informationen in diesem Dokument beziehen sich auf den Parser mit dem Datenaufnahmelabel PFSENSE
.
Netgate pfSense konfigurieren
- Melden Sie sich mit Administratoranmeldedaten in der pfSense-Benutzeroberfläche an.
- Führen Sie in den Einstellungen für das globale Protokoll die folgenden Schritte aus:
- Wählen Sie Status > Systemprotokolle > Einstellungen aus.
- Wählen Sie auf dem Tab Einstellungen die Option Allgemeine Protokollierungsoptionen aus und führen Sie die folgenden Schritte aus:
- Wählen Sie im Feld Lognachrichtenformat die Option Syslog (RFC 5424, mit Zeitstempeln im RFC 3339-Format mit Mikrosekundengenauigkeit) aus.
- Klicken Sie im Feld Firewall-Standardblockierungen protokollieren die folgenden Kästchen an:
- Pakete protokollieren, die mit den Standardblockierungsregeln in der Regelsatzdatei übereinstimmen
- Protokollpaket, das mit den in der Regelliste festgelegten Standard-Karten-/Ticketregeln übereinstimmt
- Pakete protokollieren, die durch die Regeln „Block bogon networks“ blockiert wurden
- Pakete protokollieren, die durch die Regeln „Private Netzwerke blockieren“ blockiert wurden
- Klicken Sie auf Speichern, um die neuen Einstellungen zu speichern.
Firewall-Protokolle an Google SecOps senden
- Wählen Sie in den Einstellungen für das globale Protokoll die Option Status > Systemprotokolle > Einstellungen aus.
- Wählen Sie auf dem Tab Einstellungen die Option Optionen für die Remote-Protokollierung aus und führen Sie die folgenden Schritte aus:
- Klicken Sie im Feld Remote-Logging aktivieren auf das Kästchen Protokollmeldungen an Remote-Syslog-Server senden.
- Behalten Sie im Feld Quelladresse den Standardwert Beliebig bei.
- Wenn im Feld IP-Protokoll die Quelladresse als Standardwert ausgewählt ist, müssen Sie die IP-Adresse nicht angeben. Andernfalls geben Sie die IP-Adresse ein.
- Geben Sie unter Remote-Log-Server die IP-Adresse des Google SecOps-Weiterleiters an.
- Klicken Sie unter Remote syslog-Inhalt das Kästchen Firewall-Ereignisse an.
- Klicken Sie auf Speichern, um die Änderungen zu speichern.
Google SecOps-Weiterleiter für die Aufnahme von Netgate pfSense-Logs konfigurieren
- Wählen Sie SIEM-Einstellungen > Weiterleitungen aus.
- Klicken Sie auf Neuen Weiterleiter hinzufügen.
- Geben Sie im Feld Name des Absenders einen eindeutigen Namen für den Absender ein.
- Klicken Sie auf Senden und dann auf Bestätigen. Der Weiterleiter wird hinzugefügt und das Fenster Aufnehmerkonfiguration hinzufügen wird angezeigt.
- Geben Sie im Feld Name des Collectors einen eindeutigen Namen für den Collector ein.
- Wählen Sie pfSense als Logtyp aus.
- Wählen Sie im Feld Typ des Collectors die Option Syslog aus.
- Konfigurieren Sie die folgenden obligatorischen Eingabeparameter:
- Protokoll: Geben Sie das Verbindungsprotokoll an, mit dem der Collector nach syslog-Daten sucht.
- Address (Adresse): Geben Sie die Ziel-IP-Adresse oder den Hostnamen an, unter der bzw. dem sich der Collector befindet und auf syslog-Daten wartet.
- Port: Gibt den Zielport an, an dem sich der Collector befindet und auf syslog-Daten wartet.
- Klicken Sie auf Senden.
Weitere Informationen zu Google SecOps-Weiterleitungen finden Sie unter Weiterleitungskonfigurationen über die Google SecOps-Benutzeroberfläche verwalten.
Wenn beim Erstellen von Weiterleitungen Probleme auftreten, wenden Sie sich an den Google SecOps-Support.
Referenz für die Feldzuordnung
Dieser pfSense-Firewall-Parser extrahiert Felder aus syslog-Nachrichten mithilfe von Grok-Mustern und verarbeitet verschiedene Protokollformate, einschließlich DHCP- und Firewall-Ereignissen. Diese extrahierten Felder werden dann dem UDM zugeordnet und die Daten werden um Kontextinformationen wie IP-Adressen, MAC-Adressen, Nutzernamen und Netzwerkdetails ergänzt.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
Anwendung | principal.application |
Der Wert wird mithilfe von Grok-Mustern aus der Protokollnachricht extrahiert. Bei syslog-Nachrichten wird der Name der Anwendung in der Regel nach dem Hostnamen und dem Zeitstempel angezeigt. |
Befehl | principal.process.command_line |
Wird aus dem Beschreibungsfeld extrahiert, wenn das Protokoll eine Befehlsausführung angibt. |
description | metadata.description |
Das Feld „description“ wird der UDM-Metadatenbeschreibung zugeordnet, mit Ausnahme von syslog-ng-Anwendungsprotokollen, bei denen es metadata.description zugeordnet wird. Bei DHCP-Ereignissen wird die dhcp_type vorangestellt. |
dhcp_type | metadata.product_event_type |
Der DHCP-Nachrichtentyp (z.B. DHCPDISCOVER, DHCPOFFER) werden extrahiert und zugeordnet. |
Host | intermediary.hostname ODER intermediary.ip |
Wenn der Hostwert eine gültige IP-Adresse ist, wird er intermediary.ip zugeordnet. Andernfalls wird es intermediary.hostname zugeordnet. |
Host | principal.hostname , principal.asset.hostname |
Wenn keine Haupt-IP-Adresse vorhanden ist, wird der Host als Haupt-Hostname behandelt. |
mac | principal.mac , network.dhcp.chaddr |
Die MAC-Adresse, die mit einer DHCP-Anfrage verknüpft ist, wird extrahiert und zugeordnet. |
src_ip | principal.ip , principal.asset.ip |
Sie werden mithilfe eines Grok-Musters aus bestimmten Protokollformaten extrahiert. |
src_mac | principal.mac |
Sie werden mithilfe eines Grok-Musters aus bestimmten Protokollformaten extrahiert. |
dst_mac | target.mac |
Sie werden mithilfe eines Grok-Musters aus bestimmten Protokollformaten extrahiert. |
timestamp | metadata.event_timestamp |
Der Zeitstempel wird aus der Protokollnachricht extrahiert und in ein UDM-Zeitstempelformat konvertiert. Die Zeitzoneninformationen (tz) werden vor der Umwandlung an den Zeitstempel angehängt, sofern verfügbar. |
timestamp_no_year | metadata.event_timestamp |
Wenn ein Zeitstempel ohne Jahr vorhanden ist, wird er analysiert und das aktuelle Jahr wird während des Analysevorgangs hinzugefügt. |
Nutzer | principal.user.userid |
Der mit einem Ereignis verknüpfte Nutzername wird extrahiert und zugeordnet. |
Spalte1 | security_result.rule_id |
Wird aus der ersten CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt. |
column6 | security_result.rule_type |
Wird aus der sechsten CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt. |
column7 | security_result.action |
Wird aus der siebten CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt. In „BLOCKIEREN“ oder „ZULASSEN“ umgewandelt. |
column8 | network.direction |
Wird aus der achten CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt. In „INBOUND“ oder „OUTBOUND“ umgewandelt. |
column13 | network.ip_protocol (bei UDP oder ICMP) |
Wird aus der dreizehnten CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll UDP oder ICMP ist. Bei TCP/UDP-Ereignissen wird damit ein zusätzliches Feld mit dem Schlüssel „Id“ erstellt. |
column16 | principal.ip , principal.asset.ip (bei IPv6 und Spalte 9 mit dem Wert 6) |
Wird aus der sechzehnten CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und Spalte 9 6 ist. Bei TCP/UDP-Ereignissen wird dieser Wert für die Protokollidentifikation verwendet, wenn column9 den Wert 4 hat. |
column17 | target.ip , target.asset.ip (bei IPv6 und nicht bei ip_failure) |
Wird aus der siebzehnten CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format ist, Spalte9 = 6 und der Wert eine gültige IP-Adresse ist. Bei TCP/UDP-Ereignissen wird es zur Protokollidentifikation verwendet. |
column18 | principal.port (bei UDP) |
Wird aus der 18. CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll UDP ist. Bei TCP/UDP-Ereignissen wird network.received_bytes zugewiesen. |
column19 | target.port (bei UDP) |
Wird aus der 19. CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll UDP ist. Bei DHCP-Ereignissen wird es network.dhcp.yiaddr zugeordnet. Bei anderen Ereignissen wird es principal.ip , principal.asset.ip zugeordnet. |
column20 | additional.fields (Schlüssel: „data_length“) (bei UDP) |
Wird aus der 20. CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll UDP ist. Bei anderen Ereignissen wird es target.ip , target.asset.ip zugeordnet. |
column21 | principal.port (bei TCP/UDP) |
Wird aus der 21. CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll TCP oder UDP ist. |
column22 | target.port (bei TCP/UDP) |
Wird aus der 22. CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll TCP oder UDP ist. |
column23 | additional.fields (Schlüssel: „data_length“) (bei TCP/UDP) |
Wird aus der 23. CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll TCP oder UDP ist. |
column24 | additional.fields (Schlüssel: „tcp_flags“) (bei TCP) |
Wird aus der 24. CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll TCP ist. |
column25 | additional.fields (Schlüssel: „sequence_number“) (bei TCP/UDP) |
Wird aus der 25. CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll TCP oder UDP ist. |
column29 | additional.fields (Schlüssel: „tcp_options“) (bei TCP) |
Wird aus der 29. CSV-Spalte zugeordnet, wenn die Beschreibung im CSV-Format vorliegt und das Protokoll TCP ist. |
compression_algo | additional.fields (Schlüssel: „Compression Algorithm“) |
Wird aus dem Beschreibungsfeld extrahiert und als zusätzliches Feld hinzugefügt. |
Ab | metadata.description |
Wird aus dem Nachrichtenfeld extrahiert und als Beschreibung verwendet. |
principal_ip | principal.ip , principal.asset.ip |
Wird aus dem Beschreibungsfeld extrahiert und stellt die Haupt-IP-Adresse dar. |
principal_username | principal.user.userid |
Wird aus dem Beschreibungsfeld extrahiert und entspricht dem Nutzernamen des Hauptkontos. |
Status | security_result.detection_fields (Schlüssel: „status“) |
Wird aus dem Beschreibungsfeld extrahiert und als Erkennungsfeld in das Sicherheitsergebnis eingefügt. |
target_host | target.hostname , target.asset.hostname |
Wird aus dem Beschreibungsfeld extrahiert und stellt den Zielhostnamen dar. |
src_port | principal.port |
Wird aus dem Beschreibungsfeld extrahiert und steht für den Quellport. Wird anhand verschiedener Protokollfelder und Parserlogik ermittelt. Kann NETWORK_CONNECTION, NETWORK_DHCP, STATUS_UPDATE oder GENERIC_EVENT sein. Hartcodiert auf „PFSENSE“. „PFSENSE“ ist hartcodiert. Hartcodiert auf „PFSENSE“. Legen Sie für DHCP-Ereignisse „DHCP“ fest. Legen Sie für DHCPDISCOVER und DHCPREQUEST „BOOTREQUEST“ und für DHCPOFFER und DHCPACK „BOOTREPLY“ fest. Legen Sie je nach Feld dhcp_type „DISCOVER“, „REQUEST“, „OFFER“ oder „ACK“ fest. |
Änderungen
2024-05-08
- Grok-Muster zum Parsen des Felds „description“ hinzugefügt.
- „principal_ip“ wurde auf „principal.ip“ und „principal.asset.ip“ umgestellt.
- „src_port“ wurde „principal.port“ zugeordnet.
- „compression_algo“ wurde in „additional.fields“ umgewandelt.
- „status“ wurde in „security_result.detection_fields“ geändert.
- „principal_username“ wurde auf „principal.user.userid“ zugeordnet.
- „target_host“ wurde „target.hostname“ und „target.asset.hostname“ zugeordnet.
2023-05-05
- Vor dem Zuordnen von „network.ip_protocol“ wurde die Umwandlung in Großbuchstaben hinzugefügt.
- „column18“ wurde auf „principal.port“ zugeordnet, wenn das Protokoll in „column13“ vorhanden ist.
- „column19“ wurde in „target.port“ zugeordnet, wenn das Protokoll in „column13“ vorhanden ist.
- „column20“ wurde „additional.fields“ als „data-length“ zugeordnet, wenn das Protokoll in „column13“ vorhanden ist.
2023-02-20
- Grok-Muster hinzugefügt, um das neue Filterprotokollformat und das syslog-ng-Format zu unterstützen.
2022-10-04
- Der Name des Firewallgeräts wurde für Protokolle, bei denen „event_types“ den Wert „NETWORK_CONNECTION“ hat, in „intermediary.hostname“ statt „principal.hostname“ geändert.
2022-09-05
- Enhancement-
- Für Logs im CSV-Format werden die folgenden Felder zugeordnet.
- Grok-Muster zum Abrufen von „IP“ und „MAC“ hinzugefügt.
- „column19“, also „source-address“, wurde „network.dhcp.yiaddr“ zugeordnet.
- „security_result.action“ wurde „ALLOW“ zugeordnet, wenn „column7“ mit „pass“ übereinstimmt.
- Wenn „Spalte9“ dem Wert „6“ entspricht, was für „IPv6“ steht, werden die folgenden Felder zugeordnet:
- Spalte „column17“, also „Zieladresse“, wurde „target.ip“ zugeordnet.
- Spalte „column16“, also „source-address“, wurde „principal.ip“ zugeordnet.
- „event_type“ wurde „NETWORK_CONNECTION“ zugeordnet, wenn „column16“ und „column17“ nicht null sind.
- „Spalte12“, also „hop_limit“, wurde „zusätzliche.felder“ zugeordnet.
- „column13“, also „ip_protocol“, wurde „network.ip_protocol“ zugeordnet.
- Die benutzerdefinierten Parser wurden in den Standardparser migriert.
- Bedingte Prüfung hinzugefügt, um „event_type“ auf „STATUS_UPDATE“ festzulegen
2022-06-30
- „ttl“ wurde „additional.fields“ zugeordnet.
- „Id“ wurde „additional.fields“ zugeordnet.
- „Offset“ wurde „additional.fields“ zugeordnet.
- „Datenlänge“ wurde „additional.fields“ zugeordnet.
- „Length“ wurde „additional.fields“ zugeordnet.
- „Sequence-number“ wurde „additional.fields“ zugeordnet.
2022-04-11
- Neu erstellter Parser