Use o Log Service for WAF para pesquisar, filtrar e analisar logs de tráfego do WAF em tempo real. Os resultados da consulta exibem solicitações bloqueadas, origens de ataques e regras de proteção acionadas. Assim, você investiga incidentes, ajusta regras e age com base nas descobertas sem sair do console.
Pré-requisitos
Antes de começar, verifique se:
O Log Service for WAF está ativado. Para instruções de configuração, consulte Introdução ao recurso Log Service for WAF.
Consultar e analisar logs
Faça login no console do WAF. Na barra de navegação superior, selecione o grupo de recursos e a região onde sua instância do WAF está implantada (Chinese Mainland ou Outside Chinese Mainland).
No painel de navegação à esquerda, escolha Security Operations > Log Service.
-
Selecione um nome de domínio na lista suspensa e ative Status para ativar a coleta de logs desse domínio. A lista suspensa (identificada como 1 na figura) exibe apenas nomes de domínio protegidos pelo WAF. Caso o domínio necessário não apareça, adicione-o primeiro ao WAF. Consulte Tutorial.

-
Na aba Log Search, crie e execute uma consulta.
-
Insira uma instrução de consulta na caixa de pesquisa (identificada como 1 na figura). As instruções de consulta usam a sintaxe de pesquisa do Log Service. Para detalhes sobre a sintaxe, consulte Sintaxe de pesquisa. Para a lista completa de campos de log do WAF utilizáveis como condições de consulta, veja Campos de log suportados pelo WAF. Se preferir uma abordagem guiada, expanda Advanced Search acima da caixa de pesquisa, preencha as condições e clique em Search. O console gera a instrução de consulta automaticamente. Estão disponíveis as seguintes condições:
Condição de pesquisa
Descrição
IP
Endereço IP do cliente que enviou a solicitação
Request ID
ID exclusivo atribuído pelo WAF a cada solicitação. O WAF inclui este ID em páginas de erro e de CAPTCHA deslizante para permitir o rastreamento de solicitações específicas durante a solução de problemas.
Rule ID
ID da regra de proteção do WAF correspondente à solicitação. Encontre os IDs das regras na página Security Report ou em System Management > Protection Rule Group.
Server Response Code
Código de status HTTP retornado pelo servidor de origem ao WAF
Status Code Returned by WAF
Código de status HTTP retornado pelo WAF ao cliente
Protection Features
Tipo de regra de proteção do WAF correspondente à solicitação. Para tipos de regras e configuração, consulte Visão geral.
(Opcional) Para calcular ou agregar os resultados, anexe uma instrução analítica após uma barra vertical (
|). As instruções analíticas usam a sintaxe padrão SQL-92. Para mais detalhes, consulte Visão geral da consulta e análise de logs. Ignore esta etapa se precisar apenas visualizar as entradas de log correspondentes.Defina o intervalo de tempo usando o seletor de tempo (identificado como 2 na figura).
Clique em Search & Analyze (identificado como 3 na figura).

-
Os resultados aparecem no histograma de logs e nas abas Raw Logs e Graph abaixo. Para exemplos práticos de consulta, consulte Exemplos de consulta e análise.
Gerenciar resultados da consulta
Histograma de logs
O histograma de logs mostra a distribuição temporal dos logs consultados.

Passe o mouse sobre um retângulo verde para ver o intervalo de tempo representado e o número de logs nesse intervalo.
Clique em um retângulo verde para detalhar uma divisão de tempo mais refinada e visualizar as entradas correspondentes na aba Raw Logs.
Raw Logs
A aba Raw Logs exibe entradas de log individuais.

Análise rápida
Clique no ícone
para alternar entre nomes de campo e aliases. Os aliases são definidos durante a configuração de índices. Por exemplo, se você definir o alias de host_name como host, a lista de Análise Rápida mostrará host quando os aliases estiverem ativados.
Se um campo não tiver alias, seu nome será sempre exibido, independentemente da configuração de exibição de alias.
Para mais informações, consulte Análise rápida.
Visualizar e baixar logs
|
Ação |
Como fazer |
|
Alternar entre visualizações de tabela e dados brutos |
Clique em Table ou Raw Data |
|
Copiar uma entrada de log |
Clique no ícone |
|
Visualizar detalhes da tag |
Clique no ícone |
|
Alternar exibição multilinha |
Clique em New Line |
|
Ordenar por tempo |
Clique em Time |
|
Baixar logs |
Clique no ícone |
|
Definir configurações de exibição |
Clique no ícone |
Graph
A aba Graph visualiza os resultados analíticos. Ela requer uma instrução analítica (SQL-92) na consulta.
|
Ação |
Como fazer |
|
Alterar o tipo de gráfico |
Selecione um tipo de gráfico no seletor de gráficos. Para os tipos disponíveis, consulte Configurações de gráfico. |
|
Visualizar o gráfico |
Visualize o gráfico após alterar o tipo |
|
Adicionar a um painel |
Clique em Add to New Dashboard |
|
Baixar logs |
Clique em Download Log. Opções: Download Log in Current Page, Download All Logs with Cloud Shell, Download All Logs Using Command Line Tool. Consulte Baixar logs. |
Para ajustar um gráfico, use as seguintes configurações:
|
Configuração |
Descrição |
|
Configurações globais do gráfico, como o esquema de cores aplicado a todos os resultados da instrução de consulta |
|
|
Configurações de exibição por instrução de consulta ou por coluna, como um esquema de cores personalizado para um único resultado de consulta |
|
|
Comportamento de drill-down para um resultado de consulta ou uma coluna de dados, permitindo análise detalhada |
LogReduce
Na aba LogReduce, clique em Enable LogReduce para agrupar entradas de log semelhantes e identificar padrões. Para detalhes, consulte LogReduce.
Agir com base nos resultados da consulta
Após encontrar o que precisa nos logs, execute as seguintes ações sem sair do console:
|
Ação |
Como fazer |
|
Criar um alerta |
Escolha Save as Alert > New Alert. O Log Service avalia a regra conforme uma programação e envia uma notificação sempre que a condição de gatilho é atendida. Para detalhes de configuração, consulte Configurar uma regra de alerta. |
|
Adicionar um gráfico a um painel |
Na aba Graph, clique em Add to New Dashboard. |
|
Baixar logs para análise offline |
Clique no ícone de download na aba Raw Logs ou em Download Log na aba Graph. Consulte Baixar logs. |
Principais campos de log
Os campos a seguir são frequentemente usados em consultas de log do WAF. Para a referência completa de campos, consulte Campos de log suportados pelo WAF.
|
Campo |
Descrição |
Valores possíveis |
|
|
Recurso de proteção que atuou na solicitação |
|
|
|
Ação tomada na solicitação |
|
|
|
Endereço IP de origem do cliente. Se um proxy estiver em uso ou o cabeçalho IP for inválido, o valor será |
Endereço IP ou |
|
|
Endereço IP conectado ao WAF |
Endereço IP |
|
|
Nome de domínio correspondente à solicitação |
String de nome de domínio |
|
|
Nome de domínio solicitado |
String de nome de domínio |
|
|
Caminho da solicitação |
String de caminho |
|
|
Método de solicitação HTTP |
|
|
|
Código de status HTTP retornado pelo WAF ao cliente |
Código de status HTTP |
|
|
Código de status HTTP retornado pelo servidor de origem ao WAF |
Código de status HTTP |
|
|
String de consulta da solicitação |
String codificada em URL |
|
|
User agent do cliente |
String de user agent |
Exemplos de consulta e análise
Os exemplos a seguir cobrem cenários comuns de investigação de segurança. Cada exemplo usa uma instrução de pesquisa (antes do |) e uma instrução analítica (após o |).
Solicitações bloqueadas por recurso de proteção, a cada 15 minutos
Mostra o número de solicitações bloqueadas por cada recurso de proteção em intervalos de 15 minutos.
* |
SELECT
time_series(__time__, '15m', '%H:%i', '0') as time,
COUNT_if(final_plugin = 'waf') as "wafmodule",
COUNT_if(final_plugin = 'acl') as "aclmodule",
COUNT_if(final_plugin = 'cc') as "httpfloodmodule"
GROUP by
time
ORDER by
time
Detalhamento de recursos de proteção por domínio
Mostra quantas vezes cada recurso de proteção foi acionado, agrupado por nome de domínio.
* |
SELECT
count(*) as times,
host,
final_plugin
GROUP by
host,
final_plugin
ORDER by
times desc
Consultas por segundo (QPS), a cada 15 minutos
* |
SELECT
time_series(__time__, '15m', '%H:%i', '0') as time,
count(*) / 900 as QPS
GROUP by
time
ORDER by
time
Domínios mais visados por ataques de flood HTTP
and acl_action :block |
SELECT
count(*) as times,
host
GROUP by
host
ORDER by
times desc
Detalhes de solicitações por segundo (últimas 10)
Retorna hora, domínio, caminho, método, código de status do WAF, código de status do servidor de origem e string de consulta para as solicitações mais recentes.
* |
SELECT
date_format(date_trunc('second', __time__), '%H:%i:%s') as time,
host,
request_path,
request_method,
status,
upstream_status,
querystring
LIMIT
10
Últimos 10 ataques bloqueados em um domínio específico
Substitua your_domain_name pelo nome de domínio real.
matched_host: your_domain_name
and final_action: block |
SELECT
time,
real_client_ip,
http_user_agent
ORDER by
time desc
LIMIT
10
Dias decorridos desde o último ataque bloqueado em um domínio específico
O resultado é arredondado para uma casa decimal.
matched_host: your_domain_name
and final_action: block |
SELECT
time,
round((to_unixtime(now())-__time__) / 86400, 1) as "days_passed",
real_client_ip,
http_user_agent
ORDER by
time desc
LIMIT
10
Tendência de ataques por dia
Usa date_trunc para agrupar carimbos de data/hora de ataques por dia. Para detalhes sobre esta função, consulte Funções de data e hora.
matched_host: your_domain_name
and final_action: block |
SELECT
date_trunc('day', __time__) as dt,
count(1) as PV
GROUP by
dt
ORDER by
dt
Detalhamento de ataques por país
Usa ip_to_country para mapear endereços IP de clientes para países. Quando real_client_ip é - (proxy em uso ou cabeçalho IP inválido), a consulta usa remote_addr como alternativa.
matched_host: your_domain_name
and final_action: block |
SELECT
ip_to_country(
if(real_client_ip = '-', remote_addr, real_client_ip)
) as country,
count(1) as "Number of attacks"
GROUP by
country
Detalhamento de ataques por província
Usa ip_to_province para mapear endereços IP de clientes para províncias. Para detalhes sobre esta função, consulte Funções de IP.
matched_host: your_domain_name
and final_action: block |
SELECT
ip_to_province(
if(real_client_ip = '-', remote_addr, real_client_ip)
) as province,
count(1) as "Number of attacks"
GROUP by
province
Próximos passos
Campos de log suportados pelo WAF — referência para todos os campos de log consultáveis
Configurar uma regra de alerta — configure notificações quando limiares de ataque forem excedidos
Baixar logs — exporte logs para análise offline