Recolha registos do Palo Alto Networks Traps
Este documento explica como recolher registos do Palo Alto Networks Traps para o Google Security Operations através do Bindplane. O analisador processa registos nos formatos CSV e de chave/valor, transformando-os em UDM. Usa a análise grok e CSV para extrair campos, executa lógica condicional com base em mensagens de registo ou valores de campos específicos para mapear para campos UDM e processa vários tipos de eventos, como atualizações de estado, análises de rede e criações de processos.
Antes de começar
- Certifique-se de que tem uma instância do Google Security Operations.
- Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
. - Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.
- Certifique-se de que tem acesso privilegiado ao Cortex XDR.
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 do Bindplane
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 este 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: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" 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 service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
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.
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 do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Palo Alto Networks Traps
- Inicie sessão na consola Cortex XDR ESM.
- Selecione Definições > ESM > Syslog.
- Selecione a caixa de verificação Ativar syslog.
- Indique os seguintes detalhes de configuração:
- Servidor Syslog: introduza o endereço IP do agente Bindplane.
- Porta Syslog: introduza o número da porta configurado no Bindplane; por exemplo,
514
. - Protocolo Syslog: selecione CEF.
- Defina o tempo limite de manutenção ativo como 0.
- Protocolo de comunicação: selecione UDP.
- Na secção Eventos de segurança, selecione as seguintes caixas de verificação:
- Evento de prevenção
- Evento de notificação
- Evento de deteção de publicações
- Clique em Verificar conetividade > Guardar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
agentId |
event.idm.read_only_udm.additional.fields.value.string_value |
O valor de agentId do registo não processado é mapeado para o campo string_value numa estrutura aninhada em additional.fields . O key para este campo está definido como Agent ID . |
agentIp |
event.idm.read_only_udm.target.ip |
O valor de agentIp do registo não processado é mapeado para o campo target.ip . |
cat |
event.idm.read_only_udm.security_result.rule_name |
O valor de cat do registo não processado é 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 email válido, é mapeado para principal.user.email_addresses . Se cs1Label for Initiated by , é 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 , é mapeado para security_result.description . Se cs2Label for Initiator CMD , é mapeado para principal.process.command_line . |
cs3 |
event.idm.read_only_udm.security_result.action_details |
Se cs3Label for result , é mapeado para security_result.action_details . |
customerId |
event.idm.read_only_udm.additional.fields.value.string_value |
O valor de customerId do registo não processado é mapeado para o campo string_value numa estrutura aninhada em additional.fields . O key para este campo está definido como Customer ID . |
date_time |
event.idm.read_only_udm.metadata.event_timestamp.seconds |
Analisado e convertido numa indicação de tempo e, em seguida, mapeado para metadata.event_timestamp.seconds . |
desc |
event.idm.read_only_udm.metadata.description |
O valor de desc do registo não processado é mapeado para o campo metadata.description . |
deviceName |
event.idm.read_only_udm.target.hostname |
O valor de deviceName do registo não processado é mapeado para o campo target.hostname . |
email_receiver |
event.idm.read_only_udm.network.email.to |
Extraído do campo msg se contiver um endereço de email 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 está 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 registo não processado é mapeado para o campo metadata.product_event_type . Também é usado para derivar metadata.event_type com base no respetivo 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 registo não processado é mapeado para o campo string_value numa estrutura aninhada em additional.fields . O key para este campo está definido como Facility . |
fileHash |
event.idm.read_only_udm.principal.process.file.sha256 |
O valor de fileHash do registo não processado, 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 registo não processado é mapeado para o campo principal.process.file.full_path . |
friendlyName |
event.idm.read_only_udm.metadata.description |
O valor de friendlyName do registo não processado é mapeado para o campo metadata.description . |
interm_ip |
event.idm.read_only_udm.intermediary.ip |
O valor de interm_ip do registo não processado é 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 é definido como VIRTUAL_MACHINE . |
msg |
event.idm.read_only_udm.security_result.summary |
O valor de msg do registo não processado é 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 registo não processado é 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 é definido como WINDOWS . Se osType for 2, target.platform é definido como MAC . Se osType for 4, target.platform é definido como LINUX . Se osType for 3, o respetivo valor é mapeado para target.resource.attribute.labels.value com o key OS . |
osVersion |
event.idm.read_only_udm.target.platform_version |
O valor de osVersion do registo não processado é mapeado para o campo target.platform_version . |
product_version |
event.idm.read_only_udm.metadata.product_version |
O valor de product_version do registo não processado é mapeado para o campo metadata.product_version . |
proto |
event.idm.read_only_udm.network.ip_protocol |
Se proto for udp , network.ip_protocol é definido como UDP . |
recordType |
event.idm.read_only_udm.additional.fields.value.string_value |
O valor de recordType do registo não processado é mapeado para o campo string_value numa estrutura aninhada em additional.fields . O key para este 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 é definido como Americas (N. Virginia) . Se regionId for 70, principal.location.country_or_region é definido como EMEA (Frankfurt) . |
request |
event.idm.read_only_udm.target.url |
O valor de request do registo não processado é 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 registo não processado é mapeado para o campo security_result.category_details . |
sec_desc |
event.idm.read_only_udm.security_result.description |
O valor de sec_desc do registo não processado é mapeado para o campo security_result.description . |
serverHost |
event.idm.read_only_udm.principal.hostname |
O valor de serverHost do registo não processado é 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 -> CRÍTICO, 3 -> ERRO, 4 -> MÉDIO, 5 -> BAIXO, 6 -> INFORMATIVO. |
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 é definido como UNKNOWN_SEVERITY . Caso contrário, é 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 registo não processado é mapeado para o campo principal.hostname . |
src_ip |
event.idm.read_only_udm.principal.ip |
O valor de src_ip do registo não processado é 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 registo não processado, com parênteses, 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 registo não processado é mapeado para o campo target.process.command_line . |
targetprocessname |
event.idm.read_only_udm.target.application |
O valor de targetprocessname do registo não processado é mapeado para o campo target.application . |
targetprocesssha256 |
event.idm.read_only_udm.target.process.file.sha256 |
O valor de targetprocesssha256 do registo não processado, 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 registo não processado é mapeado para o campo value numa estrutura aninhada em target.resource.attribute.labels . O key para este campo está definido como Tenant name . |
event.idm.read_only_udm.metadata.event_type |
Predefinido como STATUS_UPDATE . Alterado para EMAIL_TRANSACTION se eventType for Management Audit Logs . Alterado para SCAN_NETWORK se eventType for XDR Analytics BIOC ou Behavioral Threat , ou se desc for Behavioral Threat . Alterado para SCAN_PROCESS se desc for Suspicious Process Creation . Definido como Palo Alto Networks . Definido como Cortex XDR . Definido como PAN_EDR . Defina como NETWORK_SUSPICIOUS se eventType for XDR Analytics BIOC ou Behavioral Threat , ou se desc for Behavioral Threat . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.