Apache Tomcat-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Apache Tomcat-Logs mit Bindplane in Google Security Operations aufnehmen. Der Parser extrahiert Felder aus JSON-formatierten Logs und transformiert sie in das Unified Data Model (UDM). Sie initialisiert Standardwerte, parst die JSON-Nutzlast, verarbeitet potenzielle JSON-Parsing-Fehler und ordnet verschiedene Felder aus dem Rohlog entsprechenden UDM-Feldern zu, einschließlich Metadaten, Prinzipal, Beobachter und Sicherheitsergebnisinformationen. Außerdem werden benutzerdefinierte Labels für den Umgebungskontext hinzugefügt.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Ein Windows-Host mit Windows 2016 oder höher oder ein Linux-Host mit
systemd
- Wenn die Ausführung hinter einem Proxy erfolgt, sind die Firewallports geöffnet.
- Apache Tomcat-Version 9.0.70 oder höher
- Schreibzugriff auf
$CATALINA_BASE/conf
und$CATALINA_BASE/logs
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie 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 > „Profil“ auf.
- 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-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.
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 im Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
- Rufen Sie die Konfigurationsdatei auf:
- 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
,vi
oder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so:receivers: filelog/tomcat: include: [ /path/to/tomcat/logs/access-log.*.json ] start_at: beginning exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/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 log_type: 'TOMCAT' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - filelog/tomcat exporters: - chronicle/chronicle_w_labels
- Ersetzen Sie
/path/to/tomcat/logs
. - Ersetzen Sie
<customer_id>
durch die tatsächliche Kunden-ID. - Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Authentifizierungsdatei für die Google SecOps-Aufnahme abrufen gespeichert wurde.
- Ersetzen Sie
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
JSON-Zugriffslogs in Tomcat konfigurieren
- Öffnen Sie die Tomcat-Datei unter
$CATALINA_BASE/conf/server.xml
. Suchen Sie das <Host>-Tag und fügen Sie Folgendes ein:
<Valve className="org.apache.catalina.valves.JsonAccessLogValve" directory="logs" prefix="access-log" suffix=".json" rotatable="true" maxDays="7"/>
Starten Sie Tomcat neu, damit die Änderungen übernommen werden:
cd /path/to/tomcat bin/catalina.sh stop bin/catalina.sh start
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 an, wann 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 Observer-Plattformversion 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 Hauptnutzers 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 Host-Betriebssystemfamilie rhel oder redhat ist, wird die primäre Plattform auf LINUX festgelegt. |
host.os.kernel |
principal.platform_patch_level |
Die Kernelversion des Hostbetriebssystems wird als primäre Patch-Ebene 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 Protokollpfad 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 Schweregradinformationen und die Aktion bestimmt. DEBUG, INFO und AUDIT werden der Schweregradstufe INFORMATIONAL und der Aktion ALLOW zugeordnet. „ERROR“ entspricht dem Schweregrad „ERROR“ und der Aktion „BLOCK“. WARNING und WARN entsprechen dem Schweregrad MEDIUM und der Aktion BLOCK. Der Rohwert von „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 primäre Nutzer-ID verwendet. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten