Regras personalizadas para o Firewall do aplicativo Web V2 no Aplicativo Azure gatewayCustom rules for Web Application Firewall v2 on Azure Application Gateway

O Firewall do aplicativo Web do Aplicativo Azure gateway (WAF) V2 vem com um conjunto de regras pré-configurado gerenciado por plataforma que oferece proteção contra vários tipos diferentes de ataques.The Azure Application Gateway Web Application Firewall (WAF) v2 comes with a pre-configured, platform-managed ruleset that offers protection from many different types of attacks. Esses ataques incluem scripts entre sites, injeção de SQL e outros.These attacks include cross site scripting, SQL injection, and others. Se você for um administrador do WAF, convém escrever suas próprias regras para ampliar as regras do CRS (conjunto de regras principais).If you're a WAF admin, you may want to write your own rules to augment the core rule set (CRS) rules. Suas regras podem bloquear ou permitir o tráfego solicitado com base nos critérios de correspondência.Your rules can either block or allow requested traffic based on matching criteria.

As regras personalizadas permitem que você crie suas próprias regras que são avaliadas para cada solicitação que passa pelo WAF.Custom rules allow you to create your own rules that are evaluated for each request that passes through the WAF. Essas regras têm uma prioridade mais alta do que o restante das regras nos conjuntos de regras gerenciadas.These rules hold a higher priority than the rest of the rules in the managed rule sets. As regras personalizadas contêm um nome de regra, prioridade de regra e uma matriz de condições de correspondência.The custom rules contain a rule name, rule priority, and an array of matching conditions. Se essas condições forem atendidas, uma ação será tomada (para permitir ou bloquear).If these conditions are met, an action is taken (to allow or block).

Por exemplo, você pode bloquear todas as solicitações de um endereço IP no intervalo 192.168.5.4/24.For example, you can block all requests from an IP address in the range 192.168.5.4/24. Nessa regra, o operador é IPMatch, o matchValues é o intervalo de endereços IP (192.168.5.4/24) e a ação é bloquear o tráfego.In this rule, the operator is IPMatch, the matchValues is the IP address range (192.168.5.4/24), and the action is to block the traffic. Você também define o nome e a prioridade da regra.You also set the rule's name and priority.

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.Custom rules support using compounding logic to make more advanced rules that address your security needs. Por exemplo, (condição 1 e condição 2) ou condição 3).For example, (Condition 1 and Condition 2) or Condition 3). Isso 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 na regra personalizada.This means that if Condition 1 and Condition 2 are met, or if Condition 3 is met, the WAF should take the action specified in the custom rule.

Diferentes condições de correspondência dentro da mesma regra sempre são compostas usando e.Different matching conditions within the same rule are always compounded using and. Por exemplo, bloqueie o tráfego de um endereço IP específico e somente se eles estiverem usando um determinado navegador.For example, block traffic from a specific IP address, and only if they're using a certain browser.

Se você quiser ou duas condições diferentes, as duas condições deverão estar em regras diferentes.If you want to or two different conditions, the two conditions must be in different rules. Por exemplo, bloqueie o tráfego de um endereço IP específico ou bloqueie o tráfego se eles estiverem usando um navegador específico.For example, block traffic from a specific IP address or block traffic if they're using a specific browser.

Observação

O número máximo de regras personalizadas de WAF é 100.The maximum number of WAF custom rules is 100. Para obter mais informações sobre os limites do gateway de aplicativo, consulte assinatura e limites de serviço, cotas e restrições do Azure.For more information about Application Gateway limits, see Azure subscription and service limits, quotas, and constraints.

Também há suporte para expressões regulares em regras personalizadas, assim como nos conjuntos de regras do CRS.Regular expressions are also supported in custom rules, just like in the CRS rulesets. Para obter exemplos, consulte os exemplos 3 e 5 em criar e usar regras personalizadas de firewall do aplicativo Web.For examples, see Examples 3 and 5 in Create and use custom web application firewall rules.

Permitindo vs. bloqueioAllowing vs. blocking

Permitir e bloquear o tráfego é simples com regras personalizadas.Allowing and blocking traffic is simple with custom rules. Por exemplo, você pode bloquear todo o tráfego proveniente de um intervalo de endereços IP.For example, you can block all traffic coming from a range of IP addresses. Você pode fazer outra regra para permitir o tráfego se a solicitação vier de um navegador específico.You can make another rule to allow traffic if the request comes from a specific browser.

Para permitir algo, verifique se o -Action parâmetro está definido como permitir.To allow something, ensure that the -Action parameter is set to Allow. Para bloquear algo, verifique se o -Action parâmetro está definido como Bloquear.To block something, ensure that the -Action parameter is set to Block.

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

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

Os $BlockRule mapas anteriores para a seguinte regra personalizada no Azure Resource Manager:The previous $BlockRule maps to the following custom rule in Azure Resource Manager:

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "matchConditions": [
          {
            "matchVariables": [
              {
                "variableName": "RequestHeaders",
                "selector": "User-Agent"
              }
            ],
            "operator": "Contains",
            "negationConditon": 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.This custom rule contains a name, priority, an action, and the array of matching conditions that must be met for the action to take place. Para obter mais explicações sobre esses campos, consulte as descrições de campo a seguir.For further explanation of these fields, see the following field descriptions. Por exemplo, regras personalizadas, consulte criar e usar regras personalizadas de firewall do aplicativo Web.For example custom rules, see Create and use custom web application firewall rules.

Campos para regras personalizadasFields for custom rules

Nome [opcional]Name [optional]

O nome da regra.The name of the rule. Ele aparece nos logs.It appears in the logs.

Prioridade [obrigatório]Priority [required]

  • Determina a ordem de avaliação da regra.Determines the rule valuation order. Quanto menor o valor, mais cedo a avaliação da regra.The lower the value, the earlier the evaluation of the rule. O intervalo permitido é de 1-100.The allowable range is from 1-100.
  • Deve ser exclusivo em todas as regras personalizadas.Must be unique across all custom rules. Uma regra com prioridade 40 é avaliada antes de uma regra com prioridade 80.A rule with priority 40 is evaluated before a rule with priority 80.

Tipo de regra [obrigatório]Rule type [required]

No momento, deve ser MatchRule.Currently, must be MatchRule.

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

Deve ser uma das variáveis:Must be one of the variables:

  • RemoteAddr – endereço IP/nome do host da conexão do computador remotoRemoteAddr – IP Address/hostname of the remote computer connection
  • RequestMethod – método de solicitação HTTP (GET, POST, PUT, DELETE e assim por diante).RequestMethod – HTTP Request method (GET, POST, PUT, DELETE, and so on.)
  • QueryString – variável no URIQueryString – Variable in the URI
  • POST args – argumentos enviados no corpo da postagem.PostArgs – Arguments sent in the POST body. As regras personalizadas que usam essa variável de correspondência serão aplicadas somente se o cabeçalho ' Content-Type ' estiver definido como ' application/x-www-form-urlencoded ' e ' multipart/form-data '.Custom Rules using this match variable are only applied if the 'Content-Type' header is set to 'application/x-www-form-urlencoded' and 'multipart/form-data'.
  • RequestUri – URI da solicitaçãoRequestUri – URI of the request
  • RequestHeaders – cabeçalhos da solicitaçãoRequestHeaders – Headers of the request
  • RequestBody – contém todo o corpo da solicitação como um todo.RequestBody – This contains the entire request body as a whole. As regras personalizadas que usam essa variável de correspondência serão aplicadas somente se o cabeçalho ' Content-Type ' estiver definido como ' application/x-www-form-urlencoded '.Custom rules using this match variable are only applied if the 'Content-Type' header is set to 'application/x-www-form-urlencoded'.
  • RequestCookies – cookies da solicitaçãoRequestCookies – Cookies of the request

Seletor [opcional]Selector [optional]

Descreve o campo da coleção matchVariable.Describes the field of the matchVariable collection. Por exemplo, se matchVariable for RequestHeaders, o seletor poderá estar no cabeçalho User-Agent .For example, if the matchVariable is RequestHeaders, the selector could be on the User-Agent header.

Operador [obrigatório]Operator [required]

Deve ser um dos seguintes operadores:Must be one of the following operators:

  • IPMatch-usado somente quando a variável de correspondência é RemoteAddrIPMatch - only used when Match Variable is RemoteAddr
  • Igual – a entrada é a mesma que a CorrespondênciavalueEqual – input is the same as the MatchValue
  • ContémContains
  • LessThanLessThan
  • GreaterThanGreaterThan
  • LessThanOrEqualLessThanOrEqual
  • GreaterThanOrEqualGreaterThanOrEqual
  • BeginsWithBeginsWith
  • EndsWithEndsWith
  • RegexRegex
  • Correspondência geocombinada (versão prévia)Geomatch (preview)

Negar condição [opcional]Negate condition [optional]

Nega a condição atual.Negates the current condition.

Transformar [opcional]Transform [optional]

Uma lista de cadeias de caracteres com nomes de transformações a serem realizadas antes da tentativa de correspondência.A list of strings with names of transformations to do before the match is attempted. Elas podem ser as seguintes transformações:These can be the following transformations:

  • Letras minúsculasLowercase
  • TrimTrim
  • UrlDecodeUrlDecode
  • UrlEncodeUrlEncode
  • RemoveNullsRemoveNulls
  • HtmlEntityDecodeHtmlEntityDecode

Valores de correspondência [obrigatório]Match values [required]

Lista de valores a serem correspondidos, que pode ser considerada como sendo ou' Ed '.List of values to match against, which can be thought of as being OR'ed. Por exemplo, pode ser endereços IP ou outras cadeias de caracteres.For example, it could be IP addresses or other strings. O formato do valor depende do operador anterior.The value format depends on the previous operator.

Ação [obrigatório]Action [required]

  • Permitir – autoriza a transação, ignorando todas as outras regras.Allow – Authorizes the transaction, skipping all other rules. A solicitação especificada é adicionada à lista de permissões e, uma vez correspondente, a solicitação para uma avaliação adicional e é enviada para o pool de back-end.The specified request is added to the allow list and once matched, the request stops further evaluation and is sent to the backend pool. As regras que estão na lista de permissões não são avaliadas para outras regras personalizadas ou regras gerenciadas.Rules that are on the allow list aren't evaluated for any further custom rules or managed rules.
  • Block – bloqueia a transação com base em SecDefaultAction (modo de detecção/prevenção).Block – Blocks the transaction based on SecDefaultAction (detection/prevention mode). Assim como a ação permitir, depois que a solicitação é avaliada e adicionada à lista de bloqueios, a avaliação é interrompida e a solicitação é bloqueada.Just like the Allow action, once the request is evaluated and added to the block list, evaluation is stopped and the request is blocked. Qualquer solicitação após isso atende às mesmas condições não será avaliada e será bloqueada.Any request after that meets the same conditions won't be evaluated and will just be blocked.
  • Log – permite que a regra grave no log, mas permite que o restante das regras seja executado para avaliação.Log – Lets the rule write to the log, but lets the rest of the rules run for evaluation. As outras regras personalizadas são avaliadas em ordem de prioridade, seguidas pelas regras gerenciadas.The other custom rules are evaluated in order of priority, followed by the managed rules.

Regras personalizadas do Geomatch (versão prévia)Geomatch custom rules (preview)

As regras personalizadas permitem que você crie regras adaptadas para atender às necessidades exatas de seus aplicativos e políticas de segurança.Custom rules let you create tailored rules to suit the exact needs of your applications and security policies. Você pode restringir o acesso a seus aplicativos Web por país/região.You can restrict access to your web applications by country/region. Para obter mais informações, consulte regras personalizadas geocombinadoras (versão prévia).For more information, see Geomatch custom rules (preview).

Próximas etapasNext steps

Depois de aprender sobre regras personalizadas, crie suas próprias regras personalizadas.After you learn about custom rules, create your own custom rules.