Coletar registros do WAF do Cloudflare
Versão do analisador: 6.0
Esse analisador extrai campos dos registros JSON do firewall de aplicativos da Web (WAF) do Cloudflare, os transforma e os mapeia para o modelo de dados unificado (UDM). Ele lida com várias ações do Cloudflare, enriquecendo os dados com metadados e informações de rede antes de estruturar a saída no formato UDM.
Antes de começar
Verifique se você atende os seguintes pré-requisitos:
- Instância do Google SecOps.
- Acesso privilegiado ao Google Cloud.
- Plano Enterprise do Cloudflare.
- Acesso privilegiado ao Cloudflare. Para mais detalhes, consulte Cloudflare.
Criar um bucket do Google Cloud Cloud Storage
- Faça login no console Google Cloud .
Acesse a página Buckets do Cloud Storage.
Clique em Criar.
Configure o bucket:
- Nome: insira um nome exclusivo que atenda aos requisitos de nome de bucket (por exemplo, cloudflare-waf).
- Escolha onde armazenar os dados: selecione um local.
- Escolha uma classe de armazenamento para seus dados: selecione uma classe de armazenamento padrão para o bucket ou selecione Classe automática para o gerenciamento automático da classe de armazenamento.
- 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.
- Classe de armazenamento: escolha com base nas suas necessidades (por exemplo, Standard).
Clique em Criar.
Conceder permissões de bucket ao usuário do IAM do Cloudflare
- No Google Cloud, acesse Armazenamento > Navegador > Bucket > Permissões.
- Adicione a conta logpush@cloudflare-data.iam.gserviceaccount.com com a permissão de administrador de objetos do Storage.
Criar um job do Logpush para registros do WAF usando a interface do Cloudflare
- Faça login no Cloudflare.
- Acesse Analytics & Logs > Logpush.
- Selecione Create a Logpush job.
- Em Selecionar um destino, escolha Google Cloud Armazenamento.
- Insira os seguintes detalhes do destino:
- Bucket: Google Cloud nome do bucket do Storage
- Caminho: local do bucket no contêiner de armazenamento
- Selecione Organizar registros em subpastas diárias.
- Clique em Continuar.
- Selecione o conjunto de dados Segurança (WAF) para enviar ao armazenamento.
- Configure o job do Logpush:
- Insira o Nome do job.
- Em "Se os registros corresponderem", selecione os eventos que serão incluídos ou removidos dos registros. Consulte Filtros para mais informações. Nem todos os conjuntos de dados têm essa opção disponível.
- Nos campos Enviar o seguinte, é possível enviar todos os registros para o destino de armazenamento ou escolher seletivamente quais registros você quer enviar.
- Clique em Enviar.
Configurar feeds
Para configurar um feed, siga estas etapas:
- Acesse Configurações > Gerenciamento de dados > Feeds. Se você estiver em uma plataforma somente SIEM, acesse Configurações > Feeds.
- Clique em Adicionar novo feed.
- Na página seguinte, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do Cloudflare WAF).
- Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Cloudflare WAF como o Tipo de registro.
- Clique em Get Service Account.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- URI do bucket de armazenamento: o URL do Cloud Storage.
- Opções de exclusão da origem: selecione a opção de exclusão de acordo com sua preferência.
Clique em Próxima.
Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento de UDM | Lógica |
|---|---|---|
Action |
security_result.action_details |
O valor de Action do registro bruto é atribuído diretamente a esse campo do UDM. |
Action |
security_result.action |
O valor desse campo é derivado do campo Action no registro bruto. Se Action for "allow", o campo UDM será definido como ALLOW. Se Action for "challengeSolved", "jschallengeSolved", "managedchallengenoninteractivesolved" ou "managedchallengeinteractivesolved", o campo UDM será definido como ALLOW_WITH_MODIFICATION. Se Action for "drop", "block" ou "connectionclose", o campo UDM será definido como BLOCK. Se Action for "challengefailed" ou "jschallengefailed", o campo UDM será definido como FAIL. Caso contrário, ele será definido como UNKNOWN_ACTION. |
ClientASN |
network.asn |
O valor de ClientASN do registro bruto é atribuído diretamente a esse campo de UDM após a conversão em uma string. |
ClientASNDescription |
additional.fields.key |
A chave é definida estaticamente como "ClientASNDescription". |
ClientASNDescription |
additional.fields.value.string_value |
O valor de ClientASNDescription do registro bruto é atribuído diretamente a esse campo do UDM. |
ClientCountry |
principal.location.country_or_region |
O valor de ClientCountry do registro bruto é atribuído diretamente a esse campo do UDM. |
ClientIP |
principal.ip |
O valor de ClientIP do registro bruto é atribuído diretamente a esse campo do UDM. |
ClientRefererHost |
intermediary.hostname |
O valor de ClientRefererHost do registro bruto é atribuído diretamente a esse campo do UDM. |
ClientRefererPath |
network.http.referral_url |
O valor de ClientRefererPath do registro bruto é atribuído diretamente a esse campo do UDM. |
ClientRequestHost |
target.hostname |
O valor de ClientRequestHost do registro bruto é atribuído diretamente a esse campo do UDM. |
ClientRequestMethod |
network.http.method |
O valor de ClientRequestMethod do registro bruto é atribuído diretamente a esse campo do UDM. |
ClientRequestPath |
target.file.full_path |
O valor de ClientRequestPath do registro bruto é atribuído diretamente a esse campo do UDM. |
ClientRequestProtocol |
network.application_protocol |
A parte do protocolo de ClientRequestProtocol (por exemplo, "HTTP" de "HTTP/1.1") é extraída usando o grok, convertida em letras maiúsculas e atribuída a esse campo de UDM. |
ClientRequestUserAgent |
network.http.user_agent |
O valor de ClientRequestUserAgent do registro bruto é atribuído diretamente a esse campo do UDM. |
Datetime |
metadata.event_timestamp |
O valor de Datetime do registro bruto é analisado como um carimbo de data/hora RFC 3339 e atribuído a esse campo do UDM. |
EdgeColoCode |
additional.fields.key |
A chave é definida estaticamente como "EdgeColoCode". |
EdgeColoCode |
additional.fields.value.string_value |
O valor de EdgeColoCode do registro bruto é atribuído diretamente a esse campo do UDM. |
EdgeResponseStatus |
network.http.response_code |
O valor de EdgeResponseStatus do registro bruto é atribuído diretamente a esse campo de UDM e convertido em um número inteiro. |
Kind |
metadata.product_event_type |
O valor de Kind do registro bruto é atribuído diretamente a esse campo do UDM. |
Metadata.filter |
target.resource.attribute.labels.value |
O valor de Metadata.filter do registro bruto é atribuído ao campo value de um rótulo em target.resource.attribute.labels. O key desse rótulo é definido estaticamente como "Filtro de metadados". |
Metadata.type |
target.resource.attribute.labels.value |
O valor de Metadata.type do registro bruto é atribuído ao campo value de um rótulo em target.resource.attribute.labels. O key desse rótulo é definido estaticamente como "Tipo de metadados". O valor desse campo é derivado com base na presença e nos valores de ClientIP, ClientRequestHost e app_protocol. Consulte o código do analisador para ver a lógica específica. Definido estaticamente como "Cloudflare". Definido estaticamente como "Agregador de registros do Cloudflare". Definido estaticamente como "CLOUDFLARE_WAF". |
RayID |
metadata.product_log_id |
O valor de RayID do registro bruto é atribuído diretamente a esse campo do UDM. |
RuleID |
security_result.rule_id |
O valor de RuleID do registro bruto é atribuído diretamente a esse campo do UDM. |
Source |
security_result.rule_name |
O valor de Source do registro bruto é atribuído diretamente a esse campo do UDM. |
timestamp |
metadata.event_timestamp, events.timestamp |
O valor de timestamp do registro bruto é atribuído diretamente a esses campos do UDM. |
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.