Apache Tomcat-Logs erfassen

Parserversion:3.0

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Apache Tomcat-Logs mit dem Bindplane-Agent in Google Security Operations aufnehmen.

Apache Tomcat ist ein Webanwendungsserver, der JSON-Zugriffsprotokolle für HTTP-Anfragen, Authentifizierungsereignisse und Serveraktivitäten generiert. Der Parser extrahiert Felder aus JSON- und Syslog-formatierten Logs und ordnet sie dem Unified Data Model (UDM) zu.

Hinweis

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

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher oder Linux-Host mit systemd
  • Auf dem Tomcat-Server installierter BindPlane-Agent (zum Lesen lokaler Logdateien)
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Administratorzugriff auf den Tomcat-Server

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.
  4. 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 auf dem Tomcat-Server installieren, um Logdateien zu erfassen

Installieren Sie den BindPlane-Agenten auf dem Tomcat-Server selbst, da er lokale Logdateien lesen muss.

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 Tomcat-Logs und Senden an Google SecOps konfigurieren

Konfigurationsdatei suchen

  • Linux:

    sudo nano /opt/observiq-otel-collector/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:
        filelog/tomcat:
            include:
                - /path/to/tomcat/logs/access-log.*.json
            start_at: beginning
    
    exporters:
        chronicle/tomcat:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: TOMCAT
            raw_log_field: body
    
    service:
        pipelines:
            logs/tomcat_to_chronicle:
                receivers:
                    - filelog/tomcat
                exporters:
                    - chronicle/tomcat
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • include: Pfad zu Tomcat-JSON-Zugriffsprotokolldateien. Passen Sie sie an Ihr Tomcat-Protokollverzeichnis und ‑Dateimuster an.
    • start_at: Auf beginning setzen, um vorhandene Logs zu lesen, oder auf end, um nur neue Einträge zu lesen.
  • 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
    • customer_id: Die Kundennummer, die aus der Google SecOps Console kopiert wurde
    • 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.

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"
        

JSON-Zugriffslogs in Tomcat konfigurieren

  1. Öffnen Sie die Tomcat-Konfigurationsdatei unter $CATALINA_BASE/conf/server.xml.
  2. Suchen Sie nach dem Tag <Host> und fügen Sie Folgendes ein:

    <Valve className="org.apache.catalina.valves.JsonAccessLogValve"
           directory="logs"
           prefix="access-log"
           suffix=".json"
           rotatable="true"
           maxDays="7"/>
    
  3. Starten Sie Tomcat neu, damit die Änderungen wirksam werden:

    cd /path/to/tomcat
    bin/catalina.sh stop
    bin/catalina.sh start
    
  4. Täglich wird eine neue JSON-Logdatei erstellt, z. B. logs/access-log.2025-07-02.json.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
@timestamp metadata.event_timestamp Der Wert von @timestamp aus dem Rohlog wird direkt diesem UDM-Feld zugeordnet. Sie gibt die Zeit an, zu der das Ereignis aufgetreten ist.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value Die temporäre ID des Kundenservicemitarbeiters wird als Schlüssel/Wert-Paar in den additional-Feldern hinzugefügt.
agent.hostname observer.hostname Der Hostname des Agents wird als Hostname des Beobachters verwendet.
agent.id observer.asset_id Die Agent-ID wird mit dem Agent-Typ kombiniert, um die Observer-Asset-ID zu erstellen (z.B. filebeat: <agent_id>).
agent.type observer.application Der Agent-Typ wird als Observer-Anwendung verwendet.
agent.version observer.platform_version Die Agent-Version wird als Version der Observer-Plattform verwendet.
host.hostname principal.hostname Der Hostname des Hosts wird als Prinzipal-Hostname verwendet.
host.id principal.asset.asset_id Die Host-ID wird mit Host Id: vorangestellt, um die Asset-ID des Hauptkontos zu erstellen.
host.ip principal.ip, observer.ip Die IP-Adresse des Hosts wird sowohl für die IP-Adresse des Prinzipal als auch für die IP-Adresse des Beobachters verwendet. Wenn mehrere IPs vorhanden sind, werden sie in einem Array zusammengeführt.
host.mac principal.mac Die MAC-Adresse des Hosts wird als primäre MAC-Adresse verwendet. Wenn mehrere MAC-Adressen vorhanden sind, werden sie in einem Array zusammengeführt.
host.os.family principal.platform Wenn die Hostbetriebssystemfamilie rhel oder redhat ist, wird die primäre Plattform auf LINUX festgelegt.
host.os.kernel principal.platform_patch_level Die Kernel-Version des Hostbetriebssystems wird als primärer Patchlevel der Plattform verwendet.
host.os.name additional.fields[os_name].value.string_value Der Name des Hostbetriebssystems wird als Schlüssel/Wert-Paar in den additional-Feldern hinzugefügt.
host.os.version principal.platform_version Die Host-Betriebssystemversion wird als primäre Plattformversion verwendet.
log.file.path principal.process.file.full_path Der Logpfad wird als vollständiger Pfad der Hauptprozessdatei verwendet.
log_level security_result.severity, security_result.severity_details, security_result.action Anhand des Protokollierungsgrads werden der Schweregrad des Sicherheitsergebnisses, die Schweregraddetails und die Aktion bestimmt. DEBUG, INFO und AUDIT entsprechen dem Schweregrad INFORMATIONAL und der Aktion ALLOW. ERROR wird dem Schweregrad ERROR und der Aktion BLOCK zugeordnet. WARNING und WARN entsprechen dem Schweregrad MEDIUM und der Aktion BLOCK. Der Rohwert für „log_level“ wird auch „severity_details“ zugeordnet.
logstash.irm_environment additional.fields[irm_environment].value.string_value Die Iron Mountain-Umgebung aus Logstash wird als Schlüssel/Wert-Paar in den additional-Feldern hinzugefügt.
logstash.irm_region additional.fields[irm_region].value.string_value Die Iron Mountain-Region aus Logstash wird als Schlüssel/Wert-Paar in den additional-Feldern hinzugefügt.
logstash.irm_site additional.fields[irm_site].value.string_value Der Iron Mountain-Standort aus Logstash wird als Schlüssel/Wert-Paar in den additional-Feldern hinzugefügt.
logstash.process.host intermediary.hostname Der Logstash-Verarbeitungshost wird als Zwischenhostname verwendet.
logstash.process.timestamp metadata.collected_timestamp Der Logstash-Verarbeitungszeitstempel wird als erfasster Zeitstempel verwendet.
logstash.xyz_environment additional.fields[xyz_environment].value.string_value Die xyz-Umgebung aus Logstash wird als Schlüssel/Wert-Paar in den additional-Feldern hinzugefügt.
logstash.xyz_region additional.fields[xyz_region].value.string_value Die xyz-Region aus Logstash wird als Schlüssel/Wert-Paar in den additional-Feldern hinzugefügt.
logstash.xyz_site additional.fields[xyz_site].value.string_value Die xyz-Website aus Logstash wird als Schlüssel/Wert-Paar in den additional-Feldern hinzugefügt.
message metadata.description Das Nachrichtenfeld wird als JSON geparst und das Feld event_message wird als Metadatenbeschreibung verwendet. Die Vermittleranwendung ist fest auf logstash codiert. Der Metadaten-Ereignistyp ist fest auf USER_UNCATEGORIZED codiert. Der Metadaten-Logtyp wird aus dem Batch.type oder batch.log_type des Rohlogs auf TOMCAT gesetzt. Der Name des Metadatenprodukts ist fest auf Tomcat codiert. Der Name des Metadatenanbieters ist fest auf Tomcat codiert.
user principal.user.userid Das Nutzerfeld aus dem Rohlog wird als Hauptnutzer-ID verwendet.
product_event metadata.product_event_type Aus dem Änderungsprotokoll zugeordnet
summary security_result.summary Aus dem Änderungsprotokoll zugeordnet
query additional.fields Aus dem Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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