Regras personalizadas da Firewall de Aplicações Web v2 no Gateway de Aplicação do Azure

O Firewall de Aplicativo Web do Gateway de Aplicativo do Azure (WAF) v2 vem com um conjunto de regras pré-configurado e gerenciado por plataforma que oferece proteção 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 em critérios de correspondência. Se a política WAF estiver definida para o modo de deteção e uma regra de bloqueio personalizada for acionada, a solicitação será registrada e nenhuma ação de bloqueio será executada.

As regras personalizadas permitem que você crie suas próprias regras que são avaliadas para cada solicitação que passa pelo WAF. Essas regras têm uma prioridade maior do que o resto das regras nos conjuntos de regras gerenciados. As regras personalizadas contêm um nome de regra, prioridade de regra e uma matriz de condições correspondentes. Se essas condições forem atendidas, uma ação será executada (para permitir, bloquear ou registrar). Se uma regra personalizada for acionada e uma ação de permissão ou bloqueio for executada, nenhuma outra regra personalizada ou gerenciada será avaliada. As regras personalizadas podem ser ativadas/desativadas sob demanda.

Por exemplo, você pode bloquear todas as solicitações de um endereço IP no intervalo 192.168.5.0/24. Nesta regra, o operador é IPMatch, matchValues é 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/desabilitado da regra.

As regras personalizadas suportam o uso da lógica de composição para criar 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:Condition 1 e rule1:Condition 2) ou rule2:Condition 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 são sempre compostas usando e. Por exemplo, bloqueie o tráfego de um endereço IP específico e somente se eles estiverem usando um determinado navegador.

Se você quiser usar ou entre duas condições diferentes, então 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 estiver usando um navegador específico.

Expressões regulares também são suportadas em regras personalizadas, assim como nos conjuntos de regras CRS. Para obter exemplos, consulte Exemplos 3 e 5 em Criar e usar regras personalizadas de firewall de aplicativos Web.

Nota

O número máximo de regras personalizadas do WAF é 100. Para obter mais informações sobre limites do Gateway de Aplicativo, consulte Limites de assinatura, cotas e restrições de serviço e assinatura do Azure.

Atenção

Qualquer regra de redirecionamento aplicada no nível do gateway de aplicativo ignorará as regras personalizadas do WAF. Consulte Visão geral do redirecionamento do Application Gateway para obter mais informações sobre regras de redirecionamento.

Permitir vs. bloquear

Permitir e bloquear o tráfego é simples com regras personalizadas. Por exemplo, você pode bloquear todo o tráfego proveniente 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, certifique-se de que o -Action parâmetro esteja definido como Allow. Para bloquear algo, verifique se o -Action parâmetro está definido como Block.

$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 anterior $BlockRule mapeia 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"
            ]
          }
        ]
      }
    ], 

Esta regra personalizada contém um nome, prioridade, uma ação e a matriz de condições correspondentes que devem ser atendidas para que a ação ocorra. Para mais explicações sobre estes campos, consulte as seguintes descrições de campos. Por exemplo, regras personalizadas, consulte Criar e usar regras personalizadas de firewall de aplicativos Web.

Campos para regras personalizadas

Nome [opcional]

O nome da regra. Aparece nos registos.

Ativar regra [opcional]

Ative ou desative esta regra. As regras personalizadas são ativadas por padrão.

Prioridade [obrigatório]

  • Determina a ordem de avaliação da regra. Quanto menor o valor, mais cedo a avaliação da regra. O intervalo permitido é de 1-100.
  • Deve ser exclusivo em todas as regras personalizadas. Uma regra com prioridade 40 é avaliada antes de uma regra com prioridade 80.

Tipo de regra [obrigatório]

Atualmente, deve ser MatchRule.

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

Deve ser uma das variáveis:

  • RemoteAddr – Endereço IPv4 / Alcance da conexão do computador remoto
  • RequestMethod – Método HTTP Request
  • QueryString – Variável no URI
  • PostArgs – Argumentos enviados no corpo do POST. As regras personalizadas que usam essa variável de correspondência só são aplicadas se o cabeçalho 'Content-Type' estiver definido como 'application/x-www-form-urlencoded' e 'multipart/form-data'. O tipo de conteúdo adicional é suportado com o CRS versão 3.2 ou superior, conjunto de regras de proteção de bot e regras personalizadas de application/json correspondência geográfica.
  • RequestUri – URI da solicitação
  • RequestHeaders – Cabeçalhos da solicitação
  • RequestBody – Esta variável contém todo o corpo da solicitação como um todo. As regras personalizadas que usam essa variável de correspondência só são aplicadas se o cabeçalho 'Content-Type' estiver definido como application/x-www-form-urlencoded tipo de mídia. Tipos de conteúdo adicionais são suportados com CRS versão 3.2 ou superior, conjunto de regras de proteção de bot e regras personalizadas de application/soap+xml, application/xml, text/xml correspondência geográfica.
  • RequestCookies – Cookies do pedido

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]

Deve ser um dos seguintes operadores:

  • IPMatch - usado apenas quando a variável Match é RemoteAddr e suporta apenas IPv4
  • Igual – a entrada é a mesma que o MatchValue
  • Qualquer – Não deve ter um MatchValue. É recomendado para Corresponder Variável com um Seletor válido.
  • Contains
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • GreaterThanOrEqual
  • BeginsWith
  • EndsWith
  • Regex
  • Geomatch

Condição de negata [opcional]

Nega a condição atual.

Transformar [opcional]

Uma lista de cadeias de caracteres com nomes de transformações a serem feitas antes que a correspondência seja tentada. Estas podem ser as seguintes transformações:

  • Minúsculas
  • Maiúsculas
  • Trim
  • UrlDecode
  • UrlEncode
  • RemoveNulls
  • HtmlEntityDecode

Corresponder valores [obrigatório]

Lista de valores a serem correspondidos, que podem ser considerados como OR'ed. Por exemplo, podem ser endereços IP ou outras cadeias de caracteres. O formato do valor depende do operador anterior.

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

  • GET
  • HEAD
  • POST
  • OPTIONS
  • PUT
  • DELETE
  • PATCH

Ação [obrigatório]

No modo de deteção de política WAF, se uma regra personalizada for acionada, a ação será sempre 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, uma vez correspondida, a solicitação interrompe a avaliação adicional e é enviada para o pool de back-end. As regras que estão na lista de permissões não são avaliadas para quaisquer outras regras personalizadas ou regras gerenciadas.
  • Bloquear - Bloqueia ou registra a transação com base em SecDefaultAction (modo de deteção/prevenção).
    • Modo de prevenção - Bloqueia a transação com base em SecDefaultAction. Assim como a ação, uma vez que a solicitação é avaliada e adicionada à lista de bloqueio, a avaliação é interrompida e a Allow solicitação é bloqueada. Qualquer solicitação depois que atenda às mesmas condições não é avaliada e é bloqueada.
    • Modo de deteção - Registra a transação com base em SecDefaultAction após o qual a avaliação é interrompida. Qualquer solicitação depois que atenda às mesmas condições não é avaliada e é apenas 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.

Cópia e duplicação de regras personalizadas

As regras personalizadas podem ser duplicadas dentro de uma determinada política. Ao duplicar uma regra, você precisa especificar um nome exclusivo para a regra e um valor de prioridade exclusivo. Além disso, as regras personalizadas podem ser copiadas de uma política WAF do Application Gateway para outra, desde que as políticas estejam ambas na mesma assinatura. Ao copiar uma regra de uma política para outra, você precisa selecionar a política WAF do Application Gateway para a qual deseja copiar a regra. Depois de selecionar a política WAF, você precisa dar à regra um nome exclusivo e atribuir uma classificação de prioridade.

Regras personalizadas de correspondência geográfica

As regras personalizadas permitem que você crie regras personalizadas para atender às necessidades exatas de seus aplicativos e políticas de segurança. Pode restringir o acesso às suas aplicações Web por país/região. Para obter mais informações, consulte Regras personalizadas de correspondência geográfica.

Próximos passos