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 oEquals 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 name
Equals
posts.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, HeaderName
PostParamName
QueryParamName
acionou a regra. A exclusão de regras não tem suporte para esses matchVariableName
valores no momento.
Próximos passos
- Configure listas de exclusão no WAF da Porta da Frente do Azure.
- Depois de definir as configurações do WAF, saiba como exibir os logs do WAF. Para obter mais informações, consulte Diagnóstico da porta frontal do Azure.