Partilhar via


Firewall de Aplicativo Web com listas de exclusão do Azure Front Door

Às vezes, o Firewall de Aplicativo Web do Azure no Azure Front Door pode bloquear uma solicitação legítima. Como parte do ajuste do firewall do aplicativo Web (WAF), você pode configurar o WAF para permitir a solicitação do seu aplicativo. As listas de exclusão do WAF permitem omitir atributos de solicitação específicos de uma avaliação do WAF. O restante do pedido é avaliado normalmente.

Por exemplo, o Microsoft Entra ID fornece tokens que são usados para autenticação. Quando esses tokens são usados em um cabeçalho de solicitação, eles podem conter caracteres especiais que podem disparar uma deteção de falso positivo por uma ou mais regras WAF. Você pode adicionar o cabeçalho a uma lista de exclusão, que diz ao WAF para ignorar o cabeçalho. O WAF ainda inspeciona o restante da solicitação em busca de conteúdo suspeito.

Âmbitos de exclusão

Você pode criar exclusões nos seguintes escopos:

  • Conjunto de regras: essas exclusões se aplicam a todas as regras dentro de um conjunto de regras.
  • Grupo de regras: essas exclusões se aplicam a todas as regras de uma categoria específica dentro de um conjunto de regras. Por exemplo, você pode configurar uma exclusão que se aplica a todas as regras de injeção de SQL.
  • Regra: Estas exclusões aplicam-se a uma única regra.

Seletores de exclusão

Os seletores de exclusão identificam as partes dos pedidos às quais a exclusão se aplica. O WAF ignora todas as deteções encontradas nas partes especificadas da solicitação. Você pode especificar vários seletores de exclusão em uma única exclusão.

Cada seletor de exclusão especificou uma variável de correspondência, um operador e um seletor.

Variáveis de correspondência

Você pode adicionar os seguintes atributos de solicitação a uma exclusão:

  • Nome do cabeçalho da solicitação
  • Solicitar nome do cookie
  • Nome da cadeia de caracteres de consulta args
  • Solicitar corpo POST args nome
  • Nome JSON args do corpo da solicitação (suportado no DRS 2.0 ou superior)

Os valores dos campos que você usa não são avaliados em relação às regras do WAF, mas seus nomes são avaliados. As listas de exclusão desativam a inspeção do valor do campo. No entanto, os nomes dos campos ainda são avaliados. Para obter mais informações, consulte Excluir outros atributos de solicitação.

Operadores

Você pode especificar um cabeçalho de solicitação, corpo, cookie ou atributo de cadeia de caracteres de consulta exato para corresponder. Ou, opcionalmente, você pode especificar correspondências parciais. Os seguintes operadores são suportados para critérios de correspondência:

  • Igual: Corresponder a todos os campos de solicitação que correspondem exatamente ao valor do seletor especificado. Por exemplo, para selecionar um cabeçalho chamado bearerToken, use o operador com o Equals seletor definido como bearerToken.
  • Começa com: Corresponder todos os campos de solicitação que começam com o valor do seletor especificado.
  • Termina com: Corresponder todos os campos de solicitação que terminam com o valor do seletor especificado.
  • Contém: Corresponder a todos os campos de solicitação que contêm o valor do seletor especificado.
  • Igual a qualquer: Corresponder a todos os campos de solicitação. Quando você usa o operador, o Equals any valor do seletor é definido automaticamente como *. Por exemplo, você pode usar o Equals any operador para configurar uma exclusão que se aplica a todos os cabeçalhos de solicitação.

Sensível às maiúsculas e minúsculas

Os nomes de cabeçalho e cookie não diferenciam maiúsculas de minúsculas. Cadeias de caracteres de consulta, argumentos POST e argumentos JSON diferenciam maiúsculas de minúsculas.

Inspeção do conteúdo do corpo

Algumas das regras gerenciadas avaliam a carga bruta do corpo da solicitação antes de ser analisada em argumentos POST ou JSON. Portanto, em algumas situações, você pode ver entradas de log com um matchVariableName valor de InitialBodyContents ou DecodedInitialBodyContents.

Por exemplo, suponha que você crie uma exclusão com uma variável de correspondência de Request body POST args e um seletor para identificar e ignorar argumentos POST chamados FOO. Você não vê mais nenhuma entrada de log com um matchVariableName valor de PostParamValue:FOO. No entanto, se um argumento POST chamado FOO contiver texto que aciona uma regra, o log poderá mostrar a deteção no conteúdo do corpo inicial. No momento, não é possível criar exclusões para o conteúdo do corpo inicial.

Definir regras de exclusão com base nos logs do Firewall de Aplicativo Web do Azure

Você pode usar logs para exibir os detalhes de uma solicitação bloqueada, incluindo as partes da solicitação que dispararam a regra. Para obter mais informações, consulte Monitoramento e registro em log do Firewall do Aplicativo Web do Azure.

Às vezes, uma regra WAF específica produz deteções de falsos positivos a partir dos valores incluídos em um cabeçalho de solicitação, cookie, argumento POST, argumento de cadeia de caracteres de consulta ou campo JSON em um corpo de solicitação. Se essas deteções de falsos positivos acontecerem, você poderá configurar a regra para excluir a parte relevante da solicitação de sua avaliação.

A tabela a seguir mostra valores de exemplo de logs WAF e os seletores de exclusão correspondentes que você pode criar.

matchVariableName de logs WAF Exclusão de regras no portal
CookieValue:SOME_NAME Solicitar nome do cookie Igual a SOME_NAME
HeaderValue:SOME_NAME Nome do cabeçalho da solicitação Igual a SOME_NAME
PostParamValue:SOME_NAME Solicitar corpo POST args name Igual a SOME_NAME
QueryParamValue:SOME_NAME Query string args name Igual a SOME_NAME
JsonValue:SOME_NAME Corpo da solicitação JSON args name Igual a SOME_NAME

Exclusões para órgãos solicitantes JSON

A partir do DRS versão 2.0, os corpos de solicitação JSON são inspecionados pelo WAF. Por exemplo, considere este corpo de solicitação JSON:

{
  "posts": [
    {
      "id": 1,
      "comment": ""
    },
    {
      "id": 2,
      "comment": "\"1=1\""
    }
  ]
}

A solicitação inclui uma sequência de caracteres de comentário SQL, que o WAF deteta como um possível ataque de injeção de SQL.

Se você determinar que a solicitação é legítima, poderá criar uma exclusão com uma variável de correspondência de , um operador de e um seletor de Request body JSON args nameEqualsposts.comment.

Excluir outros atributos de solicitação

Se sua entrada de log WAF mostrar um matchVariableName valor que não está na tabela anterior, você não poderá criar uma exclusão. Por exemplo, atualmente não é possível criar exclusões para nomes de cookies, nomes de cabeçalho, nomes de parâmetros POST ou nomes de parâmetros de consulta.

Em vez disso, considere tomar uma das seguintes ações:

  • Desative as regras que dão falsos positivos.
  • Crie uma regra personalizada que permita explicitamente essas solicitações. As solicitações ignoram toda a inspeção WAF.

Em particular, quando o matchVariableName valor é CookieName, , , ou , significa que o nome do campo, em vez de seu valor, HeaderNamePostParamNameQueryParamNameacionou a regra. A exclusão de regras não tem suporte para esses matchVariableName valores no momento.

Próximos passos