OPNsense-Firewall-Logs erfassen
Dieser Parser extrahiert Felder aus OPNsense-Firewall-Logs (Syslog- und CSV-Formate) und ordnet sie dem UDM zu. Es verwendet Grok- und CSV-Parsing für „filterlog“-Anwendungsprotokolle und verarbeitet verschiedene Protokollformate und Netzwerkprotokolle (TCP, UDP, ICMP usw.), um UDM-Felder wie „principal“, „target“, „network“ und „security_result“ zu füllen. Außerdem werden Metadaten wie Anbieter- und Produktname hinzugefügt und der Ereignistyp anhand der vorhandenen Informationen zu Haupt- und Zielobjekt bestimmt.
Hinweise
- Prüfen Sie, ob Sie eine Google Security Operations-Instanz haben.
- Prüfen Sie, ob Sie privilegierten Zugriff auf die OPNsense-Weboberfläche haben.
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.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Profil auf.
- Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
- Führen Sie für die Windows-Installation das folgende Skript aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Führen Sie für die Linux-Installation das folgende Skript aus:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Weitere Installationsoptionen finden Sie in dieser Installationsanleitung.
Bindplane-Agent so konfigurieren, dass Syslog-Daten aufgenommen und an Google SecOps gesendet werden
- Greifen Sie auf den Computer zu, auf dem der BindPlane-Agent installiert ist.
Bearbeiten Sie die Datei
config.yaml
so:receivers: tcplog: # Replace the below port <54525> and IP (0.0.0.0) with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: testNamespace raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Starten Sie den Bindplane-Agent neu, um die Änderungen zu übernehmen. Verwenden Sie dazu den folgenden Befehl:
sudo systemctl bindplane restart
Syslog-Serverkonfiguration zu OPNsense hinzufügen
- Melden Sie sich in der OPNsense-Weboberfläche an.
- Gehen Sie zu System > Einstellungen > Protokollierung.
- Aktivieren Sie im Bereich Remote-Logging die Option Logs an Remote-Syslog-Server senden, indem Sie das Kästchen anklicken.
- Geben Sie im Feld Remote-Syslog-Server die IP-Adresse des Syslog-Servers ein, einschließlich des PORTS (z. B. 10.10.10.10:54525).
- Wählen Sie Local0 als Syslog-Einrichtung aus.
Stellen Sie die Syslog-Ebene auf Alert (Warnung) ein.
Klicken Sie auf Speichern, um die Änderungen zu übernehmen.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
column1 |
security_result.rule_id |
Direkt aus column1 übernommen. |
column10 |
additional.fields[].key : „tos“additional.fields[].value.string_value : Wert von column10 |
Direkt zugeordnet aus column10 , verschachtelt unter additional.fields mit dem Schlüssel „tos“. |
column12 |
additional.fields[].key : „ttl“additional.fields[].value.string_value : Wert von column12 |
Direkt aus column12 zugeordnet, unter additional.fields mit dem Schlüssel „ttl“ verschachtelt. |
column13 |
additional.fields[].key : „Id“additional.fields[].value.string_value : Wert von column13 |
Direkt aus column13 zugeordnet, unter additional.fields mit dem Schlüssel „Id“ verschachtelt. |
column14 |
additional.fields[].key : „offset“additional.fields[].value.string_value : Wert von column14 |
Direkt aus column14 zugeordnet, unter additional.fields mit dem Schlüssel „offset“ verschachtelt. |
column15 |
additional.fields[].key : „flags“additional.fields[].value.string_value : Wert von column15 |
Direkt aus column15 zugeordnet, unter additional.fields mit dem Schlüssel „flags“ verschachtelt. |
column17 |
network.ip_protocol |
Direkt aus column17 zugeordnet, nachdem die Großschreibung konvertiert wurde. |
column18 |
network.received_bytes |
Direkt aus column18 zugeordnet, nachdem sie in eine vorzeichenlose Ganzzahl konvertiert wurde. |
column19 |
principal.ip |
Direkt aus column19 übernommen. |
column20 |
target.ip |
Direkt aus column20 übernommen. |
column21 |
principal.port (wenn column17 TCP oder UDP ist)additional.fields[].key : „data_length“additional.fields[].value.string_value : Extrahierter Wert (wenn column17 ICMP, GRE, ESP oder IGMP ist) |
Wenn column17 TCP/UDP ist, wird der Wert direkt aus column21 zugeordnet und in eine Ganzzahl konvertiert. Andernfalls wird der Wert „datalength“ mit grok extrahiert und mit dem Schlüssel „data_length“ in additional.fields eingefügt. |
column22 |
target.port |
Direkt aus column22 zugeordnet, wenn column17 TCP oder UDP ist, und in eine Ganzzahl konvertiert. |
column24 |
additional.fields[].key : „tcp_flags“additional.fields[].value.string_value : Wert von column24 |
Direkt aus column24 zugeordnet, wenn column17 TCP ist, andernfalls unter additional.fields mit dem Schlüssel „tcp_flags“ verschachtelt. |
column29 |
additional.fields[].key : „tcp_options“additional.fields[].value.string_value : Wert von column29 |
Direkt aus column29 zugeordnet, wenn column17 TCP ist, verschachtelt unter additional.fields mit dem Schlüssel „tcp_options“. |
column4 |
additional.fields[].key : „tracker“additional.fields[].value.string_value : Wert von column4 |
Direkt zugeordnet aus column4 , verschachtelt unter additional.fields mit dem Schlüssel „tracker“. |
column5 |
additional.fields[].key : „interface“additional.fields[].value.string_value : Wert von column5 |
Direkt aus column5 zugeordnet, unter additional.fields mit dem Schlüssel „interface“ verschachtelt. |
column6 |
security_result.rule_type |
Direkt aus column6 übernommen. |
column7 |
security_result.action |
Zugeordnet von column7 . Wenn „block“, wird es in Großbuchstaben „BLOCK“ umgewandelt. Wenn „pass“, auf „ALLOW“ festlegen. |
column8 |
network.direction |
Zugeordnet von column8 . Wenn „in“, legen Sie den Wert auf „INBOUND“ fest. Wenn „out“, auf „OUTBOUND“ festlegen. |
domain |
principal.administrative_domain |
Direkt aus dem von Grok extrahierten domain zugeordnet. Auf „NETWORK_CONNECTION“ festgelegt, wenn sowohl die Prinzipal- als auch die Ziel-IP-Adresse vorhanden sind, andernfalls „GENERIC_EVENT“. Fest codiert auf „OPNSENSE“. Fest codiert auf „OPNSENSE“. |
message |
Verschiedene Felder | Die Daten werden mit grok- und CSV-Filtern geparst, um verschiedene Felder zu extrahieren. In anderen Zeilen finden Sie spezifische Zuordnungen. |
ts |
metadata.event_timestamp.seconds , timestamp.seconds |
Wird mit „grok“ aus dem Nachrichtenfeld geparst und dann in einen Zeitstempel konvertiert. Der Sekundenwert wird sowohl für metadata.event_timestamp.seconds als auch für timestamp.seconds verwendet. |
application |
principal.application |
Direkt aus dem von Grok extrahierten application zugeordnet. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten