Rules Engine para Edge Firewall

Rules Engine para Edge Firewall é uma ferramenta projetada para implementação de lógicas de segurança no Edge Firewall. A aba de configurações do Rules Engine aparece dentro de um edge firewall criado.

O Rules Engine para Edge Firewall da Azion é programável. Dessa forma, você define quais são as condições (Criteria) e ações (Behaviors). Se as Criteria forem atendidas, os Behaviors serão executados.

Você pode usar o Rules Engine para Edge Firewall para configurar todos os aspectos operacionais dos firewalls de suas edge applications. Aqui estão alguns exemplos de implementações para as quais você pode utilizá-lo:

  • Bloquear requisições.
  • Ignorar requisições.
  • Limitar a taxa de acessos.
  • Aplicar políticas de Web Application Firewall (WAF).
  • Rodar Edge Functions para Edge Firewall com seu próprio código.
  • Monitorar tráfego para identificação de ameaças.

Um edge firewall pode ter quantas regras forem necessárias. Essas regras também são intercambiáveis, e você pode compartilhar a mesma regra com outras configurações de edge firewall.

Saiba mais sobre o Edge Firewall Consulte o guia para trabalhar com Rules Engine

Implementação

EscopoRecurso
Proteja sua aplicaçãoComo proteger uma aplicação
Configure as main settingsComo definir as main settings de um edge firewall
Crie um WAF rule setComo criar um WAF rule set
Bloqueie endereços IP de exit nodes TorComo bloquear endereços IP de exit nodes Tor

Como funciona o Rules Engine para o Edge Firewall

As requisições de seus usuários para sua aplicação são processadas primeiro pelo Edge Firewall. Você pode definir um conjunto de regras de segurança que serão executadas por esse Edge Firewall.

As regras são compostas por Criteria, que representam as condições para execução das regras, e por Behaviors, que representam as ações e comandos que serão executados.

O processamento das regras é sequencial e você pode usá-las aliadas a um poderoso conjunto de variáveis e operadores de comparação. Se as condições forem atendidas, os Behaviors de cada regra são executados até todas as regras serem processadas.


Nome

Cada regra deve ter um nome único e fácil de lembrar, permitindo que você a referencie e gerencie facilmente dentro do seu sistema.


Descrição

Além do nome da regra, você pode adicionar uma descrição para ela usando o campo Description. Sua descrição ficará visível na lista de regras e pode ser usada para identificar o que a regra faz.


Criteria

A seção de Criteria no Rules Engine for Edge Firewall serve para determinar as condições que precisam ser atendidas para a execução dos Behaviors. Critérios são compostos de:

  • Variáveis
  • Operadores de comparação
  • Operadores lógicos
  • Argumentos, quando aplicável

A inclusão de argumentos em um critério depende dos operadores de comparação escolhidos. O formato dos argumentos é descrito nas seções de variáveis e operadores de comparação abaixo. Você também pode adicionar operadores lógicos para aumentar a quantidade de comparações que a regra irá executar.

Por exemplo, este critério identifica requisições onde o URI começa com uma barra (”/”) para que o comportamento definido possa ser aplicado a elas.

VariávelOperador de comparaçãoArgumento
IfRequest URIstarts with/

Variáveis

Esta é a lista de todas as variáveis de Criteria disponíveis:

CriteriaDescriçãoExemploRequisitos
Header AcceptHeader que informa quais tipos de dado que o cliente aceita como respostaapplication/jsonWeb Application Firewall
Header Accept EncodingHeader que informa quais os tipos de codificação de conteúdo, geralmente algoritmos de compressão, que o cliente aceita como respostagzipWeb Application Firewall
Header Accept LanguageHeader que informa a linguagem esperadaen-USWeb Application Firewall
Header CookieHeader que contém os cookies enviados pelo cliente na requisição para o servidorsession_id=abc123Web Application Firewall
Header OriginHeader que informa a origem de uma requisição de acesso cross-site ou de uma requisição preflight. A origem é uma URI indicando o nome do servidor, sem nenhuma informação de caminhohttps://example.comWeb Application Firewall
Header RefererHeader que indica o endereço do documento, ou elemento em um documento, a partir do qual a URI da requisição foi obtidahttps://example.com/landing-pageWeb Application Firewall
Header User AgentHeader com uma sequência característica que permite que servidores identifiquem o aplicativo, sistema operacional, fornecedor e/ou versão do dispositivoMozilla/5.0Web Application Firewall
HostEm ordem de precedência: o hostname da linha de requisição, ou o valor do campo de header host da requisição, ou o nome do servidor atendendo a requisiçãoapi.example.com-
NetworkO endereço IP do cliente que está realizando a requisição HTTP, que poderá ser utilizado para qualquer comparação de rede (CIDR, ASN ou Country)1xx.xxx.x.0Network Layer Protection
Request ArgsTodos os argumentos enviados pelo usuário na linha de requisição (query string)page=1Web Application Firewall
Request MethodO método HTTP da requisição. Por exemplo: GET, POST, PUT, etc.POST-
Request URIRefere-se à variável uri da Rules Engine para Edge Applications. O URI normalizado (urldecoded) da requisição. O valor de uri pode mudar durante o processamento de uma requisição, por exemplo, quando ocorre um redirecionamento interno ou quando são utilizados arquivos de índice. Ele não carrega os parâmetros da Query String como request_uri faz/api/v1/-
SchemeO scheme da requisição: http ou httpshttps-
Client Certificate ValidationProcesso do servidor para autenticar o certificado digital do clientetrue-
SSL Verification StatusResultado do servidor para validação do certificado do cliente. Pode ser Success, quando a validação do certificado do cliente foi aprovada; Certificate Verification Error, quando o certificado do cliente não era válido; e Missing Client Certificate, quando o certificado do cliente não foi enviado na solicitaçãoCertificate Verification Error-

Operadores de comparação

A condição para a execução de uma regra deve ser a comparação de uma variável com um argumento. Os operadores de comparação são:

OperadorDescriçãoTipo de argumento
is equalO valor da variável é igual ao argumento, comparado caractere a caractereString
is not equalO valor da variável não é exatamente igual ao argumentoString
starts withO valor da variável inicia pelo argumentoString
does not start withO valor da variável não inicia pelo argumentoString
matchesO valor da variável coincide com a expressão regular ou lista informada como argumentoRegular expression ou lista
does not matchO valor da variável não coincide com a expressão regular ou lista informada como argumentoRegular expression ou lista
existsA variável tem valor definido. Por exemplo, Request Args existe se for enviado um argumento na query string da requisição-
does not existA variável não tem valor definido. Por exemplo, Request Args não existe se não for enviado um argumento na query string da requisição-

Operadores lógicos

Múltiplas critérios podem ser definidos por meio dos operadores lógicos And e Or.

Se necessária precedência explícita, você pode adicionar múltiplos grupos de critérios sob a lógica And.


Behaviors

Em Behaviors, você adiciona os comandos de ação que deseja executar se as Criteria forem atendidas.

Por exemplo, este comportamento executa a função especificada, permitindo que você execute lógica personalizada para o tratamento de requisições.

BehaviorArgumento
Run Function<name-of-the-instantiated-function>

Deny (403 Forbidden)

O comportamento encerra a requisição com resposta HTTP 403 Forbidden. Nenhum argumento é necessário.

Drop (Close Without Response)

O comportamento encerra a requisição sem responder ao cliente. Nenhum argumento é necessário.

Set Rate Limit

Define um limite de taxa de acesso que, se excedido, resultará em resposta HTTP 429 Too Many Requests. Para configurar Rate Limit, você deverá informar:

  • Type, é o campo para selecionar o tipo de requisição do Rate Limit, optando por Req/s (requisições por segundo) ou Req/Min (requisições por minuto).
  • Average Rate Limit, que é a taxa limite por segundo, propriamente dita.
  • Client IP address, se você deseja que a contabilização da taxa de acesso seja por endereço IP do cliente ou Global, caso deseje contabilização total da taxa de acesso.
  • Maximum burst size, que indica o tamanho máximo da rajada de requisições HTTP enviadas simultaneamente, as quais serão enfileiradas e despachadas gradualmente, respeitando-se a taxa limite.
    • O valor configurado será o Rate Limit em cada Azion Edge Node, implementado por meio do algoritmo de Leaky Bucket. Recomendamos que você utilize Maximum burst size no máximo 10 vezes o valor configurado em Average Rate Limit, o que resultaria em penalizar a última requisição de uma rajada com até 10 segundos de atraso.

O Rate Limite é aplicado por endereço de IP ou por Global e por regra, e se uma regra possui mais de uma URI especificada e possui o condicional Or, o limite de taxa de acesso será compartilhado entre as URIs. Crie diferentes regras se você deseja ter um limite de taxa de acesso para cada URI.

Set WAF Rule Set

Associa a Rule Set de WAF que deve ser utilizada na requisição. As políticas de WAF devem ser previamente configuradas no menu Edge Libraries > *WAF Rules. Você também deve definir o modo WAF: Learning ou Blocking. Leia mais sobre WAF Rule Sets.

Run Function

Executa uma função especificada como parâmetro. A função deve ter sido previamente instanciada e parametrizada na aba Functions para poder ser utilizada.

Set Custom Response

Permite uma resposta personalizada quando a requisição atende aos critérios. Você pode personalizar o Status Code alterando-o de 200 para 499, por exemplo, e o header Content Type e o Content Body da sua solicitação com no máximo 500 caracteres.

Lógica e execução de behaviors

Enquanto behaviors e regras são executados na ordem em que são distribuidos, alguns tipos de behaviors não podem ser encadeados.

Se um behavior do tipo Set, como Set Custom Response no Edge Firewall ou Set Origin no Edge Application, for adicionado múltiplas vezes a regras no Rules Engine, apenas o último behavior da última regra na qual o criteria foi atendido será executado.

Behaviors do tipo Add são cumulativos e podem ser adicionados várias vezes às regras. Isso significa que se Add Cookie e Add Header forem executados várias vezes para os mesmos pares key-value, múltiplas entradas idênticas serão adicionadas.

No entanto, para cabeçalhos únicos como Host, o último behavior do tipo Add Header que é executado sobrescreverá o valor anterior, já que não pode haver mais de um cabeçalho Host em uma requisição.

Alguns behaviors, como Deny, podem finalizar a execução das regras. Se uma sequência de regras inclui tal behavior, quaisquer regras ou behaviors que sigam este tipo de comportamento finalizador não serão executados.


Debug de regras

Você pode depurar regras criadas com o Rules Engine para Edge Firewall através da GraphQL API, Data Stream ou Real-Time Events.


Contribuidores