Coletar registros do Palo Alto Networks Traps
Este documento explica como coletar registros do Palo Alto Networks Traps no Google Security Operations usando o Bindplane. O analisador processa registros nos formatos CSV e chave-valor, transformando-os em UDM. Ele usa a análise de grok e CSV para extrair campos, executa lógica condicional com base em mensagens de registro ou valores de campo específicos para mapear para campos de UDM e lida com vários tipos de eventos, como atualizações de status, verificações de rede e criações de processos.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Use o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd. - Se estiver executando atrás de um proxy, verifique se as portas do firewall estão abertas.
- Verifique se você tem acesso privilegiado ao Cortex XDR.
Receber credenciais do Google SecOps para o agente do Bindplane
Para autenticar o agente do Bindplane no Google SecOps, escolha um dos seguintes métodos:
- Novas implantações: use a API Chronicle (opção 1).
- Implantações legadas: continue usando o arquivo de autenticação de ingestão (opção 2) até que a API Ingestion seja desativada em 20 de julho de 2027.
Opção 1: criar uma conta de serviço para a API Chronicle (recomendado)
- Faça login no console doGoogle Cloud e selecione o projeto do Google Cloud vinculado à sua instância do Google SecOps.
- Acesse IAM e administrador > Contas de serviço.
- Clique em Criar conta de serviço.
- Informe os seguintes detalhes de configuração:
- Nome da conta de serviço: insira um nome para a conta (por exemplo,
bindplane-ingest). - Descrição da conta de serviço: insira uma descrição (por exemplo,
Bindplane agent log ingestion).
- Nome da conta de serviço: insira um nome para a conta (por exemplo,
- Clique em Criar e continuar.
- Na seção Conceder a essa conta de serviço acesso ao projeto, clique em Selecionar um papel e escolha Editor do Chronicle.
- Clique em Continuar e depois em Concluído.
- Clique na conta de serviço que você criou e acesse a guia Chaves.
- Clique em Adicionar chave > Criar nova chave.
- Selecione JSON e clique em Criar. O download do arquivo de chave é feito no seu computador.
- Salve o arquivo de chave como
ingestion-auth.jsonno diretório do coletor do BindPlane (/opt/observiq-otel-collector/ingestion-auth.jsonno Linux ouC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonno Windows) ou atualizecreds_file_pathemconfig.yamlpara corresponder ao caminho em que você o salvou. - Acesse IAM e administrador > Configurações e copie o Número do projeto. Você vai precisar dele para a configuração do exportador.
Opção 2: fazer o download do arquivo de autenticação de ingestão (legado)
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Faça o download do arquivo de autenticação de ingestão.
- Salve o arquivo com segurança no sistema em que o agente do Bindplane será instalado.
Receber o ID de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID de cliente na seção Detalhes da organização.
Instalar o agente do Bindplane
Instalação do Windows
- Abra o prompt de comando ou o PowerShell como administrador.
Execute este 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 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 este guia de instalação.
Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml. Normalmente, ele fica no diretório/opt/observiq-otel-collector/no Linux ou no diretório de instalação no Windows. - Abra o arquivo usando um editor de texto (por exemplo,
nano,viou Bloco de Notas).
- Localize o arquivo
Edite o arquivo
config.yamlda seguinte forma:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: chronicle.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: PAN_EDR raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsSubstitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<LOCATION>pela região da sua instância do Google SecOps (por exemplo,us,europeouasia-southeast1). O exportador prefixachronicle.googleapis.comcom esse valor.Substitua
<PROJECT_NUMBER>pelo número do projeto em IAM e administrador > Configurações.Substitua
<customer_id>pelo ID do cliente real.Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho em que o arquivo de chave da conta de serviço (opção 1) foi salvo na seção Receber credenciais do Google SecOps para o agente do Bindplane.
Exportador da API de ingestão legada
Se você usar o arquivo de autenticação de ingestão da opção 2, substitua o bloco
exporterspelo seguinte. Definacredscomo o caminho para o arquivo de autenticação de ingestão e, se a instância estiver fora dos EUA, substituamalachiteingestion-pa.googleapis.compelo endpoint regional (por exemplo,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/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 ingestion_labels: log_type: PAN_EDR raw_log_field: body
Reinicie o agente do Bindplane para aplicar as mudanças.
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agentPara reiniciar o agente do Bindplane no Windows, use o console Serviços ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Palo Alto Networks Traps
- Faça login no console do Cortex XDR ESM.
- Selecione Configurações > ESM > Syslog.
- Marque a caixa de seleção Ativar syslog.
- Informe os seguintes detalhes de configuração:
- Servidor Syslog: insira o endereço IP do agente do BindPlane.
- Porta do Syslog: insira o número da porta configurado no Bindplane, por exemplo,
514. - Protocolo Syslog: selecione CEF.
- Defina o Tempo limite do sinal de atividade como 0.
- Protocolo de comunicação: selecione UDP.
- Na seção Ocorrências de segurança, marque as seguintes caixas de seleção:
- Evento de prevenção
- Evento de notificação
- Evento pós-detecção
- Clique em Verificar conectividade > Salvar.
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento de UDM | Lógica |
|---|---|---|
agentId |
event.idm.read_only_udm.additional.fields.value.string_value |
O valor de agentId do registro bruto é mapeado para o campo string_value em uma estrutura aninhada em additional.fields. O key desse campo está definido como Agent ID. |
agentIp |
event.idm.read_only_udm.target.ip |
O valor de agentIp do registro bruto é mapeado para o campo target.ip. |
cat |
event.idm.read_only_udm.security_result.rule_name |
O valor de cat do registro bruto é mapeado para o campo security_result.rule_name. |
class |
event.idm.read_only_udm.security_result.category_details |
Usado em conjunto com subClass para preencher security_result.category_details com o formato class: subClass. |
cs1 |
event.idm.read_only_udm.principal.application, event.idm.read_only_udm.principal.user.email_addresses |
Se cs1Label for email e cs1 for um endereço de e-mail válido, ele será mapeado para principal.user.email_addresses. Se cs1Label for Initiated by, ele será mapeado para principal.application. |
cs2 |
event.idm.read_only_udm.principal.process.command_line, event.idm.read_only_udm.security_result.description |
Se cs2Label for subtype, ele será mapeado para security_result.description. Se cs2Label for Initiator CMD, ele será mapeado para principal.process.command_line. |
cs3 |
event.idm.read_only_udm.security_result.action_details |
Se cs3Label for result, ele será mapeado para security_result.action_details. |
customerId |
event.idm.read_only_udm.additional.fields.value.string_value |
O valor de customerId do registro bruto é mapeado para o campo string_value em uma estrutura aninhada em additional.fields. O key desse campo está definido como Customer ID. |
date_time |
event.idm.read_only_udm.metadata.event_timestamp.seconds |
Analisado e convertido em um carimbo de data/hora, depois mapeado para metadata.event_timestamp.seconds. |
desc |
event.idm.read_only_udm.metadata.description |
O valor de desc do registro bruto é mapeado para o campo metadata.description. |
deviceName |
event.idm.read_only_udm.target.hostname |
O valor de deviceName do registro bruto é mapeado para o campo target.hostname. |
email_receiver |
event.idm.read_only_udm.network.email.to |
Extraído do campo msg se ele contiver um endereço de e-mail e mapeado para network.email.to. |
endpoint_desc |
event.idm.read_only_udm.target.resource.attribute.labels.value |
Derivado de isEndpoint: Yes, host is an endpoint. se isEndpoint for 1, No, host is not an endpoint se isEndpoint for 0. O key é definido como Is Endpoint. |
eventType |
event.idm.read_only_udm.metadata.product_event_type, event.idm.read_only_udm.metadata.event_type |
O valor de eventType do registro bruto é mapeado para o campo metadata.product_event_type. Também é usado para derivar metadata.event_type com base no valor (por exemplo, Management Audit Logs resulta em EMAIL_TRANSACTION, XDR Analytics BIOC ou Behavioral Threat resulta em SCAN_NETWORK). |
facility |
event.idm.read_only_udm.additional.fields.value.string_value |
O valor de facility do registro bruto é mapeado para o campo string_value em uma estrutura aninhada em additional.fields. O key desse campo está definido como Facility. |
fileHash |
event.idm.read_only_udm.principal.process.file.sha256 |
O valor de fileHash do registro bruto, convertido em letras minúsculas, é mapeado para o campo principal.process.file.sha256. |
filePath |
event.idm.read_only_udm.principal.process.file.full_path |
O valor de filePath do registro bruto é mapeado para o campo principal.process.file.full_path. |
friendlyName |
event.idm.read_only_udm.metadata.description |
O valor de friendlyName do registro bruto é mapeado para o campo metadata.description. |
interm_ip |
event.idm.read_only_udm.intermediary.ip |
O valor de interm_ip do registro bruto é mapeado para o campo intermediary.ip. |
isEndpoint |
event.idm.read_only_udm.target.resource.attribute.labels.value |
Usado para derivar target.resource.attribute.labels.value. |
isVdi |
event.idm.read_only_udm.target.resource.resource_type |
Se isVdi for 1, target.resource.resource_type será definido como VIRTUAL_MACHINE. |
msg |
event.idm.read_only_udm.security_result.summary |
O valor de msg do registro bruto é mapeado para o campo security_result.summary. Também usado para extrair email_receiver. |
msgTextEn |
event.idm.read_only_udm.security_result.description |
O valor de msgTextEn do registro bruto é mapeado para o campo security_result.description. |
osType |
event.idm.read_only_udm.target.platform, event.idm.read_only_udm.target.resource.attribute.labels.value |
Se osType for 1, target.platform será definido como WINDOWS. Se osType for 2, target.platform será definido como MAC. Se osType for 4, target.platform será definido como LINUX. Se osType for 3, o valor será mapeado para target.resource.attribute.labels.value com o OS key. |
osVersion |
event.idm.read_only_udm.target.platform_version |
O valor de osVersion do registro bruto é mapeado para o campo target.platform_version. |
product_version |
event.idm.read_only_udm.metadata.product_version |
O valor de product_version do registro bruto é mapeado para o campo metadata.product_version. |
proto |
event.idm.read_only_udm.network.ip_protocol |
Se proto for udp, network.ip_protocol será definido como UDP. |
recordType |
event.idm.read_only_udm.additional.fields.value.string_value |
O valor de recordType do registro bruto é mapeado para o campo string_value em uma estrutura aninhada em additional.fields. O key desse campo está definido como Record Type. |
regionId |
event.idm.read_only_udm.principal.location.country_or_region |
Se regionId for 10, principal.location.country_or_region será definido como Americas (N. Virginia). Se regionId for 70, principal.location.country_or_region será definido como EMEA (Frankfurt). |
request |
event.idm.read_only_udm.target.url |
O valor de request do registro bruto é mapeado para o campo target.url. |
sec_category_details |
event.idm.read_only_udm.security_result.category_details |
O valor de sec_category_details do registro bruto é mapeado para o campo security_result.category_details. |
sec_desc |
event.idm.read_only_udm.security_result.description |
O valor de sec_desc do registro bruto é mapeado para o campo security_result.description. |
serverHost |
event.idm.read_only_udm.principal.hostname |
O valor de serverHost do registro bruto é mapeado para o campo principal.hostname. |
severity |
event.idm.read_only_udm.security_result.severity |
Mapeado para security_result.severity com a seguinte lógica: 2 -> CRITICAL, 3 -> ERROR, 4 -> MEDIUM, 5 -> LOW, 6 -> INFORMATIONAL. |
severity_val |
event.idm.read_only_udm.security_result.severity, event.idm.read_only_udm.security_result.severity_details |
Se severity_val for 0, security_result.severity_details será definido como UNKNOWN_SEVERITY. Caso contrário, ele será mapeado para security_result.severity com a seguinte lógica: 6 -> LOW, 8 -> MEDIUM, 9 -> HIGH. |
shost |
event.idm.read_only_udm.principal.hostname |
O valor de shost do registro bruto é mapeado para o campo principal.hostname. |
src_ip |
event.idm.read_only_udm.principal.ip |
O valor de src_ip do registro bruto é mapeado para o campo principal.ip. |
subClass |
event.idm.read_only_udm.security_result.category_details |
Usado em conjunto com class para preencher security_result.category_details. |
suser |
event.idm.read_only_udm.principal.user.user_display_name |
O valor de suser do registro bruto, com colchetes, barras invertidas e aspas simples removidas, é mapeado para o campo principal.user.user_display_name. |
targetprocesscmd |
event.idm.read_only_udm.target.process.command_line |
O valor de targetprocesscmd do registro bruto é mapeado para o campo target.process.command_line. |
targetprocessname |
event.idm.read_only_udm.target.application |
O valor de targetprocessname do registro bruto é mapeado para o campo target.application. |
targetprocesssha256 |
event.idm.read_only_udm.target.process.file.sha256 |
O valor de targetprocesssha256 do registro bruto, convertido em letras minúsculas, é mapeado para o campo target.process.file.sha256. |
tenantname |
event.idm.read_only_udm.target.resource.attribute.labels.value |
O valor de tenantname do registro bruto é mapeado para o campo value em uma estrutura aninhada em target.resource.attribute.labels. O key desse campo está definido como Tenant name. |
event.idm.read_only_udm.metadata.event_type |
Definido como STATUS_UPDATE por padrão. Mudou para EMAIL_TRANSACTION se eventType for Management Audit Logs. Mudou para SCAN_NETWORK se eventType for XDR Analytics BIOC ou Behavioral Threat ou se desc for Behavioral Threat. Mudou para SCAN_PROCESS se desc for Suspicious Process Creation. Defina como Palo Alto Networks. Defina como Cortex XDR. Defina como PAN_EDR. Defina como NETWORK_SUSPICIOUS se eventType for XDR Analytics BIOC ou Behavioral Threat, ou se desc for Behavioral Threat. |
Registro de alterações
Confira o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.