Coletar registros do Apache Tomcat

Compatível com:

Neste documento, explicamos como ingerir registros do Apache Tomcat no Google Security Operations usando o Bindplane. O analisador extrai campos de registros formatados em JSON, transformando-os no modelo de dados unificado (UDM). Ele inicializa valores padrão, analisa o payload JSON, processa possíveis erros de análise JSON e mapeia vários campos do registro bruto para os campos UDM correspondentes, incluindo metadados, principal, observador e informações de resultado de segurança, além de adicionar rótulos personalizados para o contexto do ambiente.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Instância do Google SecOps
  • Um host Windows 2016 ou mais recente ou Linux com systemd
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • Apache Tomcat versão 9.0.70 ou mais recente
  • Acesso de gravação a $CATALINA_BASE/conf e $CATALINA_BASE/logs

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.

Receber o ID do cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instale o agente do Bindplane no servidor Tomcat para coletar arquivos de registro

Instale o agente do Bindplane no sistema operacional Windows ou Linux de acordo com as instruções a seguir.

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este 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 root ou sudo.
  2. Execute este comando:

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

Outros recursos de instalação

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

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:
    • Localize o arquivo config.yaml. Normalmente, ele está no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    • Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo 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 mudanças

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

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar registros de acesso JSON no Tomcat

  1. Abra o arquivo do Tomcat em $CATALINA_BASE/conf/server.xml.
  2. Localize a tag <Host> e adicione o seguinte dentro dela:

    <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 mudanças:

    cd /path/to/tomcat
    bin/catalina.sh stop
    bin/catalina.sh start
    
  4. Um novo arquivo de registro JSON vai aparecer diariamente (por exemplo, logs/access-log.2025-07-02.json).

Tabela de mapeamento da UDM

Campo de registro Mapeamento do UDM Lógica
@timestamp metadata.event_timestamp O valor de @timestamp do registro bruto é mapeado diretamente para esse campo do UDM. Ele representa o horário 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 host do agente é usado como o nome do host 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 o aplicativo observador.
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 do host do host é usado como o nome principal.
host.id principal.asset.asset_id O ID do host é precedido por Host Id: para criar o ID do recurso principal.
host.ip principal.ip, observer.ip O endereço IP do host é usado para o principal e o observador. Se houver vários IPs, eles serão mesclados em uma matriz.
host.mac principal.mac O endereço MAC do host é usado como o principal. Se houver vários MACs, eles serão mesclados em uma matriz.
host.os.family principal.platform Se a família do SO host for rhel ou redhat, a plataforma principal será definida como LINUX.
host.os.kernel principal.platform_patch_level A versão do kernel do SO host é usada como o nível principal de patch da plataforma.
host.os.name additional.fields[os_name].value.string_value O nome do SO do host é adicionado como um par de chave-valor nos campos additional.
host.os.version principal.platform_version A versão do SO do host é usada como a versão principal da plataforma.
log.file.path principal.process.file.full_path O caminho do registro é usado como o caminho completo do arquivo do processo principal.
log_level security_result.severity, security_result.severity_details, security_result.action O nível de registro é usado para determinar a gravidade, os detalhes e a ação do resultado de segurança. DEBUG, INFO e AUDIT são mapeados para a gravidade INFORMATIONAL e a ação ALLOW. ERROR é mapeado para a gravidade ERROR e a ação BLOCK. WARNING e WARN correspondem à gravidade MÉDIA e à ação BLOCK. O valor bruto de "log_level" também é mapeado para "severity_details".
logstash.irm_environment additional.fields[irm_environment].value.string_value O ambiente da 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 "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 host de processamento do Logstash é usado como o nome do host intermediário.
logstash.process.timestamp metadata.collected_timestamp O carimbo de data/hora de processamento do Logstash é usado como o carimbo de data/hora coletado.
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 campo event_message é usado como a descrição dos metadados. O aplicativo intermediário está fixado no código como logstash. O tipo de evento de metadados está fixado no código como USER_UNCATEGORIZED. O tipo de registro de metadados é definido como TOMCAT do batch.type ou batch.log_type do registro bruto. O nome do produto de metadados está fixado no código como Tomcat. O nome do fornecedor de metadados está fixado em Tomcat.
user principal.user.userid O campo de usuário do registro bruto é usado como o ID principal do usuário.

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