Recolha registos do Apache Tomcat

Compatível com:

Este documento explica como carregar registos do Apache Tomcat para o Google Security Operations através do Bindplane. O analisador extrai campos de registos formatados em JSON, transformando-os no modelo de dados unificado (UDM). Inicializa os valores predefinidos, analisa o payload JSON, processa potenciais erros de análise JSON e mapeia vários campos do registo não processado para os campos UDM correspondentes, incluindo metadados, principal, observador e informações de resultados de segurança, ao mesmo tempo que adiciona etiquetas personalizadas para o contexto do ambiente.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Um anfitrião Windows 2016 ou posterior, ou um anfitrião Linux com systemd
  • Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
  • Versão 9.0.70 ou posterior do Apache Tomcat
  • Acesso de escrita a $CATALINA_BASE/conf e $CATALINA_BASE/logs

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente Bindplane no servidor Tomcat para recolher ficheiros de registo

Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

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

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. Execute o seguinte comando:

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

Recursos de instalação adicionais

Para ver opções de instalação adicionais, consulte o guia de instalação.

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:
    • Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    • Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. Edite o ficheiro config.yaml da seguinte forma:

    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
    

Reinicie o agente do Bindplane para aplicar as alterações

  • Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure os registos de acesso JSON no Tomcat

  1. Abra o ficheiro do Tomcat em $CATALINA_BASE/conf/server.xml.
  2. Localize a etiqueta <Host> e adicione o seguinte no interior:

    <Valve className="org.apache.catalina.valves.JsonAccessLogValve"
          directory="logs"
          prefix="access-log"
          suffix=".json"
          rotatable="true"
          maxDays="7"/>
    
  3. Reinicie o Tomcat para aplicar as alterações:

    cd /path/to/tomcat
    bin/catalina.sh stop
    bin/catalina.sh start
    
  4. É apresentado um novo ficheiro de registo JSON diariamente (por exemplo, logs/access-log.2025-07-02.json).

Tabela de mapeamento do UDM

Campo de registo Mapeamento de UDM Lógica
@timestamp metadata.event_timestamp O valor de @timestamp do registo não processado é mapeado diretamente para este campo da UDM. Representa a hora em que o evento ocorreu.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value O ID efémero do agente é adicionado como um par de chave-valor nos campos additional.
agent.hostname observer.hostname O nome do anfitrião do agente é usado como o nome do anfitrião do observador.
agent.id observer.asset_id O ID do agente é combinado com o tipo de agente para criar o ID do recurso observador (por exemplo, filebeat: <agent_id>).
agent.type observer.application O tipo de agente é usado como a aplicação observadora.
agent.version observer.platform_version A versão do agente é usada como a versão da plataforma do observador.
host.hostname principal.hostname O nome de anfitrião do anfitrião é usado como o nome de anfitrião principal.
host.id principal.asset.asset_id O ID do anfitrião é precedido de Host Id: para criar o ID do recurso principal.
host.ip principal.ip, observer.ip O endereço IP do anfitrião é usado para o IP principal e o IP do observador. Se estiverem presentes vários IPs, estes são unidos num conjunto.
host.mac principal.mac O endereço MAC do anfitrião é usado como o endereço MAC principal. Se estiverem presentes vários MACs, estes são unidos numa matriz.
host.os.family principal.platform Se a família do SO anfitrião for rhel ou redhat, a plataforma principal é definida como LINUX.
host.os.kernel principal.platform_patch_level A versão do kernel do SO anfitrião é usada como o nível de patch principal da plataforma.
host.os.name additional.fields[os_name].value.string_value O nome do SO do anfitrião é adicionado como um par de chave-valor nos campos additional.
host.os.version principal.platform_version A versão do SO anfitrião é usada como a versão principal da plataforma.
log.file.path principal.process.file.full_path O caminho do registo é usado como o caminho completo do ficheiro do processo principal.
log_level security_result.severity, security_result.severity_details, security_result.action O nível do registo é usado para determinar a gravidade do resultado de segurança, os detalhes da gravidade e a ação. DEBUG, INFO e AUDIT são mapeados para a gravidade INFORMATIONAL e a ação ALLOW. O ERROR é mapeado para a gravidade ERROR e a ação BLOCK. WARNING e WARN são mapeados para gravidade MÉDIA e ação BLOCK. O valor log_level não processado também é mapeado para severity_details.
logstash.irm_environment additional.fields[irm_environment].value.string_value O ambiente do Iron Mountain do Logstash é adicionado como um par de chave-valor nos campos additional.
logstash.irm_region additional.fields[irm_region].value.string_value A região de Iron Mountain do Logstash é adicionada como um par de chave-valor nos campos additional.
logstash.irm_site additional.fields[irm_site].value.string_value O site da Iron Mountain do Logstash é adicionado como um par de chave-valor nos campos additional.
logstash.process.host intermediary.hostname O anfitrião de processamento do Logstash é usado como o nome de anfitrião intermediário.
logstash.process.timestamp metadata.collected_timestamp A data/hora de processamento do Logstash é usada como a data/hora recolhida.
logstash.xyz_environment additional.fields[xyz_environment].value.string_value O ambiente xyz do Logstash é adicionado como um par de chave-valor nos campos additional.
logstash.xyz_region additional.fields[xyz_region].value.string_value A região xyz do Logstash é adicionada como um par de chave-valor nos campos additional.
logstash.xyz_site additional.fields[xyz_site].value.string_value O site xyz do Logstash é adicionado como um par de chave-valor nos campos additional.
message metadata.description O campo de mensagem é analisado como JSON e o respetivo campo event_message é usado como a descrição dos metadados. A aplicação intermediária está codificada para logstash. O tipo de evento de metadados está codificado de forma rígida como USER_UNCATEGORIZED. O tipo de registo de metadados é definido como TOMCAT a partir de batch.type ou batch.log_type do registo não processado. O nome do produto de metadados está codificado como Tomcat. O nome do fornecedor de metadados está codificado como Tomcat.
user principal.user.userid O campo de utilizador do registo não processado é usado como ID do utilizador principal.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.