Recolha registos do Apache Tomcat
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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- 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
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- 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
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
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
- 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).
- Localize o ficheiro
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
- Substitua o
/path/to/tomcat/logs
. - Substitua
<customer_id>
pelo ID de cliente real. - Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
- Substitua o
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
- Abra o ficheiro do Tomcat em
$CATALINA_BASE/conf/server.xml
. 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"/>
Reinicie o Tomcat para aplicar as alterações:
cd /path/to/tomcat bin/catalina.sh stop bin/catalina.sh start
É 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.