Apache Cassandra-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Apache Cassandra-Logs mit Bindplane in Google Security Operations aufnehmen. Der Parser extrahiert Felder und konvertiert sie in das einheitliche Datenmodell (Unified Data Model, UDM). Dabei werden Grok-Muster verwendet, um die ursprüngliche Nachricht zu parsen. Anschließend wird ein JSON-Filter für verschachtelte Daten verwendet und es werden bedingte Transformationen durchgeführt, um verschiedene Felder ihren UDM-Entsprechungen zuzuordnen. Dabei werden verschiedene Logebenen verarbeitet und die Ausgabe wird mit Metadaten angereichert.

Hinweise

Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:

  • Google SecOps-Instanz
  • Windows 2016 oder höher oder Linux-Host mit systemd
  • Wenn die Ausführung hinter einem Proxy erfolgt, sind die Firewallports geöffnet.
  • Privilegierter Zugriff auf eine Apache Cassandra-Instanz

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie 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 > „Profil“ auf.
  3. Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.

BindPlane-Agent installieren

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
    

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
    

Zusätzliche Installationsressourcen

Weitere Installationsoptionen finden Sie im Installationsleitfaden.

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

  1. Rufen Sie die Konfigurationsdatei auf:
    • Suchen Sie die Datei config.yaml. Normalerweise befindet es sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    • Ö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: 'CASSANDRA'
                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 Kunden-ID.

  5. Aktualisieren Sie /path/to/ingestion-authentication-file.json auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei 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-agent
    
  • Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Syslog-Export in Apache Cassandra konfigurieren

  1. Melden Sie sich über SSH auf dem Apache Cassandra-Host an.
  2. Öffnen Sie die Konfigurationsdatei logback.xml und fügen Sie in Zeile 28 den folgenden Code ein:
    • Bei den meisten Versionen von Apache Cassandra ist der Speicherort $(CASSANDRA_HOME)/conf.
    • Bei Paketinstallationen von DataStax Enterprise lautet der Speicherort /etc/dse.
    • Bei der Installation von DSE über eine TAR-Datei ist der Speicherort $(TARBALL_ROOT)/resources/cassandra/conf.
  3. Fügen Sie der Datei logback.xml in Zeile 28 die folgende Appender-Definition hinzu:

    <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost>bindplane-ip</syslogHost>
        <port>bindplane-port</port>
        <facility>LOCAL7</facility>
        <throwableExcluded>true</throwableExcluded>
        <suffixPattern>%thread:%level:%logger{36}:%msg</suffixPattern>
    </appender>
    
  4. Ersetzen Sie bindplane-ip und bindplane-port durch die tatsächliche IP-Adresse und den Port des Bindplane-Agents.

  5. Fügen Sie dem Root-Logger-Block <root level=INFO> in der Datei logback.xml den folgenden Code hinzu:

    1. Der Speicherort, an dem diese Zeile eingefügt wird, hängt von Ihrer Version von Apache Cassandra ab:

      • Apache Cassandra 5.0.x, Zeile 123.
      • Apache Cassandra 4.0.x und 4.1.x, Zeile 115.
      • Apache Cassandra 3.11.x und 3.0.x, Zeile 92.
      • DataStax Enterprise (alle Versionen), Zeile 121.
      <appender-ref ref=`SYSLOG` />
      

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
agent.ephemeral_id observer.labels.value Wert von agent.ephemeral_id aus der inneren JSON-Nachricht.
agent.hostname observer.hostname Wert von agent.hostname aus der inneren JSON-Nachricht.
agent.id observer.asset_id Verkettung von filebeat: und dem Wert von agent.id aus der inneren JSON-Nachricht.
agent.name observer.user.userid Wert von agent.name aus der inneren JSON-Nachricht.
agent.type observer.application Wert von agent.type aus der inneren JSON-Nachricht.
agent.version observer.platform_version Wert von agent.version aus der inneren JSON-Nachricht.
cloud.availability_zone principal.cloud.availability_zone Wert von cloud.availability_zone aus der inneren JSON-Nachricht.
cloud.instance.id principal.resource.product_object_id Wert von cloud.instance.id aus der inneren JSON-Nachricht.
cloud.instance.name principal.resource.name Wert von cloud.instance.name aus der inneren JSON-Nachricht.
cloud.machine.type principal.resource.attribute.labels.value Wert von cloud.machine.type aus der inneren JSON-Nachricht, wobei der entsprechende key-Wert machine_type ist.
cloud.provider principal.resource.attribute.labels.value Wert von cloud.provider aus der inneren JSON-Nachricht, wobei der entsprechende key-Wert provider ist.
event_metadata._id metadata.product_log_id Wert von event_metadata._id aus der inneren JSON-Nachricht.
event_metadata.version metadata.product_version Wert von event_metadata.version aus der inneren JSON-Nachricht.
host.architecture target.asset.hardware.cpu_platform Wert von host.architecture aus der inneren JSON-Nachricht.
host.fqdn target.administrative_domain Wert von host.fqdn aus der inneren JSON-Nachricht.
host.hostname target.hostname Wert von host.hostname aus der inneren JSON-Nachricht.
host.id target.asset.asset_id Verkettung von Host Id: und dem Wert von host.id aus der inneren JSON-Nachricht.
host.ip target.asset.ip Array von IP-Adressen aus host.ip in der inneren JSON-Nachricht.
host.mac target.mac Array von MAC-Adressen aus host.mac in der inneren JSON-Nachricht.
host.os.kernel target.platform_patch_level Wert von host.os.kernel aus der inneren JSON-Nachricht.
host.os.platform target.platform Wird auf LINUX gesetzt, wenn host.os.platform gleich debian ist.
host.os.version target.platform_version Wert von host.os.version aus der inneren JSON-Nachricht.
hostname principal.hostname Der Wert von hostname, der mit grok aus dem Feld message extrahiert wurde.
key security_result.detection_fields.value Der Wert von key wird mit grok aus dem Feld message extrahiert, wobei der entsprechende key key ist.
log.file.path principal.process.file.full_path Wert von log.file.path aus der inneren JSON-Nachricht.
log_level security_result.severity Zuordnung basierend auf dem Wert von log_level: DEBUG, INFO, AUDIT werden INFORMATIONAL zugeordnet; ERROR wird ERROR zugeordnet; WARNING wird MEDIUM zugeordnet.
log_level security_result.severity_details Der Wert von log_level, der mit grok aus dem Feld message extrahiert wurde.
log_type metadata.log_type Wert von log_type aus dem Rohlog.
message security_result.description Die Beschreibung wird aus dem Feld message mit grok extrahiert.
message target.process.command_line Befehlszeile, die mit grok aus dem Feld message extrahiert wurde.
now security_result.detection_fields.value Der Wert von now wird mit „grok“ aus dem Feld message extrahiert, wobei der entsprechende key now ist. Wird aus dem Feld event_time geparst, das mit grok aus dem Feld message extrahiert wurde. Wird auf USER_RESOURCE_ACCESS gesetzt, wenn sowohl hostname als auch host.hostname vorhanden sind. Andernfalls wird es auf GENERIC_EVENT gesetzt. Setze dies auf CASSANDRA. Setze dies auf CASSANDRA. Setze dies auf ephemeral_id. Wird auf VIRTUAL_MACHINE gesetzt, wenn cloud.instance.name vorhanden ist. Legen Sie für die entsprechenden Erkennungsfelder key und now fest.
timestamp timestamp Aus dem Feld create_time des Rohlogs.

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