Regras personalizadas do Firewall de Aplicativo Web v2 no Gateway de Aplicativo do Azure

Aplica-se a: ✔️ Gateway de Aplicativo V2

O Gateway de Aplicativo do Azure Firewall de Aplicativo Web (WAF) v2 inclui um conjunto de regras pré-configurado e gerenciado pela plataforma que protege contra muitos tipos diferentes de ataques. Esses ataques incluem scripts entre sites, injeção de SQL e outros. Se você for um administrador do WAF, talvez queira escrever suas próprias regras para aumentar as regras do conjunto de regras principais (CRS). Suas regras personalizadas podem bloquear, permitir ou registrar o tráfego solicitado com base nos critérios de correspondência. Se você definir a política do WAF para o modo de detecção e uma regra de bloqueio personalizada for acionada, a solicitação será registrada e nenhuma ação de bloqueio será executada.

Use regras personalizadas para criar suas próprias regras que o WAF avalia para cada solicitação. Essas regras têm uma prioridade maior do que o restante das regras nos conjuntos de regras gerenciadas. As regras personalizadas contêm um nome de regra, prioridade de regra e a matriz de condições de correspondência. Se essas condições forem atendidas, o WAF executará uma ação para permitir, bloquear ou registrar. Se uma regra personalizada disparar e o WAF executar uma ação de permissão ou bloqueio, o WAF não executará nenhuma ação adicional de regras personalizadas ou gerenciadas. No caso de uma regra personalizada disparar uma ação de permitir ou bloquear, você ainda poderá ver eventos de log relacionados a correspondências de regras do conjunto de regras configurado (Conjunto de Regras Principais/Conjunto de Regras Padrão), embora essas regras não sejam aplicadas. Os eventos de log são mostrados apenas devido à otimização aplicada pelo mecanismo WAF para processamento paralelo de regras e podem ser ignorados com segurança. Você pode habilitar ou desabilitar regras personalizadas sob demanda.

Por exemplo, você pode bloquear todas as solicitações provenientes de endereços IP pertencentes ao intervalo 192.168.5.0/24. Nessa regra, o operador é o IPMatch, os valores de correspondência são o intervalo de endereços IP (192.168.5.0/24) e a ação é bloquear o tráfego. Você também define o nome, a prioridade e o estado habilitado ou desabilitado da regra.

As regras personalizadas dão suporte ao uso da lógica de composição para fazer regras mais avançadas que atendam às suas necessidades de segurança. Por exemplo, você pode usar duas regras personalizadas para criar a seguinte lógica ((rule1:Condição 1 e rule1:Condição 2) ou rule2:Condição 3). Essa lógica significa que, se a Condição 1 e a Condição 2 forem atendidas ou se a Condição 3 for atendida, o WAF deverá executar a ação especificada nas regras personalizadas.

Diferentes condições de correspondência dentro da mesma regra sempre são compostas usando e. Por exemplo, bloqueie o tráfego de um endereço IP específico, somente se ele estiver usando um determinado navegador.

Se você quiser usar ou entre duas condições diferentes, as duas condições devem estar em regras diferentes. Por exemplo, bloqueie o tráfego de um endereço IP específico ou bloqueie o tráfego se ele estiver usando um navegador específico.

As regras personalizadas também dão suporte a expressões regulares, assim como nos conjuntos de regras do CRS. Para ver mais exemplos, confira os exemplos 3 e 5 em Criar e usar regras personalizadas de Firewall de Aplicativo Web.

Observação

Você pode criar até 100 regras personalizadas do WAF. Para obter mais informações sobre os limites do Gateway de Aplicativo, confira Assinatura do Azure e limites de serviços, cotas e restrições.

Atenção

Todas as regras de redirecionamento que você aplicar no nível do gateway de aplicativo ignoram as regras personalizadas do WAF. Confira mais informações em Visão geral de redirecionamento do Gateway de Aplicativo.

Permitindo vs. bloqueando

Você pode facilmente permitir ou bloquear o tráfego usando regras personalizadas. Por exemplo, você pode bloquear todo o tráfego de um intervalo de endereços IP. Você pode criar outra regra para permitir o tráfego se a solicitação vier de um navegador específico.

Para permitir algo, defina o -Action parâmetro como Permitir. Para bloquear algo, defina o -Action parâmetro como Bloquear.

$AllowRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example1 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Allow `
   -State Enabled

$BlockRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example2 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Block `
   -State Enabled

O $BlockRule anterior é mapeado para a seguinte regra personalizada no Azure Resource Manager:

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "state": "Enabled",
        "matchConditions": [
          {
            "matchVariables": [
              {
                "variableName": "RequestHeaders",
                "selector": "User-Agent"
              }
            ],
            "operator": "Contains",
            "negationCondition": false,
            "matchValues": [
              "evilbot"
            ],
            "transforms": [
              "Lowercase"
            ]
          }
        ]
      }
    ], 

Essa regra personalizada contém um nome, uma prioridade, uma ação e a matriz de condições de correspondência que devem ser atendidas para que a ação ocorra. Para obter mais explicações sobre esses campos, confira as descrições de campo a seguir. Para ver exemplos de regras personalizadas, confira Criar e usar regras personalizadas de Firewall de Aplicativo Web.

Observação

As regras personalizadas do WAF não dão suporte à permissão ou bloqueio de solicitações com base em nomes de arquivo ou tipos de arquivo.

Campos para regras personalizadas

Nome [opcional]

O nome da regra. Aparece nos logs.

Habilitar a regra [opcional]

Ative ou desative essa regra. As regras personalizadas estão ativadas por padrão.

Prioridade [obrigatório]

  • Determina a ordem de avaliação da regra. Quanto menor o valor, mais cedo será a avaliação da regra. O intervalo permitido é de 1 a 100.
  • Deve ser exclusivo para cada regra personalizada. A regra com prioridade 40 será avaliada antes da regra com prioridade 80.

Tipo de regra [obrigatório]

No momento, deve ser MatchRule.

Variável de correspondência [obrigatório]

Deve ser uma das variáveis:

  • RemoteAddr – Endereço IPv4 ou intervalo da conexão de computador remoto
  • RequestMethod – método de solicitação HTTP
  • QueryString – Variável no URI
  • PostArgs – Argumentos enviados no corpo do POST. As regras personalizadas que usam essa variável de correspondência se aplicam somente se o cabeçalho 'Content-Type' estiver definido como 'application/x-www-form-urlencoded' ou 'multipart/form-data'. A versão 3.2 ou superior do CRS dá suporte a um tipo de conteúdo adicional de application/json, juntamente com o conjunto de regras de proteção de bot e regras personalizadas de correspondência geográfica.
  • RequestUri – URI da solicitação
  • RequestHeaders – Cabeçalhos da solicitação
  • RequestBody – Essa variável contém todo o corpo da solicitação como um todo. As regras personalizadas que usam essa variável de correspondência se aplicam somente se o cabeçalho 'Content-Type' estiver definido como application/x-www-form-urlencoded tipo de mídia. A versão 3.2 ou superior do CRS dá suporte a tipos de conteúdo adicionais application/soap+xml, application/xml, text/xml, juntamente com o conjunto de regras de proteção contra bots e regras personalizadas de correspondência geográfica.
  • RequestCookies – Cookies da solicitação

Seletor [opcional]

Descreve o campo da coleção matchVariable. Por exemplo, se matchVariable for RequestHeaders, o seletor poderá estar no cabeçalho User-Agent.

Operador [obrigatório]

Use um dos seguintes operadores:

  • IPMatch – Use somente quando a Variável de Correspondência for RemoteAddr e ela oferecer suporte apenas a IPv4.
  • Equal - Use quando a entrada for a mesma que o MatchValue.
  • Any - Use quando não houver MatchValue. É recomendável para Variável de Correspondência com um Selector válido.
  • Contains - Use quando MatchValue for somente um valor explícito. Não há suporte para curinga e regex.
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • GreaterThanOrEqual
  • BeginsWith
  • EndsWith
  • Regex
  • Geomatch

Negar condição [opcional]

Nega a condição atual.

Transformação [opcional]

Uma lista de valores de cadeia de caracteres que especificam transformações a serem aplicadas antes de tentar uma correspondência. As transformações disponíveis incluem:

  • Letras minúsculas
  • Letras Maiúsculas
  • Trim
  • UrlDecode
  • UrlEncode
  • RemoveNulls
  • HtmlEntityDecode

Valores de correspondência [obrigatório]

Uma lista de valores a serem correspondidos, que você pode considerar como unidos por um operador OU. Por exemplo, a lista pode conter endereços IP ou outras cadeias de caracteres. O formato do valor depende do operador anterior.

Observação

Se o WAF estiver executando o Conjunto de Regras Básico (CRS) 3.1 ou qualquer outra versão anterior do CRS, o valor de correspondência aceitará apenas letras, números e marcas de pontuação. As aspas ", ' e os espaços não têm suporte.

Os valores do método de solicitação HTTP cm suporte incluem:

  • GET
  • CABEÇA
  • POST
  • OPÇÕES
  • PUT
  • Delete (excluir)
  • PATCH

Ação [obrigatório]

No modo de detecção de política do WAF, se uma regra personalizada for disparada, a ação sempre será registrada, independentemente do valor da ação definido na regra personalizada.

  • Permitir – Autoriza a transação, ignorando todas as outras regras. A solicitação especificada é adicionada à lista de permissões e, quando correspondida, a solicitação interrompe a avaliação adicional e é enviada ao pool de back-end. As regras que estão na lista de permitidos não são avaliadas quanto a outras regras personalizadas ou gerenciadas.
  • Bloquear – bloqueia ou registra a transação com base em SecDefaultAction (modo de detecção ou prevenção). – Modo de prevenção – bloqueia a transação com base em SecDefaultAction. Assim como a ação Allow , depois que a solicitação é avaliada e adicionada à lista de bloqueios, a avaliação é interrompida e a solicitação é bloqueada. Qualquer solicitação posterior que atenda às mesmas condições não será avaliada e será bloqueada.
    • Modo de detecção – registra a transação com base em SecDefaultAction após a qual a avaliação é interrompida. Qualquer solicitação posterior que atenda às mesmas condições não é avaliada e registrada.
  • Log – Permite que a regra grave no log, mas permite que o restante das regras seja executado para avaliação. As outras regras personalizadas são avaliadas em ordem de prioridade, seguidas pelas regras gerenciadas.

Copiar e duplicar regras personalizadas

Você pode duplicar regras personalizadas em uma determinada política. Quando você duplica uma regra, precisa especificar um nome exclusivo para a regra e um valor de prioridade exclusivo. Além disso, você pode copiar regras personalizadas de uma política de WAF do Gateway de Aplicações para outra, desde que as políticas estejam na mesma assinatura. Quando você copia uma regra de uma política para outra, é necessário selecionar a política de WAF do Gateway de Aplicativo na qual deseja copiar a regra. Depois de selecionar a política do WAF, você precisará dar um nome exclusivo à regra e atribuir uma classificação de prioridade.

Regras personalizadas do Geomatch

As regras personalizadas permitem que você crie regras adaptadas para atender às necessidades exatas dos seus aplicativos e das suas políticas de segurança. Você pode restringir o acesso aos seus aplicativos Web por país ou região. Para obter mais informações, consulte Regras personalizadas do Geomatch.

Próxima etapa