Coletar registros de eventos do Palo Alto Cortex XDR
Este documento explica como transferir os registros de eventos do Palo Alto Cortex XDR para as Operações de segurança do Google usando o Google Cloud Storage. O analisador extrai
dados de ocorrência de segurança dos registros JSON do Cortex XDR da Palo Alto Networks. Ele normaliza os dados no modelo de dados unificado (UDM, na sigla em inglês) mapeando campos, convertendo tipos de dados e enriquecendo eventos com metadados, como fornecedor, produto e tipos de evento com base na lógica condicional vinculada aos campos event_type
e event_sub_type
. Ele
também processa conexões de rede, operações de arquivos e registros, informações
de processos e atividades do usuário.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Instância do Google SecOps
- OGoogle Cloud Armazenamento está configurado e ativo no Google Cloud ambiente
- Acesso privilegiado a Google Cloud e permissões adequadas
- Acesso privilegiado ao Palo Alto Cortex XDR
Crie um bucket do Google Cloud Storage
- Faça login no console do Google Cloud .
Acesse a página Buckets do Cloud Storage.
Clique em Criar.
Na página Criar um bucket, insira as informações do seu bucket. Após cada uma das etapas a seguir, clique em Continuar para prosseguir para a próxima:
Na seção Começar, faça o seguinte: * Insira um nome exclusivo que atenda aos requisitos de nome de bucket (por exemplo, cortex-xdr-events-googlesecops). * Para ativar o namespace hierárquico, clique na seta de expansão para abrir a seção Otimizar para cargas de trabalho orientadas a arquivos e com uso intensivo de dados e selecione Ativar namespace hierárquico neste bucket.
Note: You can't enable hierarchical namespace in an existing bucket. * To add a bucket label, click the expander arrow to expand the **Labels** section. * Click **Add label** and specify a key and a value for your label.
Na seção Escolha onde armazenar seus dados, faça o seguinte: * Selecione um Tipo de local. * Use o menu do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.
Note: If you select the **dual-region** location type, you can also choose to enable **turbo replication** by selecting the relevant checkbox. * To set up cross-bucket replication, expand the **Set up cross-bucket replication** section.
Na seção Escolha uma classe de armazenamento para seus dados, selecione uma classe de armazenamento padrão para o bucket ou selecione Classe automática para gerenciamento automático da classe de armazenamento dos dados do bucket.
Na seção Escolha como controlar o acesso a objetos, selecione não para aplicar a prevenção de acesso público e selecione um modelo de controle de acesso para os objetos do bucket.
Na seção Escolha como proteger os dados do objeto, faça o seguinte: * Selecione qualquer uma das opções em Proteção de dados que você quer definir para o bucket. * Para escolher como os dados do objeto serão criptografados, clique na seta de expansão Criptografia de dados e selecione um método de criptografia de dados.
Clique em Criar.
Configurar o encaminhamento de eventos do Cortex XDR
- Faça login na UI da Web do Cortex XDR.
- Acesse Configurações > Configurações > Gerenciamento de dados > Encaminhamento de eventos.
- Ative as licenças na seção Ativação.
- Ative o Encaminhamento de eventos do GB para exportar os registros analisados do Cortex XDR Pro por GB para um SIEM externo para armazenamento.
- Ative o Encaminhamento de eventos de endpoints para exportar dados de endpoints brutos para o Cortex XDR Pro EP e o Cloud Endpoints.
- Salve a seleção.
- Copie o caminho de armazenamento exibido.
- Gerencie e faça o download do token da Web JSON da conta de serviço, que contém a chave de acesso.
- Salve em um local seguro.
Configurar Google Cloud o Secret Manager
- Faça login no GCP.
- Acesse a página Secret Manager.
- Se for a primeira vez, você vai precisar ativar a API Secret Manager.
- Crie um secret chamado EVENT_FRWD_CRTX_KEY e copie o conteúdo do JSON xdr_sa_key.json que você fez o download como o valor do secret.
Configurar um feed no Google SecOps para processar registros de eventos do Palo Alto Cortex XDR
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed (por exemplo, PANW Cortex XDR Event Logs).
- Selecione Google Cloud Storage como o Tipo de origem.
- Selecione Eventos do Palo Alto Cortex XDR como o Tipo de registro.
- Clique em Pegar conta de serviço como a Conta de serviço do Chronicle.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- URI do bucket do Storage:URL do bucket do Google Cloud storage (por exemplo,
gs://cortex-xdr-events-chronicle
). - URI Is A: selecione Directory which includes subdirectories.
- Opções de exclusão de origem: selecione uma opção de exclusão de acordo com sua preferência.
- Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
- URI do bucket do Storage:URL do bucket do Google Cloud storage (por exemplo,
Clique em Próxima.
Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Depois que o feed for criado, encontre-o na lista Feeds e clique nos três pontos de ação à direita da linha.
Selecione Desativar o feed.
Configurar o acesso JSON secreto ao Cloud Storage
- Faça login no GCP.
- Acesse a página Secret Manager.
- Selecione o secret EVENT_FRWD_CRTX_KEY.
- Acesse a guia Permissões.
- Forneça ao Administrador de objetos do Storage e ao Leitor de bucket legado do Storage acesso ao bucket cortex-xdr-events-chronicle criado anteriormente.
Configurar as permissões do Google SecOps para o Cloud Storage
- Acesse IAM e administrador > IAM.
- Localize a conta de serviço do Chronicle.
- Conceda ao Leitor de objetos do Storage (roles/storage.objectViewer) acesso ao bucket cortex-xdr-events-chronicle criado anteriormente.
Configurar a ingestão de registros de eventos do PANW Cortex XDR no Cloud Storage do projeto
- Em Google Cloud, acesse APIs e serviços > Biblioteca.
- Ative as APIs Cloud Run e Artifact Registry.
- Para abrir o Cloud Shell, clique no ícone na barra de navegação na parte de cima.
Faça o download de um código personalizado usando o seguinte comando:
git clone https://github.com/PaloAltoNetworks/google-cloud-cortex-chronicle.git
Acesse o diretório executando o seguinte comando:
cd google-cloud-cortex-chronicle/
Abra o arquivo
env.properties
com um editor comovi
.Informe os seguintes detalhes de configuração:
REGION=us-central1 # Update according to your project region REPO_NAME=panw-chronicle IMAGE_NAME=sync_cortex_bucket GCP_PROJECT_ID=chrxxxxxxxxx # Update according to your project ID JOB_NAME=cloud-run-job-cortex-data-sync # The Cloud Job name ROJECT_NUMBER=80xxxxx9 # Update according to your project number # JOB ENV VARIABLES SRC_BUCKET=xdr-us-xxxxx-event-forwarding # Update with the Cortex XDR GCS bucket name DEST_BUCKET=cortex-xdr-events-chronicle # Update with the GCS name of the bucket you created SECRET_NAME=EVENT_FRWD_CRTX_KEY # Need to match the secret you created JOB_SCHEDULE_MINS=30
Forneça as permissões necessárias ao script
deploy.sh
:chmod 744 deploy.sh
Execute o script
deploy.sh
:./deploy.sh
Identifique a conta de serviço do Cloud Job usada na saída do script.
Conceda à conta de serviço do Job do Cloud a permissão Secret Manager Secret Ancestor para acessar o secret que você criou antes (como EVENT_FRWD_CRTX_KEY no nosso exemplo).
Acesse Secret Manager > EVENT_FRWD_CRTX_KEY (secret) > Permissões.
Na plataforma Google SecOps, acesse Configurações do SIEM > Feeds > Nome do feed de eventos XDR > Ativar feed.
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
action_file_path |
target.file.full_path |
Mapeadas diretamente |
action_file_size |
target.file.size |
Mapeado diretamente e convertido em número inteiro sem sinal |
action_local_ip |
principal.ip |
Mapeados diretamente e mesclados com outros endereços IP |
action_local_port |
principal.port |
Mapeado diretamente e convertido em número inteiro |
action_module_path |
target.process.file.full_path |
Mapeadas diretamente |
action_network_connection_id |
network.session_id |
Mapeadas diretamente |
action_network_protocol |
network.ip_protocol |
Renomeado como protocol_number_src , analisado usando parse_ip_protocol.include e mapeado como network.ip_protocol |
action_process_image_command_line |
target.process.command_line |
Mapeadas diretamente |
action_process_image_md5 |
target.process.file.md5 |
Mapeadas diretamente |
action_process_image_path |
target.process.file.full_path |
Mapeadas diretamente |
action_process_image_sha256 |
target.process.file.sha256 |
Mapeadas diretamente |
action_process_os_pid |
target.process.pid |
Mapeado diretamente e convertido em string |
action_process_user_sid |
target.user.windows_sid |
Mapeadas diretamente |
action_process_username |
target.user.userid , target.administrative_domain |
Transformado em letras minúsculas, analisado para domínio e usuário e mapeado de acordo com isso |
action_registry_data |
target.registry.registry_value_data |
Mapeadas diretamente |
action_registry_key_name |
target.registry.registry_key |
Mapeadas diretamente |
action_registry_value_name |
target.registry.registry_value_name |
Mapeadas diretamente |
action_remote_ip |
target.ip |
Mapeados diretamente e mesclados com outros endereços IP |
action_remote_port |
target.port |
Mapeado diretamente e convertido em número inteiro |
action_total_download |
network.received_bytes |
Mapeado diretamente e convertido em número inteiro sem sinal |
action_total_upload |
network.sent_bytes |
Mapeado diretamente e convertido em número inteiro sem sinal |
agent_hostname |
principal.hostname , observer.hostname |
Letras minúsculas e mapeadas |
agent_ip_addresses |
observer.ip |
Analisado como JSON, dividido em IPs individuais e mesclado |
agent_os_sub_type |
target.platform_version |
Mapeadas diretamente |
event_id |
metadata.product_log_id |
Mapeadas diretamente |
event_sub_type |
metadata.product_event_type |
Conversão em string e uso para mapeamento condicional de metadata.event_type e metadata.product_event_type |
event_timestamp |
metadata.event_timestamp , timestamp |
Convertido em string, analisado como carimbo de data/hora UNIX_MS e mapeado |
event_type |
metadata.event_type |
Conversão em string e uso para mapeamento condicional de metadata.event_type e metadata.product_event_type |
os_actor_process_command_line |
principal.process.command_line |
Mapeadas diretamente |
os_actor_process_image_md5 |
principal.process.file.md5 |
Mapeadas diretamente |
os_actor_process_image_path |
principal.process.file.full_path |
Mapeadas diretamente |
os_actor_process_image_sha256 |
principal.process.file.sha256 |
Mapeadas diretamente |
os_actor_process_instance_id |
principal.process.product_specific_process_id |
Com prefixo "PAN:" e mapeado |
os_actor_process_os_pid |
principal.process.pid |
Conversão em string e mapeamento |
os_actor_primary_user_sid |
principal.user.windows_sid |
Mapeado se começar com "S-" ou "s-" |
os_actor_primary_username |
principal.user.userid , principal.administrative_domain |
Transformado em letras minúsculas, analisado para domínio e usuário e mapeado de acordo com isso |
_action |
security_result.action |
Mesclado com _security_result e mapeado |
metadata.log_type |
metadata.log_type |
Fixado em "PAN_CORTEX_XDR_EVENTS" |
metadata.product_name |
metadata.product_name |
Fixado em "Cortex XDR" |
metadata.vendor_name |
metadata.vendor_name |
Fixado em "PAN" |
target.platform |
target.platform |
Defina como "WINDOWS" se agent_os_sub_type contiver "Windows" |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.