Coletar registros do Zscaler Firewall

Compatível com:

Este documento descreve como exportar registros do firewall do Zscaler configurando um feed de operações de segurança do Google e como os campos de registro são mapeados para os campos do modelo de dados unificado (UDM, na sigla em inglês) do Google SecOps.

Para mais informações, consulte Visão geral da ingestão de dados no Google SecOps.

Uma implantação típica consiste no firewall Zscaler e no feed do webhook do Google SecOps configurado para enviar registros ao Google SecOps. Cada implantação do cliente pode ser diferente e mais complexa.

A implantação contém os seguintes componentes:

  • Firewall do Zscaler: a plataforma de onde você coleta registros.

  • Feed do Google SecOps: o feed do Google SecOps que busca logs do Zscaler Firewall e grava logs no Google SecOps.

  • Google SecOps: retém e analisa os registros.

Um rótulo de transferência identifica o analisador que normaliza os dados de registro brutos para o formato UDM estruturado. As informações neste documento se aplicam ao analisador com o rótulo de transferência ZSCALER_FIREWALL.

Antes de começar

Verifique se você tem os seguintes pré-requisitos:

  • Acesso ao console de acesso à Internet do Zscaler. Para mais informações, consulte Ajuda do ZIA para acesso seguro à Internet e ao SaaS.
  • Zscaler Firewall 2024 ou mais recente
  • Todos os sistemas na arquitetura de implantação são configurados com o fuso horário UTC.
  • A chave de API necessária para concluir a configuração do feed no Google Security Operations. Para mais informações, consulte Como configurar chaves de API.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma Google SecOps:

  • Configurações do SIEM > Feeds
  • Hub de conteúdo > Pacotes de conteúdo

Configurar feeds em Configurações do SIEM > Feeds

Para configurar vários feeds para diferentes tipos de registro nessa família de produtos, consulte Configurar feeds por produto.

Para configurar um único feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed. Por exemplo, ZScaler Firewall Logs.
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione ZScaler NGFW como o Tipo de registro.
  7. Clique em Próxima.
  8. Opcional: insira valores para os seguintes parâmetros de entrada:
    1. Delimitador de divisão: o delimitador usado para separar as linhas de registro. Deixe em branco se não for usado.
    2. Namespace do recurso: o namespace do recurso.
    3. Rótulos de ingestão: o rótulo a ser aplicado aos eventos desse feed.
  9. Clique em Próxima.
  10. Revise a configuração do novo feed e clique em Enviar.
  11. Clique em Generate Secret Key para gerar uma chave secreta para autenticar esse feed.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.

Opções avançadas

  • Nome do feed: um valor preenchido automaticamente que identifica o feed.
  • Tipo de origem: método usado para coletar registros no Google SecOps.
  • Namespace do recurso: o namespace do recurso.
  • Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
  • Clique em Próxima.
  • Revise a configuração do feed na tela Finalizar e clique em Enviar.
  • Clique em Gerar chave secreta para gerar uma chave secreta para autenticar esse feed.

Configurar o firewall do Zscaler

  1. No console do Zscaler Internet Access, clique em Administration > Nanolog Streaming Service > Cloud NSS Feeds e clique em Add Cloud NSS Feed.
  2. A janela Add Cloud NSS Feed vai aparecer. Na janela Adicionar feed de NSS do Cloud, insira os detalhes.
  3. Digite um nome para o feed no campo Nome do feed.
  4. Selecione NSS para firewall em Tipo de NSS.
  5. Selecione o status na lista Status para ativar ou desativar o feed do NSS.
  6. Mantenha o valor na lista suspensa SIEM Rate como Unlimited. Para suprimir o fluxo de saída devido a licenciamento ou outras restrições, mude o valor.
  7. Selecione Outro na lista Tipo de SIEM.
  8. Selecione Desativada na lista Autenticação OAuth 2.0.
  9. Insira um limite de tamanho para um payload de solicitação HTTP individual para a prática recomendada do SIEM em Tamanho máximo do lote. Por exemplo, 512 KB.
  10. Insira o URL HTTPS do endpoint de API Chronicle no URL da API no seguinte formato:

      https://<CHRONICLE_REGION>-chronicle.googleapis.com/v1alpha/projects/<GOOGLE_PROJECT_NUMBER>/locations/<LOCATION>/instances/<CUSTOMER_ID>/feeds/<FEED_ID>:importPushLogs
    
    • CHRONICLE_REGION: região em que a instância do Chronicle está hospedada. Por exemplo, EUA.
    • GOOGLE_PROJECT_NUMBER: número do projeto BYOP. Receba isso do C4.
    • LOCATION: região do Chronicle. Por exemplo, EUA.
    • CUSTOMER_ID: ID do cliente do Chronicle. Receber do C4.
    • FEED_ID: o ID do feed mostrado na interface do feed no novo webhook criado
    • URL da API de exemplo:
    https://us-chronicle.googleapis.com/v1alpha/projects/12345678910/locations/US/instances/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/feeds/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy:importPushLogs
    
  11. Clique em Adicionar cabeçalho HTTP e adicione cabeçalhos HTTP no seguinte formato:

    • Header 1: Chave1:X-goog-api-key e Valor1:chave de API gerada nas credenciais de API do Google Cloud BYOP.
    • Header 2: Key2:X-Webhook-Access-Key e Value2:chave secreta da API gerada em "SECRET KEY" do webhook.
  12. Selecione Registros de firewall na lista Tipos de registro.

  13. Selecione JSON na lista Tipo de saída do feed.

  14. Defina Caracter de escape do feed como , \ ".

  15. Para adicionar um novo campo ao Formato de saída do feed,selecione Personalizado na lista Tipo de saída do feed.

  16. Copie e cole o Formato de saída do feed e adicione novos campos. Confira se os nomes das chaves correspondem aos nomes dos campos.

  17. Confira a seguir o formato de saída do feed padrão:

      \{ "sourcetype" : "zscalernss-fw", "event" :\{"datetime":"%s{time}","user":"%s{elogin}","department":"%s{edepartment}","locationname":"%s{elocation}","cdport":"%d{cdport}","csport":"%d{csport}","sdport":"%d{sdport}","ssport":"%d{ssport}","csip":"%s{csip}","cdip":"%s{cdip}","ssip":"%s{ssip}","sdip":"%s{sdip}","tsip":"%s{tsip}","tunsport":"%d{tsport}","tuntype":"%s{ttype}","action":"%s{action}","dnat":"%s{dnat}","stateful":"%s{stateful}","aggregate":"%s{aggregate}","nwsvc":"%s{nwsvc}","nwapp":"%s{nwapp}","proto":"%s{ipproto}","ipcat":"%s{ipcat}","destcountry":"%s{destcountry}","avgduration":"%d{avgduration}","rulelabel":"%s{erulelabel}","inbytes":"%ld{inbytes}","outbytes":"%ld{outbytes}","duration":"%d{duration}","durationms":"%d{durationms}","numsessions":"%d{numsessions}","ipsrulelabel":"%s{ipsrulelabel}","threatcat":"%s{threatcat}","threatname":"%s{ethreatname}","deviceowner":"%s{deviceowner}","devicehostname":"%s{devicehostname}"\}\}
    
  18. Selecione o fuso horário do campo Time no arquivo de saída na lista Timezone. Por padrão, o fuso horário é definido como o da sua organização.

  19. Revise as configurações definidas.

  20. Clique em Salvar para testar a conectividade. Se a conexão for bem-sucedida, uma marca de seleção verde acompanhada da mensagem Test Connectivity Successful: OK (200) vai aparecer.

Para mais informações sobre os feeds do Google SecOps, consulte a documentação sobre feeds do Google SecOps. Para informações sobre os requisitos de cada tipo de feed, consulte Configuração de feed por tipo.

Se você tiver problemas ao criar feeds, entre em contato com o suporte do Google SecOps.

Formatos de registro do Zscaler Firewall compatíveis

O analisador de firewall do Zscaler oferece suporte a registros no formato JSON.

Exemplos de registros de firewall do Zscaler com suporte

  • JSON:

    {
      "sourcetype": "zscalernss-fw",
      "event": {
        "datetime": "Tue Apr 11 00:44:01 2023",
        "user": "abc@test.com",
        "department": "Optum%20Tech%20UHC%20Technology",
        "locationname": "Road%20Warrior",
        "cdport": "443",
        "csport": "50407",
        "sdport": "443",
        "ssport": "36223",
        "csip": "198.51.100.8",
        "cdip": "198.51.100.7",
        "ssip": "198.51.100.9",
        "sdip": "198.51.100.10",
        "tsip": "198.51.100.11",
        "tunsport": "0",
        "tuntype": "ZscalerClientConnector",
        "action": "Allow",
        "dnat": "No",
        "stateful": "Yes",
        "aggregate": "Yes",
        "nwsvc": "ZSCALER_PROXY_NW_SERVICES",
        "nwapp": "sharepoint_document",
        "proto": "TCP",
        "ipcat": "Miscellaneous or Unknown",
        "destcountry": "Other",
        "avgduration": "239296",
        "rulelabel": "Default%20Firewall%20Filtering%20Rule",
        "inbytes": "286134",
        "outbytes": "515005",
        "duration": "6461",
        "durationms": "6461000",
        "numsessions": "27",
        "ipsrulelabel": "None",
        "threatcat": "None",
        "threatname": "None",
        "deviceowner": "dummydeviceowner",
        "devicehostname": "dummyhostname"
      }
    }
    

Referência do mapeamento de campo

A tabela a seguir lista os campos de registro do tipo ZSCALER_FIREWALL e os campos correspondentes do UDM.

Log field UDM mapping Logic
intermediary.resource.resource_type If the fwd_gw_name log field value is not empty or the ofwd_gw_name log field value is not empty, then the intermediary.resource.resource_type UDM field is set to GATEWAY.
metadata.event_type If the sdport log field value is equal to 80 or the sdport log field value is equal to 443 and the csip log field value is not empty or the tsip log field value is not empty or the ssip log field value is not empty and the cdip log field value is not empty or the sdip log field value is not empty, then the metadata.event_type UDM field is set to NETWORK_HTTP.

Else, if the csip log field value is not empty or the tsip log field value is not empty or the ssip log field value is not empty and the cdip log field value is not empty or the sdip log field value is not empty, then the metadata.event_type UDM field is set to NETWORK_CONNECTION.

Else, if the csip log field value is not empty or the tsip log field value is not empty or the ssip log field value is not empty, then the metadata.event_type UDM field is set to STATUS_UPDATE.

Else, the metadata.event_type UDM field is set to GENERIC_EVENT.
metadata.product_name The metadata.product_name UDM field is set to Firewall.
metadata.vendor_name The metadata.vendor_name UDM field is set to Zscaler.
principal.asset.asset_id If the devicename log field value is not empty, then the Zscaler:devicename log field is mapped to the principal.asset.asset_id UDM field.
principal.asset.platform_software.platform If the deviceostype log field value matches the regular expression pattern (?i)iOS, then the principal.asset.platform_software.platform UDM field is set to IOS.

Else, if the deviceostype log field value matches the regular expression pattern (?i)Android, then the principal.asset.platform_software.platform UDM field is set to ANDROID.

Else, if the deviceostype log field value matches the regular expression pattern (?i)Windows, then the principal.asset.platform_software.platform UDM field is set to WINDOWS.

Else, if the deviceostype log field value matches the regular expression pattern (?i)MAC, then the principal.asset.platform_software.platform UDM field is set to MAC.

Else, if the deviceostype log field value matches the regular expression pattern (?i)Other, then the principal.asset.platform_software.platform UDM field is set to UNKNOWN_PLATFORM.
security_result.action If the action log field value matches the regular expression pattern ^Allow.*, then the security_result.action UDM field is set to ALLOW.

Else, if the action log field value matches the regular expression pattern ^Drop.* or ^Block.*, then the security_result.action UDM field is set to BLOCK.

Else, if the action log field value is equal to Reset, then the security_result.action UDM field is set to BLOCK.
security_result.severity If the threat_severity log field value is one of the following: CRITICAL, HIGH, MEDIUM, LOW, NONE then, the threat_severity log field is mapped to the security_result.severity UDM field.
Else, if the threat_score log field value is equal to 0 then, the security_result.severity UDM field is set to NONE. Else, if threat_score log field value > 0 and the threat_score log field value <= 45 then, the security_result.severity UDM field is set to LOW. Else, if threat_score log field value > 45 and the threat_score log field value < 75 then, the security_result.severity UDM field is set to MEDIUM. Else, if threat_score log field value >= 75 and the threat_score log field value < 90 then, the security_result.severity UDM field is set to HIGH. Else, if threat_score log field value >= 90 and the threat_score log field value <= 100 then, the security_result.severity UDM field is set to CRITICAL.
security_result.severity_details If the threat_score log field value is not empty and the threat_severity log field value is not empty then, %{threat_score} - %{threat_severity} log field is mapped to the security_result.severity_details UDM field.
Else, if threat_severity log field value is not empty then, threat_severity log field is mapped to the security_result.severity_details UDM field.
Else, if threat_score log field value is not empty then, threat_score log field is mapped to the security_result.severity_details UDM field.
security_result.category If the ipcat log field value is not empty or the oipcat log field value is not empty, then the security_result.category UDM field is set to NETWORK_CATEGORIZED_CONTENT.
security_result.detection_fields[bypassed_session] If the bypassed_session log field value is equal to 0, then the security_result.detection_fields.bypassed_session UDM field is set to the traffic did not bypass Zscaler Client Connector.

Else, if the bypassed_session log field value is equal to 1, then the security_result.detection_fields.bypassed_session UDM field is set to the traffic bypassed Zscaler Client Connector.
security_result.rule_labels [ips_custom_signature] If the ips_custom_signature log field value is equal to 0, then the security_result.rule_labels.ips_custom_signature UDM field is set to non-custom IPS rule.

Else, if the ips_custom_signature log field value is equal to 1, then the security_result.rule_labels.ips_custom_signature UDM field is set to custom IPS rule.
action security_result.action_details
aggregate additional.fields[aggregate]
avgduration network.session_duration.nanos If the durationms log field value is empty and the avgduration log field value is not empty, then the avgduration log field is mapped to the network.session_duration.nanos UDM field.
bypass_etime metadata.collected_timestamp
cdfqdn target.domain.name
cdip target.nat_ip
cdport target.nat_port
csip principal.ip
csport principal.port
datacenter target.location.name
datacentercity target.location.city
datacentercountry target.location.country_or_region
datetime metadata.event_timestamp
day additional.fields[day]
dd additional.fields[dd]
department principal.user.department
dept principal.user.department
destcountry target.location.country_or_region
deviceappversion additional.fields[deviceappversion]
devicehostname principal.asset.hostname If the devicehostname log field value is not empty, then the devicehostname log field is mapped to the principal.asset.hostname UDM field.
devicemodel principal.asset.hardware.model
deviceosversion principal.asset.platform_software.platform_version
deviceowner principal.user.userid
dnat target.security_result.rule_labels[dnat]
dnatrulelabel target.security_result.rule_name
duration network.session_duration.seconds
durationms network.session_duration.nanos If the durationms log field value is not empty, then the durationms log field is mapped to the network.session_duration.nanos UDM field.
eedone additional.fields[eedone]
epochtime metadata.event_timestamp
erulelabel intermediary.security_result.rule_name
ethreatname security_result.threat_name If the ethreatname log field value is not equal to None, then the ethreatname log field is mapped to the security_result.threat_name UDM field.
external_deviceid principal.asset.product_object_id
flow_type additional.fields[flow_type]
fwd_gw_name intermediary.resource.name
hh additional.fields[hh]
inbytes network.received_bytes
ipcat security_result.category_details The ipcat log field is mapped to the security_result.category_details UDM field.
ipsrulelabel security_result.rule_name If the ipsrulelabel log field value is not equal to None, then the ipsrulelabel log field is mapped to the security_result.rule_name UDM field.
location principal.location.name
locationname principal.location.name
login principal.user.email_addresses The login field is extracted from login log field using the Grok pattern, and the login log field is mapped to the principal.user.email_addresses UDM field.
mm additional.fields[mm]
mon additional.fields[mon]
mth additional.fields[mth]
numsessions security_result.detection_fields[numsessions]
nwapp target.application
nwsvc additional.fields[nwsvc]
ocsip additional.fields[ocsip]
odevicehostname security_result.detection_fields[odevicehostname]
odevicename security_result.detection_fields[odevicename]
odeviceowner security_result.detection_fields[odeviceowner]
odnatlabel target.security_result.detection_fields[odnatlabel]
ofwd_gw_name intermediary.security_result.detection_fields[ofwd_gw_name]
oipcat security_result.detection_fields[oipcat]
oipsrulelabel security_result.detection_fields[oipsrulelabel]
ordr_rulename intermediary.security_result.detection_fields[ordr_rulename]
orulelabel intermediary.security_result.detection_fields[orulelabel]
outbytes network.sent_bytes
ozpa_app_seg_name additional.fields[ozpa_app_seg_name]
proto network.ip_protocol If the proto log field value contain one of the following values, then the proto log field is mapped to the network.ip_protocol UDM field.
  • TCP
  • UDP
  • ICMP
  • GRE
  • IP6IN4
  • IGMP
rdr_rulename intermediary.security_result.rule_name
recordid metadata.product_log_id
rulelabel intermediary.security_result.rule_name
sdip target.ip
sdport target.port
sourcetype additional.fields[sourcetype]
srcip_country principal.location.country_or_region
ss additional.fields[ss]
ssip principal.nat_ip
ssport principal.nat_port
stateful additional.fields[stateful]
threatcat security_result.category_details If the threatcat log field value is not equal to None, then the threatcat log field is mapped to the security_result.category_details UDM field.
threatname security_result.threat_name If the threatname log field value is not equal to None, then the threatname log field is mapped to the security_result.threat_name UDM field.
tsip principal.ip
tunsport additional.fields[tunsport]
tuntype additional.fields[traffic_forwarding_method]
tz additional.fields[tz]
user principal.user.email_addresses The user field is extracted from user log field using the Grok pattern, and the user log field is mapped to the principal.user.email_addresses UDM field.
yyyy additional.fields[yyyy]
zpa_app_seg_name additional.fields[zpa_app_seg_name]
ztunnelversion additional.fields[ztunnelversion]

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.