Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Como analiso os logs do AWS WAF no CloudWatch?
Quero analisar e filtrar meus logs do AWS WAF que eu armazeno no Amazon CloudWatch.
Resolução
Para analisar e filtrar solicitações de log AWS WAF específicas no CloudWatch, use o CloudWatch Logs Insights ou o gerador de consultas do CloudWatch.
CloudWatch Log Insights
É possível usar o CloudWatch Log Insights no console do CloudWatch ou no Log Insights no AWS WAF.
AWS WAF
Conclua as seguintes etapas:
- Abra o console do AWS WAF.
- No painel de navegação, escolha AWS WAF.
- Selecione Pacotes de recursos e proteção.
- Selecione seu Pacote de proteção.
- Escolha visualizar painel.
- Expanda o explorador de log na parte inferior da página.
- Escolha Exibir no CloudWatch.
- No Editor de consultas, insira sua consulta. Use a sintaxe de consulta para criar suas consultas. Outra opção é selecionar consultas na lista Consultas frequentes.
- Escolha Executar consulta.
CloudWatch
Conclua as seguintes etapas:
- Abra o console do CloudWatch.
- No painel de navegação, selecione Logs.
- Selecione Log Insights.
- Em Log Insights, abra a lista suspensa Critérios de seleção.
- Selecione um ou mais grupos de logs para consultar. Ou selecione Procurar grupos de logs e, em seguida, selecione seu grupo de logs.
- (Opcional) Escolha um intervalo de tempo para sua consulta.
- Use a sintaxe de consulta para criar suas consultas.
- Para ver os resultados, selecione Executar consulta.
Gerador de consultas CloudWatch
Para usar a IA generativa para analisar os logs de acesso, execute o gerador de consultas no CloudWatch.
Exemplos de consultas para pesquisar seus dados
Para filtrar informações específicas com os insights do CloudWatch Logs, use os seguintes exemplos de consultas.
Principais IPs de clientes
Para contar os principais IPs de clientes que acessam seus logs, execute a seguinte consulta:
fields httpRequest.clientIp| stats count(*) as requestCount by httpRequest.clientIp | sort requestCount desc
Principais países
Para contar os principais países que acessam seus logs, execute a seguinte consulta:
stats count(*) as RequestCount by httpRequest.country as Country| sort RequestCount desc
Principais hosts
Para contar os principais hosts que acessam seus logs, execute a seguinte consulta:
parse @message /\{"name":"[Hh]ost\",\"value":\"(?[^"}]*)/|stats count(*) as RequestCount by Host | sort RequestCount desc
Principais métodos
Para contar os principais métodos que acessam seus logs, execute a seguinte consulta:
stats count(*)as RequestCount by httpRequest.httpMethod as Method| sort RequestCount desc
Principais atendentes de usuários
Para contar os principais agentes de usuário que acessam seus logs, execute a seguinte consulta:
parse @message /\{"name":"[Uu]ser\-[Aa]gent\",\"value\"\:\"(?[^"}]*)/| stats count(*) as RequestCount by UserAgent | sort RequestCount desc
Principais regras de encerramento
Para contar as principais regras de encerramento em seus logs, execute a seguinte consulta:
stats count(*) as RequestCount by terminatingRuleId| sort RequestCount desc
Filtrar por solicitações bloqueadas
Para filtrar todas as solicitações bloqueadas e a regra de encerramento, caminho do URI e endereço IP do cliente, execute a seguinte consulta:
fields @timestamp, httpRequest.clientIp as ClientIP, httpRequest.uri as URI, terminatingRuleId as rule| filter action = "BLOCK" | sort @timestamp desc
Filtrar por host
Para filtrar seus logs por um host específico, execute a seguinte consulta:
fields terminatingRuleId as Rule, action, httpRequest.country as Country, httpRequest.clientIp as ClientIP, httpRequest.uri as URI| parse @message /\{"name":"[Hh]ost\",\"value":\"(?[^"}]*)/ | filter Host = "www.example.com"
Observação: substitua www.exemplo.com pelo nome do host.
Filtrar por uma string específica
Para filtrar seus logs por uma string específica, execute a seguinte consulta:
fields terminatingRuleId as Rule, action, httpRequest.country as Country, httpRequest.clientIp as ClientIP, httpRequest.httpMethod as Method,httpRequest.uri as URI| parse @message /\{"name":"[Hh]ost\",\"value":\"(?[^"}])/ | parse @message /\{"name":"[Uu]ser\-[Aa]gent\",\"value\"\:\"(?[^"}])/ | filter @message like "{jndi:ldap" | sort action, URI desc
Observação: Substitua {jndi:ldap pela sua string.
Filtrar por solicitações POST
Para filtrar por solicitações POST, execute a seguinte consulta:
fields terminatingRuleId as Rule, action, httpRequest.country as Country, httpRequest.clientIp as ClientIP, httpRequest.httpMethod as Method, httpRequest.uri as URI| parse @message /\{"name":"[Uu]ser\-[Aa]gent\",\"value\"\:\"(?[^"}]*)/| parse @message /\{"name":"[Hh]ost\",\"value":\"(?[^"}]*)/ | filter httpRequest.httpMethod ="POST" | display Rule, action, Country, ClientIP, Method, URI, Host, UserAgent | sort Rule, action desc
Filtrar por país
Para filtrar solicitações que não são originárias de um país específico, execute a seguinte consulta:
fields terminatingRuleId as Rule, action, httpRequest.country as Country, httpRequest.clientIp as ClientIP, httpRequest.uri as URI| parse @message /\{"name":"[Hh]ost\",\"value":\"(?[^"}]*)/ | parse @message /\{"name":"[Uu]ser\-[Aa]gent\",\"value\"\:\"(?[^"}]*)/ | filter Country != "US" | sort Country, action desc
Observação: substitua US pelo código do país que você deseja filtrar.
Filtrar solicitações bloqueadas por regras baseadas em taxas
Para filtrar seus logs que estão bloqueados por uma regra baseada em taxas, execute a seguinte consulta:
fields @timestamp, httpRequest.clientIp as ClientIP, httpRequest.uri as URI, terminatingRuleId as rule, httpRequest.country as Country| filter action = "BLOCK" | filter terminatingRuleType = "RATE_BASED" | sort @timestamp desc
Cross-Site Scripting (XSS) ou injeção de SQL
Para encontrar padrões que causam injeção de XSS ou SQL na regra de encerramento de regras personalizadas ou grupos de regras do AWS Managed Rules, execute a consulta a seguir:
fields @timestamp| parse @message ',"terminatingRuleMatchDetails":[*],' as terminatingRuleMatchData | filter (terminatingRuleMatchData like /XSS/ or terminatingRuleMatchData like /SQL/) | display @timestamp, httpRequest.clientIp, httpRequest.country, terminatingRuleMatchData, httpRequest.requestId
A consulta mostra entradas com um carimbo de data/hora, endereço IP do cliente, país de origem, detalhes da correspondência e o ID da solicitação.
Filtrar solicitações contabilizadas por uma regra específica em um grupo de regras
Para filtrar as entradas de log das solicitações que uma regra específica em um grupo de regras conta e encerra por padrão, execute a seguinte consulta:
fields @timestamp| filter (@message like 'excludedRules":[{"exclusionType":"EXCLUDED_AS_COUNT","ruleId":"NoUserAgent_HEADER"}]}' and @message like 'terminatingRuleId":"Default_Action"') | parse @message '"ruleId":*}]}' as ruleMatchDetails | display @timestamp, httpRequest.clientIp, httpRequest.country, ruleMatchDetails, httpRequest.requestId
Observação: substitua ruleId pelo ID da sua regra.
Filtrar por solicitações com um CAPTCHA que não é válido
Para filtrar as 100 principais solicitações com um CAPTCHA que não é válido, execute a seguinte consulta:
fields @timestamp, httpRequest.clientIp, httpRequest.requestId, captchaResponse.failureReason, @message| filter captchaResponse.failureReason ='TOKEN_MISSING' | sort @timestamp desc | limit 100
Observação: Substitua 100 na cláusula de limite pelo número de solicitações que você deseja filtrar.
Essa consulta mostra a hora da solicitação, o endereço IP, o ID da solicitação, o código de resposta e a mensagem inteira.
- Idioma
- Português

Conteúdo relevante
- feita há um mês
- feita há 10 meses
AWS OFICIALAtualizada há 3 anos