Recolha registos de eventos do Palo Alto Cortex XDR
Este documento explica como carregar registos de eventos do Palo Alto Cortex XDR para o Google Security Operations através do Google Cloud armazenamento. O analisador extrai dados de eventos de segurança dos registos JSON do Palo Alto Networks Cortex XDR. Normaliza os dados no modelo de dados unificado (UDM) ao mapear campos, converter tipos de dados e enriquecer eventos com metadados, como fornecedor, produto e tipos de eventos, com base na lógica condicional associada aos campos event_type
e event_sub_type
. Também processa ligações de rede, operações de ficheiros e registos, informações de processos e atividade do utilizador.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Google Cloud O armazenamento está configurado e ativo no seu Google Cloud ambiente
- Acesso privilegiado a Google Cloud e autorizações adequadas
- Acesso privilegiado ao Palo Alto Cortex XDR
Crie um Google Cloud contentor de armazenamento
- Inicie sessão na Google Cloud consola.
Aceda à página Contentores do Cloud Storage.
Clique em Criar.
Na página Criar um depósito, introduza as informações do depósito. Após cada um dos passos seguintes, clique em Continuar para avançar para o passo seguinte:
Na secção Começar, faça o seguinte: * Introduza um nome exclusivo que cumpra os requisitos do nome do contentor (por exemplo, cortex-xdr-events-googlesecops). * Para ativar o espaço de nomes hierárquico, clique na seta de expansão para expandir a secção Otimizar para cargas de trabalho orientadas para ficheiros e com grande volume de dados e, de seguida, selecione Ativar espaço de nomes hierárquico neste contentor.
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 secção Escolha onde quer armazenar os seus dados, faça o seguinte: * Selecione um Tipo de localização. * Use o menu do tipo de localização para selecionar uma Localização onde os dados de objetos no seu contentor vão ser 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 secção Escolha uma classe de armazenamento para os seus dados, selecione uma classe de armazenamento predefinida para o contentor ou selecione Autoclass para a gestão automática da classe de armazenamento dos dados do seu contentor.
Na secçã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 controlo de acesso para os objetos do seu contentor.
Na secção Escolha como proteger os dados de objetos, faça o seguinte: * Selecione qualquer uma das opções em Proteção de dados que quer definir para o seu contentor. * Para escolher como os dados de objetos vão ser encriptados, clique na seta de expansão Encriptação de dados e selecione um Método de encriptação de dados.
Clique em Criar.
Configure o encaminhamento de eventos do Cortex XDR
- Inicie sessão na IU Web do Cortex XDR.
- Aceda a Definições > Configurações > Gestão de dados > Encaminhamento de eventos.
- Ative as licenças na secção Ativação.
- Ative o encaminhamento de eventos de GB para exportar registos analisados para o Cortex XDR Pro por GB para um SIEM externo para armazenamento.
- Ative o encaminhamento de eventos do Endpoints para exportar dados não processados de pontos finais para o Cortex XDR Pro EP e o Cloud Endpoints.
- Guarde a seleção.
- Copie o caminho de armazenamento apresentado.
- Gere e transfira o SÍMBOLO DA WEB JSON da conta de serviço, que contém a chave de acesso.
- Guarde-o num local seguro.
Configure o Google Cloud Secret Manager
- Inicie sessão no GCP.
- Aceda à página Secret Manager.
- Se for a primeira vez, é-lhe pedido que ative a API Secret Manager.
- Crie um segredo denominado EVENT_FRWD_CRTX_KEY e copie o conteúdo do JSON xdr_sa_key.json que transferiu como o valor do segredo.
Configure feeds
Para configurar um feed, siga estes passos:
- Aceda a Definições do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na página seguinte, clique em Configurar um único feed.
- No campo Nome do feed, introduza um nome para o feed (por exemplo, Registos de eventos do PANW Cortex XDR).
- Selecione Google Cloud Storage V2 como Tipo de origem.
- Selecione Eventos do Palo Alto Cortex XDR como Tipo de registo.
- Clique em Obter conta de serviço como a conta de serviço do Chronicle.
- Clicar em Seguinte.
Especifique valores para os seguintes parâmetros de entrada:
- URI do contentor de armazenamento: Google Cloud URL do contentor de armazenamento (por exemplo,
gs://cortex-xdr-events-chronicle
). - Opções de eliminação da origem: selecione uma opção de eliminação de acordo com a sua preferência.
- URI do contentor de armazenamento: Google Cloud URL do contentor de armazenamento (por exemplo,
Clicar em Seguinte.
Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Depois de criar o feed, encontre-o na lista Feeds e clique nos três pontos de ação no lado direito da linha.
Selecione Desativar feed.
Configure o acesso JSON secreto ao Cloud Storage
- Inicie sessão no GCP.
- Aceda à página Secret Manager.
- Selecione a chave secreta EVENT_FRWD_CRTX_KEY.
- Aceda ao separador Autorizações.
- Conceda o acesso Storage Object Admin e Storage Legacy Bucket Reader ao contentor cortex-xdr-events-chronicle criado anteriormente.
Configure as autorizações do Google SecOps para o Cloud Storage
- Aceda a IAM e administrador > IAM.
- Localize a conta de serviço do Chronicle.
- Conceda o acesso Storage Object Viewer (roles/storage.objectViewer) ao contentor cortex-xdr-events-chronicle criado anteriormente.
Configure o carregamento de registos de eventos do PANW Cortex XDR para o Project Cloud Storage
- Em Google Cloud, aceda a APIs e serviços > Biblioteca.
- Ative as APIs Cloud Run e Artifact Registry.
- Abra o Cloud Shell clicando no ícone na barra de navegação superior.
Transfira um código personalizado através do seguinte comando:
git clone https://github.com/PaloAltoNetworks/google-cloud-cortex-chronicle.git
Aceda ao diretório executando o seguinte comando:
cd google-cloud-cortex-chronicle/
Abra o ficheiro
env.properties
com um editor como ovi
.Faculte 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
Conceda as autorizaçõ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 Cloud Job a autorização Secret Manager Secret Ancestor para aceder ao segredo que criou anteriormente (como no nosso exemplo, EVENT_FRWD_CRTX_KEY).
Aceda a Secret Manager > EVENT_FRWD_CRTX_KEY (segredo) > Autorizações.
Na plataforma Google SecOps, aceda a Definições do SIEM > Feeds > Nome do feed de eventos XDR > Ativar feed.
Tabela de mapeamento do UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
action_file_path |
target.file.full_path |
Mapeamento direto |
action_file_size |
target.file.size |
Mapeado diretamente e convertido em número inteiro não assinado |
action_local_ip |
principal.ip |
Mapeado e unido diretamente 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 |
Mapeamento direto |
action_network_connection_id |
network.session_id |
Mapeamento direto |
action_network_protocol |
network.ip_protocol |
Nome mudado para protocol_number_src , analisado com parse_ip_protocol.include e mapeado para network.ip_protocol |
action_process_image_command_line |
target.process.command_line |
Mapeamento direto |
action_process_image_md5 |
target.process.file.md5 |
Mapeamento direto |
action_process_image_path |
target.process.file.full_path |
Mapeamento direto |
action_process_image_sha256 |
target.process.file.sha256 |
Mapeamento direto |
action_process_os_pid |
target.process.pid |
Mapeado diretamente e convertido em string |
action_process_user_sid |
target.user.windows_sid |
Mapeamento direto |
action_process_username |
target.user.userid , target.administrative_domain |
Convertido em minúsculas, analisado para o domínio e o utilizador, e mapeado em conformidade |
action_registry_data |
target.registry.registry_value_data |
Mapeamento direto |
action_registry_key_name |
target.registry.registry_key |
Mapeamento direto |
action_registry_value_name |
target.registry.registry_value_name |
Mapeamento direto |
action_remote_ip |
target.ip |
Mapeado e unido diretamente 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 não assinado |
action_total_upload |
network.sent_bytes |
Mapeado diretamente e convertido em número inteiro não assinado |
agent_hostname |
principal.hostname , observer.hostname |
Convertido para minúsculas e mapeado |
agent_ip_addresses |
observer.ip |
Analisado como JSON, dividido em IPs individuais e unido |
agent_os_sub_type |
target.platform_version |
Mapeamento direto |
event_id |
metadata.product_log_id |
Mapeamento direto |
event_sub_type |
metadata.product_event_type |
Convertido em string e usado para o mapeamento condicional de metadata.event_type e metadata.product_event_type |
event_timestamp |
metadata.event_timestamp , timestamp |
Convertido em string, analisado como indicação de tempo UNIX_MS e mapeado |
event_type |
metadata.event_type |
Convertido em string e usado para o mapeamento condicional de metadata.event_type e metadata.product_event_type |
os_actor_process_command_line |
principal.process.command_line |
Mapeamento direto |
os_actor_process_image_md5 |
principal.process.file.md5 |
Mapeamento direto |
os_actor_process_image_path |
principal.process.file.full_path |
Mapeamento direto |
os_actor_process_image_sha256 |
principal.process.file.sha256 |
Mapeamento direto |
os_actor_process_instance_id |
principal.process.product_specific_process_id |
Com o prefixo "PAN:" e mapeado |
os_actor_process_os_pid |
principal.process.pid |
Convertido em string e mapeado |
os_actor_primary_user_sid |
principal.user.windows_sid |
Mapeado se começar por "S-" ou "s-" |
os_actor_primary_username |
principal.user.userid , principal.administrative_domain |
Convertido em minúsculas, analisado para o domínio e o utilizador, e mapeado em conformidade |
_action |
security_result.action |
Unido a _security_result e, em seguida, mapeado |
metadata.log_type |
metadata.log_type |
Codificado de forma rígida como "PAN_CORTEX_XDR_EVENTS" |
metadata.product_name |
metadata.product_name |
Codificado de forma rígida para "Cortex XDR" |
metadata.vendor_name |
metadata.vendor_name |
Codificado como "PAN" |
target.platform |
target.platform |
Definido como "WINDOWS" se agent_os_sub_type contiver "Windows" |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.