Eu criei uma regra personalizada para o AWS WAF, mas ela não está funcionando como eu esperava. O que posso fazer para resolver o problema?
Resolução
Se a regra personalizada para o AWS WAF não estiver funcionando conforme o esperado, verifique o seguinte:
- Prioridade da regra
- Transformação de texto
- Lógica booleana
Prioridade da regra
Verifique se a regra personalizada que você criou possui a prioridade correta. Para obter mais informações, consulte Ordem de processamento de regras e grupos de regras em uma ACL da Web.
Você pode acessar uma regra pelo seu nome no grupo de regras ou na ACL da Web em que ela estiver definida.
A ordem de avaliação de regras do AWS WAF é decrescente, ou seja, vai de cima para baixo, e a primeira regra de encerramento correspondente é aplicada: Permitir, Bloquear ou CAPTCHA. Se a sua solicitação coincidir com uma das regras de encerramento de maior prioridade do que a sua regra personalizada, o AWS WAF executará a ação especificada nessa regra. Assim, a sua solicitação não será avaliada em relação à sua regra personalizada. Para obter mais informações, consulte a seção Introdução à execução de ações das regras e grupos de regras em uma ACL da Web.
Por exemplo, vamos supor que você quer criar uma regra de permissão personalizada para uma solicitação que é bloqueada por um grupo de regras gerenciadas da AWS (AMR). Você deve posicionar a sua regra personalizada acima (com uma prioridade numérica mais baixa) da regra AMR que bloquearia a solicitação.
Você pode gerenciar a ordem de prioridade por meio do Criador de regras, que fica no console do AWS WAF e está disponível para ACLs da web e grupos de regras. Para alterar a ordem de prioridade usando a API da AWS, use as chamadas de API UpdateWebACL e UpdateRuleGroup. Para alterar a ordem de prioridade usando a AWS CLI, use os comandos update-web-acl e update-rule-group.
Transformação de texto
Se você estiver usando transformações de texto em sua regra personalizada, verifique se ela está aplicada corretamente. Para obter mais informações, consulte a seção Transformações de texto do AWS WAF.
O AWS WAF aplica a transformação antes de inspecionar a solicitação. Se você especificar mais de uma transformação, o AWS WAF irá processá-las na ordem listada. Você deve verificar a transformação e a ordem da transformação se estiver usando várias transformações em sua regra personalizada.
Por exemplo, vamos dizer que você criou uma regra personalizada para executar Base64 decode e URL decode para uma string no argumento de consulta. O AWS WAF irá executar primeiro o Base64 decode da string de consulta na solicitação recebida. A string resultante do Base64 decode é posteriormente transformada através do URL decode. Em seguida, a string resultante do URL decode é inspecionada em relação à string que você forneceu na configuração da regra.
Lógica booleana
Se você estiver usando instruções de regra lógicas, verifique se a lógica AND, OR ou NOT que foram usadas para a sua regra estão corretas. Para obter mais informações, consulte a seção Lista de instruções de regra e leia a subseção instruções de regras lógicas.
Para verificar isso através da lógica booleana, considere o seguinte exemplo:
Você está criando uma regra personalizada que corresponde a uma solicitação com os seguintes critérios: a solicitação contém a URI “/test”, AND (e) o IP de origem está no conjunto de IPs X, portanto executar Bloquear.
Solicitação 1
Se a solicitação contiver a URI “/test” (Booleano 1) AND (e) o IP NOT (não) estiver no conjunto de IPs X (Booleano 0), então o Booleano 1 AND (e) o Booleano 0 retornam Booleano 0.
A sua regra personalizada não corresponderá à essa solicitação.
Solicitação 2
Se a solicitação não contiver a URI “/test” (Booleano 0) AND (e) o IPNOT (não) estiver no conjunto de IPs X (Booleano 0), então o Booleano 0 AND (e) o Booleano 0 retornam Booleano 0.
A sua regra personalizada não corresponderá à essa solicitação.
Solicitação 3
Se a solicitação contiver a URI “/test” (Booleano 1) AND (e) o IP estiver no conjunto de IPs X (Booleano 1), então o Booleano 1 AND (e) o Booleano 1 retornam Booleano 1.
A sua regra personalizada corresponderá à essa solicitação.