Firewall de Aplicativo Web com listas de exclusões do Azure Front Door
Às vezes, os Firewalls de Aplicativo Web do Azure no Azure Front Door podem bloquear uma solicitação legítima. Como parte do ajuste do seu firewall de aplicativo web (WAF), você pode configurá-lo para permitir solicitações para o seu aplicativo. As listas de exclusões do WAF permitem a você omitir atributos de solicitação específicos de uma avaliação do WAF. O restante da solicitação é avaliado como normal.
Por exemplo, a ID do Microsoft Entra fornece tokens 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 detecção de falso positivo por uma ou mais regras do WAF. Você pode adicionar o cabeçalho a uma lista de exclusões, que informa ao WAF para ignorar o cabeçalho. O WAF continua inspecionando se há conteúdo suspeito no restante da solicitação.
Escopos 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 determinada categoria dentro de um conjunto de regras. Por exemplo, você pode configurar uma exclusão que se aplique a todas as regras de injeção de SQL.
- Regra: Essas exclusões se aplicam a uma única regra.
Seletores de exclusão
Os seletores de exclusão identificam as partes das solicitações às quais a exclusão se aplica. O WAF ignora as detecçõ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 especifica 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 de solicitação
- Nome do cookie de solicitação
- Nome de argumentos da cadeia de caracteres de consulta
- Nome de argumentos POST do corpo da solicitação
- Nome de argumentos JSON do corpo da solicitação (com suporte 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ões desabilitam a inspeção do valor do campo. No entanto, os nomes de campo continuam sendo avaliados. Para obter mais informações, confira Excluir outros atributos da solicitação.
Operadores
Você pode especificar o cabeçalho, corpo, cookie ou atributo exato da cadeia de consulta de uma solicitação para correspondência. Outra opção é especificar correspondências parciais. Os seguintes operadores são compatíveis como critérios de correspondência:
- Equals: corresponde a todos os campos da solicitação que correspondem exatamente ao valor do seletor especificado. Por exemplo, para selecionar um cabeçalho chamado bearerToken, use o operador
Equals
com o seletor definido como bearerToken. - Starts with: corresponde a todos os campos da solicitação que começam com o valor do seletor especificado.
- Ends with: corresponde a todos os campos da solicitação que terminam com o valor do seletor especificado.
- Contains: corresponde a todos os campos da solicitação que contém o valor do seletor especificado.
- Equals any: corresponde a todos os campos da solicitação. Quando você usa o operador
Equals any
, o valor do seletor é definido automaticamente como*
. Por exemplo, você pode usar o operadorEquals any
para configurar uma exclusão que se aplique a todos os cabeçalhos de solicitação.
Diferenciar maiúsculas de 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 de conteúdo do corpo
Algumas das regras gerenciadas avaliam o conteúdo bruto do corpo da solicitação antes que seja analisado em argumentos POST ou argumentos JSON. Portanto, em algumas situações, você pode ver entradas de log com um valor matchVariableName
de InitialBodyContents
ou DecodedInitialBodyContents
.
Por exemplo, suponha que você crie uma exclusão com uma variável de correspondência Request body POST args
e um seletor para identificar e ignorar argumentos POST chamados FOO
. Você não verá mais entradas de log com um valor matchVariableName
de PostParamValue:FOO
. No entanto, se um argumento POST chamado FOO
contiver algum texto que dispare uma regra, o log poderá mostrar a detecção no conteúdo inicial do corpo. No momento, não é possível criar exclusões para o conteúdo inicial do corpo.
Definir regras de exclusão com base nos logs do Firewall de Aplicativo Web do Azure
Você pode usar os logs para visualizar os detalhes de uma solicitação bloqueada, incluindo as partes da solicitação que acionaram a regra. Para obter mais informações, confira Registro em Log e Monitoramento do Firewall de Aplicativo Web do Azure.
Às vezes, uma regra específica do WAF produz detecções falso positivo dos valores incluídos em um cabeçalho de solicitação, cookie, argumento POST, argumento de cadeia de caracteres de consulta ou campo JSON de um corpo da solicitação. Se essas detecções falso positivo ocorrerem, você poderá configurar a regra para excluir a parte relevante da solicitação da avaliação.
A tabela a seguir mostra valores de exemplo dos logs do WAF e os seletores de exclusão correspondentes que você poderia criar.
matchVariableName de logs do WAF | Exclusão de regra no portal |
---|---|
CookieValue:SOME_NAME | Nome do cookie de solicitação igual a SOME_NAME |
HeaderValue:SOME_NAME | Nome do cabeçalho de solicitação igual a SOME_NAME |
PostParamValue:SOME_NAME | Nome de argumentos POST do corpo da solicitação Igual a SOME_NAME |
QueryParamValue:SOME_NAME | Nome dos argumentos da cadeia de caracteres de consulta igual a SOME_NAME |
JsonValue:SOME_NAME | Nome de argumentos JSON do corpo da solicitação Igual a SOME_NAME |
Exclusões em corpos de solicitação JSON
No DRS versão 2.0, os corpos de solicitação JSON são inspecionados pelo WAF. Por exemplo, considere este corpo da solicitação JSON:
{
"posts": [
{
"id": 1,
"comment": ""
},
{
"id": 2,
"comment": "\"1=1\""
}
]
}
A solicitação inclui uma sequência de caracteres de comentário de SQL, que o WAF detecta como um possível ataque de injeção de SQL.
Se você determinar que a solicitação é legítima, você poderá criar uma exclusão com uma variável de correspondência Request body JSON args name
, um operador Equals
e um seletor posts.comment
.
Excluir outros atributos da solicitação
Se a entrada de log do WAF mostrar um valor matchVariableName
que não esteja na tabela anterior, não será possível criar uma exclusão. Por exemplo, atualmente você não consegue criar exclusões de nomes de cookies, nomes de cabeçalho, nomes de parâmetros POST ou nomes de parâmetros de consulta.
Em vez disso, considere realizar uma das seguintes ações:
- Desabilite 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 do WAF.
De modo particular, quando o valor matchVariableName
é CookieName
, HeaderName
, PostParamName
ou QueryParamName
, significa que o nome do campo, e não o valor, disparou a regra. No momento, a exclusão de regra não dá suporte para esses valores matchVariableName
.
Próximas etapas
- Configurar listas de exclusão no WAF do Azure Front Door.
- Depois de definir as configurações do WAF, saiba como exibir os logs do WAF. Para obter mais informações, confira Diagnóstico do Azure Front Door.