Snort-Protokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie mit Bindplane Snort-Logs in Google Security Operations erfassen. Der Parser versucht, zwei verschiedene Snort-Protokollformate (SYSLOG + JSON) zu verarbeiten, indem er mithilfe von grok-Mustern relevante Felder extrahiert. Je nach identifiziertem 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

  • 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 erhöhte Zugriffsrechte für Snort.

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
  3. 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

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Profil.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.

Bindplane-Agent installieren

Windows-Installation

  1. Öffnen Sie die Eingabeaufforderung oder die PowerShell als Administrator.
  2. 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

  1. Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
  2. 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
    

Weitere Installationsressourcen

Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet

  1. Rufen Sie die Konfigurationsdatei auf:

    1. Suchen Sie die Datei config.yaml. Normalerweise befindet es sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    2. Öffnen Sie die Datei mit einem Texteditor, z. B. nano, vi oder Notepad.
  2. 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_labels
    
  3. Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.

  4. Ersetzen Sie <customer_id> durch die tatsächliche Kundennummer.

  5. 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.

Starten Sie den Bindplane-Agent neu, um die Änderungen anzuwenden

  • Führen Sie den folgenden Befehl aus, um den Bindplane-Agenten unter Linux neu zu starten:

    sudo systemctl restart bindplane-agent
    
  • Sie können den Bindplane-Agenten unter Windows entweder über die Dienste-Konsole oder mit dem folgenden Befehl neu starten:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Syslog-Export in Snort v2.x konfigurieren

  1. Melden Sie sich über das Terminal auf dem Snort-Gerät an.
  2. Bearbeiten Sie die folgende Datei: /etc/snort/snort.conf
  3. Öffnen Sie 6) Configure output plugins.
  4. Fügen Sie den folgenden Eintrag hinzu:

    # syslog
    output alert_syslog: host=BINDPLANE_IP_ADDRESS:PORT_NUMBER, LOG_AUTH LOG_ALERT
    
  5. Ersetzen Sie Folgendes:

    • BINDPLANE_IP_ADDRESS: Bindplane Agent IP address.
    • PORT_NUMBER: Bindplane Agent port number.
  6. Speichern Sie die Datei.

  7. Starten Sie den Dienst snort.

  8. Beenden Sie den Dienst rsyslog.

  9. Bearbeiten Sie die folgende Datei: /etc/rsyslogd.conf

    # remote host is: name/ip:port
    *.* @@BINDPLANE_IP_ADDRESS:PORT_NUMBER
    
  10. Ersetzen Sie Folgendes:

    • BINDPLANE_IP_ADDRESS: Bindplane Agent IP address.
    • PORT_NUMBER: Bindplane Agent port number.
  11. Starten Sie den Dienst rsyslog.

Syslog-Export unter Snort v3.1.53 konfigurieren

  1. Melden Sie sich über das Terminal auf dem Snort-Gerät an.
  2. Beenden Sie die Dienste rsyslog und snort.
  3. Rufen Sie das folgende Snort-Installationsverzeichnis auf: /usr/local/etc/snort/
  4. Bearbeiten Sie die folgende Snort-Konfigurationsdatei: snort.lua

  5. Füge unter Ausgaben konfigurieren den folgenden Code hinzu. Du kannst eine beliebige Einrichtung und Ebene verwenden:

    alert_syslog =
      {
        facility = 'local3',
        level = 'info',
      }
    
  6. Speichern Sie die Snort-Konfigurationsdatei.

  7. Rufen Sie das Verzeichnis mit den Standardkonfigurationsdateien des Dienstes rsyslog auf: /etc/rsyslog.d

  8. So erstellen Sie eine neue Datei: 3-snort.conf:

    # cd /etc/rsyslog.d
    # vi 3-snort.conf
    
  9. Wenn Sie Protokolle über TCP oder UDP senden möchten, fügen Sie die folgende Konfiguration hinzu: local3.* @@BINDPLANE_IP_ADDRESS:PORT_NUMBER

  10. Ersetzen Sie Folgendes:

    • BINDPLANE_IP_ADDRESS: Bindplane agent IP address.
    • PORT_NUMBER: Bindplane agent port number.
  11. Speichern Sie die Datei.

  12. Starten Sie rsyslog und dann den Dienst snort.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
agent.hostname observer.hostname Wert aus dem Feld agent.hostname im Rohprotokoll.
agent.id observer.asset_id Wert aus dem Feld agent.id im Rohprotokoll, der mit agent.type wie folgt zusammengefügt wird: agent.type:agent.id.
agent.type observer.application Wert aus dem Feld agent.type im Rohprotokoll.
agent.version observer.platform_version Wert aus dem Feld agent.version im Rohprotokoll.
alert.category security_result.category_details Wert aus dem Feld alert.category im Rohprotokoll.
alert.rev security_result.rule_version Wert aus dem Feld alert.rev im Rohprotokoll.
alert.rule security_result.summary Wert aus dem Feld alert.rule im Rohprotokoll, ohne doppelte Anführungszeichen.
alert.severity security_result.severity Wenn alert.severity größer oder gleich 4 ist, setzen Sie LOW. Wenn alert.severity 2 oder 3 ist, setzen Sie es auf MEDIUM. Wenn alert.severity = 1 ist, setzen Sie HIGH. Andernfalls setzen Sie UNKNOWN_SEVERITY.
alert.signature security_result.rule_name Wert aus dem Feld alert.signature im Rohprotokoll.
alert.signature_id security_result.rule_id Wert aus dem Feld alert.signature_id im Rohprotokoll.
app_proto network.application_protocol Wenn app_proto den Wert dns, smb oder http hat, wandeln Sie ihn in Großbuchstaben um und verwenden Sie diesen Wert. Andernfalls setzen Sie UNKNOWN_APPLICATION_PROTOCOL.
Kategorie security_result.category Wenn category trojan-activity ist, setzen Sie NETWORK_MALICIOUS. Wenn category policy-violation ist, setzen Sie POLICY_VIOLATION. Andernfalls setzen Sie UNKNOWN_CATEGORY.
classtype security_result.rule_type Wert aus dem Feld classtype im Rohprotokoll, sofern es nicht leer oder unknown ist.
community_id network.community_id Wert aus dem Feld community_id im Rohprotokoll.
date_log Wird verwendet, um den Ereigniszeitstempel festzulegen, wenn das Feld time leer ist.
Ab metadata.description Wert aus dem Feld desc im Rohprotokoll.
dest_ip target.ip Wert aus dem Feld dest_ip im Rohprotokoll.
dest_port target.port Wert aus dem Feld dest_port im Rohprotokoll, der in eine Ganzzahl konvertiert wurde.
dstport target.port Wert aus dem Feld dstport im Rohprotokoll, der in eine Ganzzahl konvertiert wurde.
file.filename security_result.about.file.full_path Wert aus dem Feld file.filename im Rohprotokoll, sofern es nicht leer oder / ist.
file.size security_result.about.file.size Wert aus dem Feld file.size im Rohprotokoll, der in eine positive Ganzzahl umgewandelt wurde.
host.name principal.hostname Wert aus dem Feld host.name im Rohprotokoll.
Hostname principal.hostname Wert aus dem Feld hostname im Rohprotokoll.
inter_host intermediary.hostname Wert aus dem Feld inter_host im Rohprotokoll.
log.file.path principal.process.file.full_path Wert aus dem Feld log.file.path im Rohprotokoll.
metadata.version metadata.product_version Wert aus dem Feld metadata.version im Rohprotokoll.
Proto network.ip_protocol Wert aus dem Feld proto im Rohprotokoll. Wenn es sich um eine Zahl handelt, wird sie mithilfe einer Suchtabelle in den entsprechenden IP‑Protokollnamen umgewandelt.
rule_name security_result.rule_name Wert aus dem Feld rule_name im Rohprotokoll.
signature_id security_result.rule_id Wert aus dem Feld signature_id im Rohprotokoll.
signature_rev security_result.rule_version Wert aus dem Feld signature_rev im Rohprotokoll.
src_ip principal.ip Wert aus dem Feld src_ip im Rohprotokoll.
src_port principal.port Wert aus dem Feld src_port im Rohprotokoll, der in eine Ganzzahl konvertiert wurde.
srcport principal.port Wert aus dem Feld srcport im Rohprotokoll, der in eine Ganzzahl konvertiert wurde.
Zeit Wird verwendet, um den Ereigniszeitstempel festzulegen.
is_alert Wird auf true gesetzt, wenn alert.severity = 1 ist, andernfalls nicht zugeordnet.
is_significant Wird auf true gesetzt, wenn alert.severity = 1 ist, andernfalls nicht zugeordnet.
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 auf UNKNOWN_ACTION.

Änderungen

2024-12-04

Optimierung:

  • Grok-Muster zum Umgang mit SYSLOG-Formatprotokollen wurden hinzugefügt.
  • Wenn der Wert von net_proto Tcp ist, setzen Sie den Wert von network.ip_protocol auf TCP.

2024-11-21

Optimierung:

  • Ein Grok-Muster zum Verarbeiten von SYSLOG-Format-Protokollen wurde hinzugefügt.

2022-09-22

Optimierung:

  • Die Bedingung „on_error“ wurde für das Feld „agent.hostname“ hinzugefügt, um die nicht geparsten Protokolle zu analysieren.

2022-07-05

Optimierung:

  • Ein Grok-Muster zum Verarbeiten von Protokollen im syslog-Format wurde hinzugefügt.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten