Partilhar via


Regras personalizadas para o Firewall de Aplicativo Web do Azure na Porta da Frente do Azure

O Firewall de Aplicativo Web do Azure no Azure Front Door permite que você controle o acesso aos seus aplicativos Web com base nas condições definidas. Uma regra WAF (firewall de aplicativo Web) personalizada consiste em um número de prioridade, tipo de regra, condições de correspondência e uma ação.

Existem dois tipos de regras personalizadas: regras de correspondência e regras de limite de taxa. Uma regra de correspondência controla o acesso com base em um conjunto de condições correspondentes. Uma regra de limite de taxa controla o acesso com base nas condições correspondentes e nas taxas de solicitações recebidas. Você pode desabilitar uma regra personalizada para impedir que ela seja avaliada, mas ainda assim manter a configuração.

Para obter mais informações sobre limitação de taxa, consulte O que é limitação de taxa para o Azure Front Door?.

Prioridade, tipos de ação e condições de correspondência

Você pode controlar o acesso com uma regra WAF personalizada que define um número de prioridade, um tipo de regra, uma matriz de condições de correspondência e uma ação.

  • Prioridade

    Um inteiro exclusivo que descreve a ordem de avaliação das regras WAF. As regras com valores de prioridade mais baixa são avaliadas antes das regras com valores mais elevados. A avaliação da regra é interrompida em qualquer ação da regra, exceto Log. Os números de prioridade devem ser exclusivos entre todas as regras personalizadas.

  • Ação

    Define como rotear uma solicitação se uma regra WAF for correspondida. Você pode escolher uma das seguintes ações para aplicar quando uma solicitação corresponder a uma regra personalizada.

    • Permitir: o WAF permite que a solicitação seja processada, registra uma entrada nos logs do WAF e sai.
    • Bloqueio: A solicitação está bloqueada. O WAF envia uma resposta a um cliente sem encaminhar mais a solicitação. O WAF registra uma entrada nos logs e saídas do WAF.
    • Log: O WAF registra uma entrada nos logs do WAF e continua a avaliar a próxima regra na ordem de prioridade.
    • Redirecionamento: o WAF redireciona a solicitação para um URI especificado, registra uma entrada nos logs do WAF e sai.
  • Condição de correspondência

    Define uma variável de correspondência, um operador e um valor de correspondência. Cada regra pode conter várias condições de correspondência. Uma condição de correspondência pode ser baseada em localização geográfica, endereços IP do cliente (CIDR), tamanho ou correspondência de cadeia de caracteres. A correspondência de cadeia de caracteres pode ser contra uma lista de variáveis de correspondência.

    • Variável de correspondência

      • RequestMethod
      • QueryString
      • PostArgs
      • RequestUri
      • RequestHeader
      • RequestBody
      • Cookies
    • Operador

      • Qualquer: geralmente usado para definir a ação padrão se nenhuma regra for correspondida. Qualquer um é um operador de correspondência toda.
      • Igual
      • Contains
      • LessThan: Restrição de tamanho
      • GreaterThan: Restrição de tamanho
      • LessThanOrEqual: Restrição de tamanho
      • GreaterThanOrEqual: Restrição de tamanho
      • BeginsWith
      • EndsWith
      • Regex
    • Regex

      Não suporta as seguintes operações:

      • Backreferences e captura de subexpressões
      • Asserções arbitrárias de largura zero
      • Referências subrotineiras e padrões recursivos
      • Padrões condicionais
      • Verbos de controle de retrocesso
      • A diretiva de byte único \C
      • A diretiva \R newline match
      • A diretiva \K start of match reset
      • Textos explicativos e código incorporado
      • Agrupamento atómico e quantificadores possessivos
    • Negate [opcional]

      Você pode definir a negate condição como true se o resultado de uma condição deve ser negado.

    • 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:

      • Maiúsculas
      • Minúsculas
      • Trim
      • RemoveNulls
      • UrlDecode
      • UrlEncode
    • Valor correspondente

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

      • GET
      • POST
      • PUT
      • HEAD
      • DELETE
      • BLOQUEIO
      • DESBLOQUEAR
      • PERFIL
      • OPTIONS
      • PROPFIND
      • PROPPATCH
      • MKCOL
      • CÓPIA
      • MUDANÇA
      • PATCH
      • LIGAR

Exemplos

Considere os exemplos a seguir.

Corresponder com base em parâmetros de solicitação HTTP

Suponha que você precise configurar uma regra personalizada para permitir solicitações que correspondam às duas condições a seguir:

  • O Referer valor do cabeçalho é igual a um valor conhecido.
  • A cadeia de caracteres de consulta não contém a palavra password.

Aqui está um exemplo de descrição JSON da regra personalizada:

{
  "name": "AllowFromTrustedSites",
  "priority": 1,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestHeader",
      "selector": "Referer",
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "www.mytrustedsites.com/referpage.html"
      ]
    },
    {
      "matchVariable": "QueryString",
      "operator": "Contains",
      "matchValue": [
        "password"
      ],
      "negateCondition": true
    }
  ],
  "action": "Allow"
}

Bloquear solicitações HTTP PUT

Suponha que você precise bloquear qualquer solicitação que use o método HTTP PUT.

Aqui está um exemplo de descrição JSON da regra personalizada:

{
  "name": "BlockPUT",
  "priority": 2,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestMethod",
      "selector": null,
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "PUT"
      ]
    }
  ],
  "action": "Block"
}

Restrição de tamanho

Um WAF de porta frontal do Azure permite criar regras personalizadas que aplicam uma restrição de comprimento ou tamanho em uma parte de uma solicitação de entrada. Essa restrição de tamanho é medida em bytes.

Suponha que você precise bloquear solicitações em que o URL tenha mais de 100 caracteres.

Aqui está um exemplo de descrição JSON da regra personalizada:

{
  "name": "URLOver100",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "GreaterThanOrEqual",
      "negateCondition": false,
      "matchValue": [
        "100"
      ]
    }
  ],
  "action": "Block"
}

Corresponder com base no URI de solicitação

Suponha que você precise permitir solicitações em que o URI contém 'login'.

Aqui está um exemplo de descrição JSON da regra personalizada:

{
  "name": "URIContainsLogin",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "Contains",
      "negateCondition": false,
      "matchValue": [
        "login"
      ]
    }
  ],
  "action": "Allow"
}

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 Azure Front Door 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 Azure Front Door 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.

Próximos passos