Solucionando problemas no Firewall de Aplicações Web (WAF) para o Gateway de Aplicativo do Azure

Resumo

Este artigo ajuda você a solucionar problemas de WAF (Firewall de Aplicativo Web) para Gateway de Aplicativo do Azure quando solicitações legítimas são bloqueadas, para que você possa permitir o tráfego válido enquanto mantém a proteção.

Comece examinando a visão geral do WAF e a documentação de configuração do WAF e verifique se o monitoramento do WAF está habilitado. Estes artigos explicam como o WAF opera, como os conjuntos de regras funcionam e como acessar logs do WAF.

Os conjuntos de regras OWASP foram projetados para serem rígidos desde o início e podem ser ajustados para atender às necessidades específicas do aplicativo ou da organização que utiliza o WAF. É totalmente normal e esperado, em muitos casos, criar exclusões, regras personalizadas e até mesmo desabilitar regras que possam causar problemas ou falsos positivos. As políticas por site e por URI permitem que essas alterações afetem apenas sites ou URIs específicos. Portanto, as alterações não devem afetar outros sites que podem não estar tendo os mesmos problemas.

Entender os logs do WAF

A finalidade dos logs do WAF é mostrar cada solicitação que o WAF corresponde ou bloqueia. É um registro de todas as solicitações avaliadas que foram condizentes ou bloqueadas. Se você perceber que o WAF está bloqueando uma requisição que não deveria (um falso positivo), pode tomar algumas medidas. Primeiro, restrinja e localize a solicitação específica. Examine os logs para localizar o URI específico, o carimbo de data/hora ou a ID da transação da solicitação. Ao encontrar as entradas de log associadas, você pode começar a corrigir os falsos positivos.

Por exemplo, suponha que você tenha um tráfego legítimo contendo a string 1=1 que deseja passar pelo WAF. Se você tentar a solicitação, o WAF bloqueará o tráfego que contém sua 1=1 cadeia de caracteres em qualquer parâmetro ou campo. Essa cadeia de caracteres é frequentemente associada a um ataque de injeção de SQL. É possível analisar os logs e ver o registro de data e hora da solicitação, além das regras que bloquearam ou corresponderam à solicitação.

No exemplo a seguir, você pode ver que quatro regras são disparadas durante a mesma solicitação (usando o campo TransactionId). O primeiro indica que houve correspondência porque o usuário usou um endereço IP numérico para a solicitação, o que aumenta a pontuação de anomalia em três, por se tratar de um aviso. A próxima regra que correspondeu é 942130, que é a que você está procurando. Você pode ver o 1=1 no campo details.data. Isso eleva a pontuação de anomalia em três pontos novamente, já que também funciona como um aviso. Em geral, cada regra que tem a ação Correspondência encontrada aumenta a pontuação de anomalia e, nesse ponto, a pontuação de anomalia é seis. Para obter mais informações, consulte o modo de pontuação de anomalias.

As duas últimas entradas de log mostram que a solicitação foi bloqueada porque a pontuação de anomalias foi alta o suficiente. Essas entradas têm uma ação diferente das outras duas. Eles mostram que bloquearam a solicitação. Essas regras são obrigatórias e não podem ser desabilitadas. Não pense nessas regras como regras, e sim como parte da infraestrutura essencial dos componentes internos do WAF.

{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "920350",
        "message": "Host header is a numeric IP address",
        "action": "Matched",
        "site": "Global",
        "details": { 
            "message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
            "data": "40.90.218.160",
            "file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
            "line": "791" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    } 
} 
{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "942130",
        "message": "SQL Injection Attack: SQL Tautology Detected.",
        "action": "Matched",
        "site": "Global",
        "details": { 
            "message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
            "data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
            "file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
            "line": "554" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    } 
} 
{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
        "action": "Blocked",
        "site": "Global",
        "details": { 
            "message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
            "data": "",
            "file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
            "line": "57" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    } 
} 
{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
        "action": "Blocked",
        "site": "Global",
        "details": { 
            "message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
            "data": "",
            "file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
            "line": "73" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    }
}

Corrigir falsos positivos

Com essas informações e o conhecimento de que a regra 942130 é a que correspondeu à 1=1 cadeia de caracteres, você pode executar algumas etapas para impedir que essa regra bloqueie o tráfego:

  • Use uma lista de exclusão. Para obter mais informações sobre listas de exclusão, consulte listas de exclusão do WAF.

  • Desative a regra.

Atenuar falsos positivos do Paranoia Level 2

No OWASP CRS 3.2, as regras de injeção de SQL 942430, 942450 e 942440 pertencem ao Nível de Paranóia 2 (PL2). Se os logs do WAF mostrarem que uma solicitação de autenticação legítima correspondeu a uma dessas regras, identifique o campo de solicitação de contribuição antes de adicionar uma exclusão. Confirme se a solicitação é legítima e identifique sua ID de regra e o conjunto de regras configurado. Para descrições e substituições específicas da versão, consulte grupos de regras e regras do WAF. Não habilite uma regra inativa ou altere os conjuntos de regras apenas para seguir este exemplo.

  1. No Log Analytics, use a consulta a seguir se a configuração de diagnóstico enviar os logs do firewall para a tabela AzureDiagnostics. Substitua a ID do recurso e o intervalo de tempo pelo gateway e intervalo que você está investigando. Esses logs podem conter dados confidenciais de solicitação; não compartilhe valores de campo ou tokens de autenticação.

Execute a consulta a seguir.

AzureDiagnostics
| where TimeGenerated > ago(1h)
| where _ResourceId =~ "<application-gateway-resource-id>"
| where Category == "ApplicationGatewayFirewallLog"
| where ruleId_s in ("942430", "942440", "942450")
| project TimeGenerated, transactionId_g, requestUri_s,
    ruleId_s, action_s, details_message_s, details_data_s
| order by TimeGenerated desc
  1. Localize a transação para a solicitação com falha. Uma regra de contribuição pode ter ação Matched, enquanto uma regra separada de pontuação de anomalias bloqueia a transação. Para inspecionar todas as correspondências dessa transação, substitua o filtro de ID da regra por um filtro em transactionId_g. Não exclua uma regra de pontuação de anomalias em vez da regra de contribuição.
  2. Para um falso positivo confirmado, configure uma exclusão para o campo específico e apenas as IDs de regra de contribuição. As exclusões por regra exigem um conjunto de regras de política de WAF compatível, como o OWASP CRS 3.2. Use Equals para o seletor de campo e preserve outras regras e configurações de política existentes. Consulte o procedimento de CLI e PowerShell com escopo por regra e os exemplos de exclusão por regra. Para obter a descoberta de regras, consulte o guia de personalização do PowerShell e o guia de personalização da CLI.
  3. Leia novamente a política para confirmar que a exclusão contém a versão pretendida do conjunto de regras, o grupo, os IDs das regras, a variável de correspondência e o seletor. Uma exclusão global que já abrange esse campo ainda se aplica; adicionar uma exclusão mais estreita não a remove. Examine qualquer exclusão ampla existente separadamente em vez de limpar todas as exclusões.
  4. Repita a mesma solicitação legítima e verifique sua resposta e novos logs de transações. Confirme se a regra selecionada não corresponde mais ao campo excluído e investigue quaisquer outras regras de contribuição se a solicitação permanecer bloqueada. Uma consulta vazia, sem reprodução do tráfego e sem uma coleta de diagnóstico funcionando, não comprova o sucesso. Valide se os campos não relacionados permanecem inspecionados em um ambiente de teste controlado.

Não exclua automaticamente todas as três IDs ou todos os campos de autenticação. Mantenha o WAF no modo de prevenção para esta alteração específica. Se você precisar desfazer isso, remova apenas a exclusão com escopo de regra que você adicionou após revisar a política; preserve as exclusões preexistentes.

Usar uma lista de exclusão

Para tomar uma decisão informada sobre como lidar com um falso positivo, familiarize-se com as tecnologias que seu aplicativo usa. Por exemplo, se a sua pilha de tecnologia não incluir um servidor SQL e você estiver recebendo falsos positivos relacionados a essas regras, desativar essas regras não necessariamente reduzirá sua segurança.

Uma exclusão omite um atributo de solicitação selecionado da inspeção. Uma exclusão global se aplica a todas as regras gerenciadas, enquanto uma exclusão por regra se aplica apenas às regras selecionadas em um conjunto de regras com suporte. Ambos se aplicam em todos os lugares em que a política de WAF estiver associada, portanto verifique as aplicações e os caminhos da política antes de alterá-la. Por exemplo, excluir um campo pode criar um risco quando 1=1 é válido para um aplicativo, mas não outro que compartilha a política. Prefira uma exclusão com escopo restrito em vez de excluir toda a requisição.

Ocasionalmente, parâmetros específicos são passados para o WAF de uma maneira que pode não ser intuitiva. Por exemplo, há um token que é passado ao autenticar usando Microsoft Entra ID. __RequestVerificationToken geralmente é passado como um cookie de solicitação. No entanto, em alguns casos em que os cookies estão desabilitados, esse token também é passado como um atributo de solicitação ou arg. Se isso acontecer, você precisará garantir que __RequestVerificationToken também seja adicionado à lista de exclusão como um nome de atributo de solicitação .

Screenshot das configurações da lista de exclusão do WAF no portal Azure.

Neste exemplo, você deseja excluir o nome do atributo Request que é igual a text1. Esse nome de atributo é aparente porque você pode ver o nome do atributo nos logs de firewall: dados: Dados correspondentes: 1=1 encontrado em ARGS:text1: 1=1. O atributo é text1. Você também pode encontrar esse nome de atributo de algumas outras maneiras, consulte Localizando nomes de atributo de solicitação.

Captura de tela das opções de configuração do WAF para listas de exclusão no Gateway de Aplicativo.

Você pode criar exclusões para WAF no Gateway de Aplicativo em diferentes níveis de escopo. Para obter mais informações, consulte as listas de exclusão do Firewall de Aplicativo Web.

Desativar regras

Outra maneira de lidar com um falso positivo é desabilitar a regra que correspondia à entrada que o WAF achava mal-intencionada. Como você analisou os logs do WAF e reduziu a regra para 942130, você pode desabilitá-la no portal Azure. Consulte Personalize regras de firewall do aplicativo web por meio do portal Azure.

Se você souber que todo o tráfego que contém uma determinada condição normalmente bloqueada é o tráfego válido, você pode desabilitar essa regra para todo o WAF. No entanto, se for apenas um tráfego válido em um caso de uso específico, você abrirá uma vulnerabilidade desabilitando essa regra para todo o WAF, já que é uma configuração global.

Para usar Azure PowerShell, consulte Personalizar regras de firewall do aplicativo Web por meio do PowerShell. Para usar CLI do Azure, consulte Personalizar regras de firewall do aplicativo Web por meio do CLI do Azure.

Gravar arquivos HAR

Você pode usar seu navegador ou uma ferramenta externa como o Fiddler para gravar arquivos HTTP Archive (HAR). Os arquivos HAR contêm informações sobre as solicitações e respostas feitas pelo navegador ao carregar uma página da Web. Essas informações podem ser úteis para solucionar problemas do WAF.

Dica

É uma boa prática ter o arquivo HAR pronto quando você entra em contato com o suporte. A equipe de suporte pode usar o arquivo HAR para ajudar a diagnosticar o problema.

Para gravar e salvar um arquivo HAR no Microsoft Edge, siga estas etapas:

  1. Pressione F12 ou Ctrl+Shift+I para abrir a Ferramentas de desenvolvedor do Edge. Você também pode abrir as ferramentas no menu da barra de ferramentas, em Mais ferramentas>Ferramentas do desenvolvedor.

  2. Na guia Console , selecione Limpar console ou pressione Ctrl+L.

Captura de tela da guia Console das ferramentas de desenvolvedor do Microsoft Edge.

  1. Selecione a guia Rede .

  2. Selecione Limpar log de rede ou pressione Ctrl+L e, em seguida, selecione Registrar log de rede se ele não estiver gravando.

Screenshot da guia Rede das ferramentas de desenvolvedor do Microsoft Edge.

  1. Abra a página da web protegida pelo WAF para a qual você deseja solucionar problemas.

  2. Pare a gravação selecionando o Parar de gravar log de rede.

  3. Selecione Exportar HAR (sanitizado)... e salve o arquivo HAR.

Screenshot da opção Exportar HAR (sanitizado) nas ferramentas de desenvolvedor do Microsoft Edge.

Localizar nomes de atributo de solicitação

Use o Fiddler para inspecionar solicitações individuais e determinar quais campos específicos de uma página da Web são chamados. Usar essas informações ajuda você a excluir determinados campos da inspeção usando listas de exclusão.

Neste exemplo, você pode ver que o campo em que a string 1=1 foi inserida é chamado text1.

Captura de tela do Depurador da Web do Fiddler. Na guia Raw, 1=1 fica visível após o nome text1.

Esse é um campo que você pode excluir. Para saber mais sobre listas de exclusões, confira Listas de exclusões do Firewall do Aplicativo Web. Você pode excluir a avaliação nesse caso configurando a seguinte exclusão:

Captura de tela de uma exclusão de WAF configurada para um atributo de solicitação específico.

Você também pode examinar os logs de firewall para obter as informações para ver o que precisa adicionar à lista de exclusão. Para habilitar o registro em log, consulte integridade do back-end, logs de recursos e métricas para o Gateway de Aplicativo.

Examine o log de firewall e exiba o arquivo de PT1H.json para a hora em que a solicitação que você deseja inspecionar ocorreu.

Neste exemplo, você verá que tem quatro regras com a mesma TransactionID e que todas elas ocorreram exatamente ao mesmo tempo:

{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "920350",
        "message": "Host header is a numeric IP address",
        "action": "Matched",
        "site": "Global",
        "details": {
            "message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
            "data": "40.90.218.160",
            "file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
            "line": "791"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}
{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "942130",
        "message": "SQL Injection Attack: SQL Tautology Detected.",
        "action": "Matched",
        "site": "Global",
        "details": {
            "message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
            "data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
            "file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
            "line": "554"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}
{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
        "action": "Blocked",
        "site": "Global",
        "details": {
            "message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
            "data": "",
            "file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
            "line": "57"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}
{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
        "action": "Blocked",
        "site": "Global",
        "details": {
            "message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
            "data": "",
            "file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
            "line": "73"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}

Com seu conhecimento de como os conjuntos de regras CRS funcionam, e que o conjunto de regras CRS 3.0 opera com um sistema de pontuação de anomalias (veja Firewall de Aplicativo Web para Gateway de Aplicativo do Azure), você sabe que as duas regras inferiores com a propriedade action: Blocked estão bloqueando com base na pontuação total de anomalias. As regras em que se concentrar são as duas principais.

A primeira entrada é registrada porque o usuário usou um endereço IP numérico para navegar até o Gateway de Aplicativo, que você pode ignorar nesse caso.

A segunda entrada (regra 942130) é vista nos detalhes, pois corresponde a um padrão (1=1)e o campo é chamado text1. Siga as mesmas etapas anteriores para excluir o Nome do Atributo de Solicitaçãotext1igual a .

Localizar nomes de cabeçalho de solicitação

Use o Fiddler para localizar nomes de cabeçalho de solicitação. Na captura de tela a seguir, você pode ver os cabeçalhos dessa solicitação GET, que incluem Content-Type, User-Agent e outros cabeçalhos.

Captura de tela do Fiddler Web Debugger. A guia Raw lista os detalhes do cabeçalho da solicitação, como a conexão, o content-type e o user-agent.

Você também pode usar as ferramentas de desenvolvedor no Microsoft Edge ou no Google Chrome para exibir cabeçalhos de solicitação e resposta. Para obter mais informações, consulte Registrar arquivos HAR.

Se a solicitação contiver cookies, selecione a guia Cookies para exibi-los no Fiddler.

Restringir parâmetros globais para eliminar falsos positivos

  • Desativar a inspeção do corpo da solicitação

    Quando você define Inspecionar corpo da solicitação como desativado, o WAF não avalia os corpos das solicitações do seu tráfego. Essa configuração é útil se você souber que os corpos das solicitações não são maliciosos à sua aplicação.

    Quando você desabilitar essa opção, somente o corpo da solicitação ignora a inspeção. Os cabeçalhos e cookies ainda são inspecionados, a menos que você exclua os individuais usando a funcionalidade de lista de exclusão.

  • Desativar o limite máximo do corpo da solicitação

    Quando você desativar o limite máximo do corpo da solicitação, o WAF poderá processar corpos de solicitação grandes sem rejeitá-los por excederem o limite de tamanho. Essa configuração será útil se você tiver regularmente solicitações grandes.

    Quando você desabilitar essa opção, o corpo da solicitação será inspecionado apenas até o limite máximo de inspeção do corpo da solicitação. Se houver conteúdo mal-intencionado na solicitação além do limite máximo de inspeção do corpo da solicitação, o WAF não o detectará.

  • Desabilitar limites máximos de tamanho de arquivo

    Quando você desabilitar os limites de tamanho do arquivo para o WAF, arquivos grandes poderão ser carregados sem que o WAF rejeite esses uploads de arquivo. Ao permitir que arquivos grandes sejam carregados, o risco de seu back-end ser sobrecarregado aumenta. Se você souber o tamanho máximo que um upload de arquivo pode ter, defina um limite de tamanho para uploads de arquivo ligeiramente acima do tamanho máximo esperado. Limitar o tamanho do arquivo a um caso de uso normal para seu aplicativo é outra maneira de evitar ataques. No entanto, se os uploads de arquivo estiverem regularmente além do limite máximo de tamanho de carregamento de arquivo exequível, talvez seja necessário desabilitar totalmente os limites de tamanho de upload de arquivo para evitar falsos positivos.

    Observação

    Se você souber que seu aplicativo nunca precisa de qualquer upload de arquivo acima de um determinado tamanho, você pode restringir esse tamanho definindo um limite.

    Aviso

    Quando você atribui um novo conjunto de regras gerenciado a uma política de WAF, todas as personalizações anteriores dos conjuntos de regras gerenciados existentes, como estado de regra, ações de regra e exclusões de nível de regra, são redefinidas para os padrões do novo conjunto de regras gerenciado. No entanto, quaisquer regras personalizadas, configurações de política e exclusões globais permanecem inalteradas durante a nova atribuição do conjunto de regras.

Métricas de firewall (somente WAF v1)

Para firewalls de aplicativo Web v1, o portal agora fornece as seguintes métricas:

  1. Firewall de Aplicativo Web Contagem de Solicitações Bloqueadas O número de solicitações bloqueadas.
  2. Firewall de Aplicações Web Número de Regras Bloqueadas Todas as regras que correspondem and à solicitação bloqueada.
  3. Firewall de Aplicação Web Distribuição total de regras Todas as regras que correspondem aos critérios durante a avaliação.

Para habilitar as métricas, selecione a guia Métricas no portal e selecione uma das três métricas.

References