Snort-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Snort-Logs mit Bindplane in Google Security Operations erfassen. Der Parser versucht, zwei verschiedene Snort-Logformate (SYSLOG + JSON) zu verarbeiten. Dazu werden grok-Muster verwendet, um relevante Felder zu extrahieren. Je nach erkanntem Format werden die Daten weiter verarbeitet, extrahierte Felder dem UDM-Schema (Unified Data Model) zugeordnet, Werte normalisiert und die Ausgabe mit zusätzlichem Kontext angereichert.
Hinweise
- Prüfen Sie, ob Sie eine Google Security Operations-Instanz haben.
- Achten Sie darauf, dass Sie Windows 2016 oder höher oder einen Linux-Host mit
systemdverwenden. - Wenn Sie einen Proxy verwenden, müssen die Firewallports geöffnet sein.
- Prüfen Sie, ob Sie privilegierten Zugriff auf Snort 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. 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
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,vioder Notepad).
- Suchen Sie die Datei
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: '/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 ingestion_labels: log_type: SNORT_IDS raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsErsetzen 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.jsonauf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Get Google SecOps ingestion authentication file (Authentifizierungsdatei für die Google SecOps-Aufnahme 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-agentUm den Bindplane-Agent unter Windows neu zu starten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog-Export in Snort v2.x konfigurieren
- Melden Sie sich über das Terminal auf dem Snort-Gerät an.
- Bearbeiten Sie die folgende Datei:
/etc/snort/snort.conf - Öffnen Sie
6) Configure output plugins. Fügen Sie den folgenden Eintrag hinzu:
# syslog output alert_syslog: host=BINDPLANE_IP_ADDRESS:PORT_NUMBER, LOG_AUTH LOG_ALERTErsetzen Sie Folgendes:
- BINDPLANE_IP_ADDRESS: Bindplane Agent IP address.
- PORT_NUMBER: Bindplane Agent port number.
Speichern Sie die Datei.
Starten Sie den Dienst snort.
Beenden Sie den Dienst rsyslog.
Bearbeiten Sie die folgende Datei:
/etc/rsyslogd.conf# remote host is: name/ip:port *.* @@BINDPLANE_IP_ADDRESS:PORT_NUMBERErsetzen Sie Folgendes:
- BINDPLANE_IP_ADDRESS: Bindplane Agent IP address.
- PORT_NUMBER: Bindplane Agent port number.
Starten Sie den Dienst rsyslog.
Syslog-Export in Snort v3.1.53 konfigurieren
- Melden Sie sich über das Terminal auf dem Snort-Gerät an.
- Beenden Sie die Dienste rsyslog und snort.
- Rufen Sie das folgende Snort-Installationsverzeichnis auf:
/usr/local/etc/snort/ Bearbeiten Sie die folgende Snort-Konfigurationsdatei:
snort.luaFügen Sie in den Optionen unter Ausgaben konfigurieren den folgenden Code an (Sie können eine beliebige Einrichtung und Ebene verwenden):
alert_syslog = { facility = 'local3', level = 'info', }Speichern Sie die Snort-Konfigurationsdatei.
Rufen Sie das Verzeichnis mit den Standardkonfigurationsdateien für den rsyslog-Dienst auf:
/etc/rsyslog.dErstellen Sie eine neue Datei:
3-snort.conf:# cd /etc/rsyslog.d # vi 3-snort.confWenn Sie Logs über TCP oder UDP senden möchten, fügen Sie die folgende Konfiguration hinzu:
local3.* @@BINDPLANE_IP_ADDRESS:PORT_NUMBERErsetzen Sie Folgendes:
- BINDPLANE_IP_ADDRESS: Bindplane agent IP address.
- PORT_NUMBER: Bindplane agent port number.
Speichern Sie die Datei.
Starten Sie rsyslog und dann den Dienst snort.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| agent.hostname | observer.hostname | Der Wert stammt aus dem Feld agent.hostname im Rohlog. |
| agent.id | observer.asset_id | Der Wert wird aus dem Feld agent.id im Rohlog übernommen und mit agent.type verkettet: agent.type:agent.id. |
| agent.type | observer.application | Der Wert stammt aus dem Feld agent.type im Rohlog. |
| agent.version | observer.platform_version | Der Wert stammt aus dem Feld agent.version im Rohlog. |
| alert.category | security_result.category_details | Der Wert stammt aus dem Feld alert.category im Rohlog. |
| alert.rev | security_result.rule_version | Der Wert stammt aus dem Feld alert.rev im Rohlog. |
| alert.rule | security_result.summary | Der Wert wird aus dem Feld alert.rule im Rohlog übernommen, wobei doppelte Anführungszeichen entfernt werden. |
| alert.severity | security_result.severity | Wenn alert.severity größer oder gleich 4 ist, wird LOW festgelegt. Wenn alert.severity = 2 oder 3, auf MEDIUM setzen. Wenn alert.severity gleich 1 ist, wird HIGH festgelegt. Setzen Sie ihn andernfalls auf UNKNOWN_SEVERITY. |
| alert.signature | security_result.rule_name | Der Wert stammt aus dem Feld alert.signature im Rohlog. |
| alert.signature_id | security_result.rule_id | Der Wert stammt aus dem Feld alert.signature_id im Rohlog. |
| app_proto | network.application_protocol | Wenn app_proto dns, smb oder http ist, konvertieren Sie den Wert in Großbuchstaben und verwenden Sie ihn. Setzen Sie ihn andernfalls auf UNKNOWN_APPLICATION_PROTOCOL. |
| Kategorie | security_result.category | Wenn category trojan-activity ist, legen Sie NETWORK_MALICIOUS fest. Wenn category policy-violation ist, legen Sie POLICY_VIOLATION fest. Setzen Sie ihn andernfalls auf UNKNOWN_CATEGORY. |
| classtype | security_result.rule_type | Der Wert wird aus dem Feld classtype im Rohlog übernommen, sofern es nicht leer oder unknown ist. |
| community_id | network.community_id | Der Wert stammt aus dem Feld community_id im Rohlog. |
| date_log | Wird verwendet, um den Ereigniszeitstempel festzulegen, wenn das Feld time leer ist. |
|
| Ab | metadata.description | Der Wert stammt aus dem Feld desc im Rohlog. |
| dest_ip | target.ip | Der Wert stammt aus dem Feld dest_ip im Rohlog. |
| dest_port | target.port | Der Wert wird aus dem Feld dest_port im Rohlog übernommen und in eine Ganzzahl konvertiert. |
| dstport | target.port | Der Wert wird aus dem Feld dstport im Rohlog übernommen und in eine Ganzzahl konvertiert. |
| file.filename | security_result.about.file.full_path | Der Wert wird aus dem Feld file.filename im Rohlog übernommen, sofern es nicht leer oder / ist. |
| file.size | security_result.about.file.size | Der Wert wurde aus dem Feld file.size im Rohlog übernommen und in eine vorzeichenlose Ganzzahl konvertiert. |
| host.name | principal.hostname | Der Wert stammt aus dem Feld host.name im Rohlog. |
| Hostname | principal.hostname | Der Wert stammt aus dem Feld hostname im Rohlog. |
| inter_host | intermediary.hostname | Der Wert stammt aus dem Feld inter_host im Rohlog. |
| log.file.path | principal.process.file.full_path | Der Wert stammt aus dem Feld log.file.path im Rohlog. |
| metadata.version | metadata.product_version | Der Wert stammt aus dem Feld metadata.version im Rohlog. |
| Proto | network.ip_protocol | Der Wert stammt aus dem Feld proto im Rohlog. Wenn es sich um eine Zahl handelt, wird sie mithilfe einer Suchtabelle in den entsprechenden IP-Protokollnamen umgewandelt. |
| rule_name | security_result.rule_name | Der Wert stammt aus dem Feld rule_name im Rohlog. |
| signature_id | security_result.rule_id | Der Wert stammt aus dem Feld signature_id im Rohlog. |
| signature_rev | security_result.rule_version | Der Wert stammt aus dem Feld signature_rev im Rohlog. |
| src_ip | principal.ip | Der Wert stammt aus dem Feld src_ip im Rohlog. |
| src_port | principal.port | Der Wert wird aus dem Feld src_port im Rohlog übernommen und in eine Ganzzahl konvertiert. |
| srcport | principal.port | Der Wert wird aus dem Feld srcport im Rohlog übernommen und in eine Ganzzahl konvertiert. |
| Zeit | Wird verwendet, um den Zeitstempel des Ereignisses festzulegen. | |
| metadata.event_type | Immer auf SCAN_NETWORK gesetzt. |
|
| metadata.log_type | Hartcodiert auf SNORT_IDS. |
|
| metadata.product_name | Hartcodiert auf SNORT_IDS. |
|
| metadata.vendor_name | Hartcodiert auf SNORT. |
|
| security_result.action | Wird auf ALLOW gesetzt, wenn alert.action gleich allowed ist. Andernfalls wird der Wert auf UNKNOWN_ACTION gesetzt. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten