Suricata-EVE-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Suricata-EVE-Logs mit Bindplane in Google Security Operations aufnehmen.

Suricata ist eine Open-Source-Engine zur Erkennung von Netzwerkbedrohungen, die Funktionen zur Einbruchserkennung (Intrusion Detection, IDS), zur Einbruchabwehr (Intrusion Prevention, IPS) und zur Überwachung der Netzwerksicherheit bietet. Die EVE-Protokollausgabe (Extensible Event Format) enthält umfassende JSON-formatierte Protokolle mit Daten zu Warnungen, Flows, DNS, HTTP, TLS und Dateitransaktionen. Der Parser extrahiert Felder aus Suricata EVE-Logs im JSON-Format. Die JSON-Nachricht wird geparst und die Werte werden dem Unified Data Model (UDM) zugeordnet. Außerdem werden Standardmetadatenwerte für die Ereignisquelle und den Ereignistyp festgelegt.

Hinweise

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher oder Linux-Host mit systemd
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Privilegierter Zugriff auf den Suricata-Host (Root oder Sudo)

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
  3. 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

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.

BindPlane-Agent installieren

Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.

Fenstereinbau

  1. Öffnen Sie die Eingabeaufforderung oder 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
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sc query observiq-otel-collector
    

Der Dienst sollte als RUNNING (Wird ausgeführt) angezeigt werden.

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
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sudo systemctl status observiq-otel-collector
    

Der Dienst sollte als aktiv (wird ausgeführt) angezeigt werden.

Zusätzliche Installationsressourcen

Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agent.

BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren

Konfigurationsdatei suchen

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Konfigurationsdatei bearbeiten

  • Ersetzen Sie den gesamten Inhalt von config.yaml durch die folgende Konfiguration:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'SURICATA_EVE'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Konfigurationsparameter

  • Ersetzen Sie die folgenden Platzhalter:

    • Empfängerkonfiguration:

      • udplog: Verwenden Sie udplog für UDP-Syslog oder tcplog für TCP-Syslog.
      • 0.0.0.0: IP-Adresse, an der gelauscht werden soll (0.0.0.0, um an allen Schnittstellen zu lauschen)
      • 514: Portnummer, die überwacht werden soll (Standard-Syslog-Port)
    • Exporter-Konfiguration:

      • creds_file_path: Vollständiger Pfad zur Datei für die Authentifizierung bei der Aufnahme:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID: Kunden-ID aus dem Abschnitt „Kunden-ID abrufen“
      • endpoint: Regionale Endpunkt-URL:
        • USA: malachiteingestion-pa.googleapis.com
        • Europa: europe-malachiteingestion-pa.googleapis.com
        • Asien: asia-southeast1-malachiteingestion-pa.googleapis.com
        • Eine vollständige Liste finden Sie unter Regionale Endpunkte.
      • log_type: Logtyp genau wie in Chronicle (SURICATA_EVE)

Konfigurationsdatei speichern

  • Speichern Sie die Datei nach der Bearbeitung:
    • Linux: Drücken Sie Ctrl+O, dann Enter und dann Ctrl+X.
    • Windows: Klicken Sie auf Datei > Speichern.

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 observiq-otel-collector
    
    1. Prüfen Sie, ob der Dienst ausgeführt wird:

        sudo systemctl status observiq-otel-collector
      
    2. Logs auf Fehler prüfen:

        sudo journalctl -u observiq-otel-collector -f
      
  • Wählen Sie eine der folgenden Optionen aus, um den Bindplane-Agent unter Windows neu zu starten:

    • Eingabeaufforderung oder PowerShell als Administrator:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Services-Konsole:

      1. Drücken Sie Win+R, geben Sie services.msc ein und drücken Sie die Eingabetaste.
      2. Suchen Sie nach observIQ OpenTelemetry Collector.
      3. Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.

      4. Prüfen Sie, ob der Dienst ausgeführt wird:

        sc query observiq-otel-collector
        
      5. Logs auf Fehler prüfen:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Syslog-Weiterleitung für Suricata-EVE konfigurieren

  1. Öffnen Sie die Suricata-Konfigurationsdatei (normalerweise /etc/suricata/suricata.yaml).
  2. Suchen Sie den Abschnitt outputs und konfigurieren Sie die EVE-Log-Ausgabe für syslog:

    outputs:
      - eve-log:
          enabled: yes
          filetype: syslog
          identity: "suricata"
          facility: local5
          level: Info
          types:
            - alert:
                payload: yes
                payload-printable: yes
                packet: yes
                metadata: yes
            - http:
                extended: yes
            - dns:
                query: yes
                answer: yes
            - tls:
                extended: yes
            - files:
                force-magic: no
            - flow
            - netflow
            - anomaly:
                enabled: yes
            - stats:
                enabled: yes
    
  3. Wenn der Syslog-Daemon nicht für die Weiterleitung an Bindplane konfiguriert ist, konfigurieren Sie rsyslog oder syslog-ng:

    • Für rsyslog (/etc/rsyslog.conf bearbeiten oder /etc/rsyslog.d/suricata.conf erstellen):

      local5.* @BINDPLANE_IP:514
      
      • Ersetzen Sie BINDPLANE_IP durch die IP-Adresse des Bindplane-Agent-Hosts.
      • Verwenden Sie @ für UDP oder @@ für TCP.
    • Für syslog-ng (/etc/syslog-ng/syslog-ng.conf bearbeiten):

      destination d_bindplane { udp("BINDPLANE_IP" port(514)); };
      filter f_suricata { facility(local5); };
      log { source(s_src); filter(f_suricata); destination(d_bindplane); };
      
  4. Starten Sie den Syslog-Daemon neu:

    sudo systemctl restart rsyslog
    
  5. Starten Sie Suricata neu:

     sudo systemctl restart suricata
    
  6. Prüfen Sie die Bindplane-Agent-Logs, um zu sehen, ob Syslog-Nachrichten gesendet werden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
timestamp metadata.event_timestamp Zeitstempel des Ereignisses
event_type metadata.product_event_type Typ des EVE-Ereignisses (z.B. „alert“, „flow“, „dns“, „http“, „tls“)
src_ip principal.ip Quell-IP-Adresse
src_port principal.port Quellportnummer
dest_ip target.ip IP-Adresse des Ziels
dest_port target.port Zielportnummer
Proto network.ip_protocol Netzwerkprotokoll (z.B. TCP, UDP, ICMP)
flow_id network.session_id Eindeutige Ablauf-ID
alert.signature security_result.rule_name Name der Benachrichtigungssignatur
alert.signature_id security_result.rule_id ID der Benachrichtigungssignatur
alert.severity security_result.severity Schweregrad der Benachrichtigung
alert.category security_result.category_details Kategorie der Benachrichtigungsklassifizierung
alert.action security_result.action Ergriffene Maßnahme (z.B. zugelassen, blockiert)
alert.rev security_result.rule_version Regelversionsnummer
http.hostname target.hostname Hostname der HTTP-Anfrage
http.url target.url HTTP-Anfrage-URL
http.http_method network.http.method HTTP-Anfragemethode
http.status network.http.response_code HTTP-Antwortstatuscode
http.http_user_agent network.http.user_agent HTTP-User-Agent-String
http.http_refer network.http.referral_url HTTP-Verweis-URL
http.length additional.fields HTTP-Inhaltslänge
dns.type network.dns.type DNS-Abfrage oder ‑Antwort
dns.rrname network.dns.questions.name DNS-Abfragename
dns.rrtype network.dns.questions.type DNS-Abfragetyp
dns.rdata network.dns.answers.data DNS-Antwortdaten
tls.subject network.tls.client.subject Betreff des TLS-Zertifikats
tls.issuerdn network.tls.client.issuer Aussteller des TLS-Zertifikats
tls.sni network.tls.client.server_name TLS Server Name Indication
tls.version network.tls.version TLS-Version
tls.ja3.hash network.tls.client.ja3 JA3-Client-Fingerabdruck-Hash
tls.ja3s.hash network.tls.server.ja3s JA3S-Server-Fingerabdruck-Hash
app_proto network.application_protocol Protokoll der Anwendungsebene erkannt
flow.bytes_toserver network.sent_bytes Vom Client an den Server gesendete Bytes
flow.bytes_toclient network.received_bytes Vom Server an den Client gesendete Bytes
flow.pkts_toserver additional.fields Vom Client an den Server gesendete Pakete
flow.pkts_toclient additional.fields Vom Server an den Client gesendete Pakete
in_iface additional.fields Eingabenetzwerkschnittstelle
community_id network.community_id Hash des Netzwerk-Community-ID-Ablaufs

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