Collecter les journaux Apache Tomcat

Compatible avec :

Ce document explique comment ingérer des journaux Apache Tomcat dans Google Security Operations à l'aide de Bindplane. L'analyseur extrait les champs des journaux au format JSON et les transforme en Unified Data Model (UDM). Il initialise les valeurs par défaut, analyse la charge utile JSON, gère les éventuelles erreurs d'analyse JSON et mappe différents champs du journal brut dans les champs UDM correspondants, y compris les informations sur les métadonnées, le principal, l'observateur et les résultats de sécurité, tout en ajoutant des libellés personnalisés pour le contexte de l'environnement.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Un hôte Windows 2016 ou version ultérieure, ou un hôte Linux avec systemd
  • Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
  • Apache Tomcat version 9.0.70 ou ultérieure
  • Accès en écriture à $CATALINA_BASE/conf et $CATALINA_BASE/logs

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Profil.
  3. Copiez et enregistrez le numéro client de la section Informations sur l'organisation.

Installez l'agent BindPlane sur le serveur Tomcat pour collecter les fichiers journaux.

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de fenêtres

  1. Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installation de Linux

  1. Ouvrez un terminal avec les droits root ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Ressources d'installation supplémentaires

Pour plus d'options d'installation, consultez le guide d'installation.

Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps

  1. Accédez au fichier de configuration :
    • Recherchez le fichier config.yaml. En règle générale, il se trouve dans le répertoire /etc/bindplane-agent/ sous Linux ou dans le répertoire d'installation sous Windows.
    • Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou le Bloc-notes).
  2. Modifiez le fichier config.yaml comme suit :

    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
    

Redémarrez l'agent Bindplane pour appliquer les modifications.

  • Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :

    sudo systemctl restart bindplane-agent
    
  • Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurer les journaux d'accès JSON dans Tomcat

  1. Ouvrez le fichier Tomcat à l'emplacement $CATALINA_BASE/conf/server.xml.
  2. Recherchez la balise <Host> et ajoutez-y ce qui suit :

    <Valve className="org.apache.catalina.valves.JsonAccessLogValve"
          directory="logs"
          prefix="access-log"
          suffix=".json"
          rotatable="true"
          maxDays="7"/>
    
  3. Redémarrez Tomcat pour appliquer les modifications :

    cd /path/to/tomcat
    bin/catalina.sh stop
    bin/catalina.sh start
    
  4. Un nouveau fichier journal JSON s'affiche chaque jour (par exemple, logs/access-log.2025-07-02.json).

Table de mappage UDM

Champ de journal Mappage UDM Logique
@timestamp metadata.event_timestamp La valeur de @timestamp du journal brut est directement mappée sur ce champ UDM. Elle représente l'heure à laquelle l'événement s'est produit.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value L'ID éphémère de l'agent est ajouté en tant que paire clé-valeur dans les champs additional.
agent.hostname observer.hostname Le nom d'hôte de l'agent est utilisé comme nom d'hôte de l'observateur.
agent.id observer.asset_id L'ID de l'agent est associé au type d'agent pour créer l'ID de l'élément observateur (par exemple, filebeat: <agent_id>).
agent.type observer.application Le type d'agent est utilisé comme application d'observation.
agent.version observer.platform_version La version de l'agent est utilisée comme version de la plate-forme de l'observateur.
host.hostname principal.hostname Le nom d'hôte de l'hôte est utilisé comme nom d'hôte principal.
host.id principal.asset.asset_id L'ID de l'hôte est précédé de Host Id: pour créer l'ID de l'asset principal.
host.ip principal.ip, observer.ip L'adresse IP de l'hôte est utilisée pour l'adresse IP du principal et de l'observateur. Si plusieurs adresses IP sont présentes, elles sont fusionnées dans un tableau.
host.mac principal.mac L'adresse MAC de l'hôte est utilisée comme adresse MAC principale. Si plusieurs adresses MAC sont présentes, elles sont fusionnées dans un tableau.
host.os.family principal.platform Si la famille de l'OS hôte est rhel ou redhat, la plate-forme principale est définie sur LINUX.
host.os.kernel principal.platform_patch_level La version du noyau de l'OS hôte est utilisée comme niveau de correctif principal de la plate-forme.
host.os.name additional.fields[os_name].value.string_value Le nom de l'OS hôte est ajouté en tant que paire clé-valeur dans les champs additional.
host.os.version principal.platform_version La version de l'OS hôte est utilisée comme version principale de la plate-forme.
log.file.path principal.process.file.full_path Le chemin du journal est utilisé comme chemin d'accès complet au fichier du processus principal.
log_level security_result.severity, security_result.severity_details, security_result.action Le niveau de journalisation permet de déterminer la gravité, les détails de gravité et l'action du résultat de sécurité. DEBUG, INFO et AUDIT correspondent à la gravité INFORMATIONAL et à l'action ALLOW. ERROR correspond à la gravité ERROR et à l'action BLOCK. WARNING et WARN correspondent à une gravité MOYENNE et à une action BLOCK. La valeur brute de log_level est également mappée à severity_details.
logstash.irm_environment additional.fields[irm_environment].value.string_value L'environnement Iron Mountain de Logstash est ajouté en tant que paire clé-valeur dans les champs additional.
logstash.irm_region additional.fields[irm_region].value.string_value La région Iron Mountain de Logstash est ajoutée en tant que paire clé/valeur dans les champs additional.
logstash.irm_site additional.fields[irm_site].value.string_value Le site Iron Mountain de Logstash est ajouté en tant que paire clé-valeur dans les champs additional.
logstash.process.host intermediary.hostname L'hôte de traitement Logstash est utilisé comme nom d'hôte intermédiaire.
logstash.process.timestamp metadata.collected_timestamp L'horodatage de traitement Logstash est utilisé comme horodatage de collecte.
logstash.xyz_environment additional.fields[xyz_environment].value.string_value L'environnement xyz de Logstash est ajouté en tant que paire clé-valeur dans les champs additional.
logstash.xyz_region additional.fields[xyz_region].value.string_value La région xyz de Logstash est ajoutée en tant que paire clé-valeur dans les champs additional.
logstash.xyz_site additional.fields[xyz_site].value.string_value Le site xyz de Logstash est ajouté en tant que paire clé-valeur dans les champs additional.
message metadata.description Le champ de message est analysé en tant que JSON et son champ event_message est utilisé comme description des métadonnées. L'application intermédiaire est codée en dur sur logstash. Le type d'événement de métadonnées est codé en dur sur USER_UNCATEGORIZED. Le type de journal des métadonnées est défini sur TOMCAT à partir de batch.type ou batch.log_type du journal brut. Le nom du produit de métadonnées est codé en dur sur Tomcat. Le nom du fournisseur de métadonnées est codé en dur sur Tomcat.
user principal.user.userid Le champ utilisateur du journal brut est utilisé comme ID utilisateur principal.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.