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 comandos (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 Edge Firewall consulte o guia trabalhar com rules engine

Como funciona o Rules Engine para o Edge Firewall

Seção intitulada 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.

Um edge firewall é composto por:

  • Nome identificador.
  • Descrição.
  • Criteria.
  • Behaviors.
  • Active switch, para ativar/desativar sem excluir o edge firewall todo.

As Criteria determinam as condições que precisam ser atendidas para a execução dos Behaviors. A disponibilidade de Criteria e Behaviors dependem dos módulos de Edge Firewall ativados.

saiba mais sobre Edge Firewall

Variáveis disponíveis para Criteria

Seção intitulada Variaveis disponiveis para Criteria

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

CriteriaDescriçãoRequisitos
Header AcceptHeader que informa quais tipos de dado que o cliente aceita como respostaWeb 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 respostaWeb Application Firewall
Header Accept-LanguageHeader que informa a linguagem esperadaWeb Application Firewall
Header CookieHeader que contém os cookies enviados pelo cliente na requisição para o servidorWeb 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 caminhoWeb 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 obtidaWeb 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 dispositivoWeb Application Firewall
HostnameEm 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ção-
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)Network Layer Protection
Request ArgsTodos os argumentos enviados pelo usuário na linha de requisição (query string).Web Application Firewall
Request MethodO método HTTP da requisição. Por exemplo: GET, POST, PUT, etc.-
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-
SchemeO scheme da requisição: http ou https-
Client Certificate ValidationProcesso do servidor para autenticar o certificado digital do cliente-
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çã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çãoArgumento
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
lista
does not matchO valor da variável não coincide com a expressão regular ou lista informada como argumentoregular expression
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-

Múltiplas condições podem ser definidas 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.

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

Está é uma lista de todos os Behaviors disponíveis:

BehaviorDescriçãoRequisitos
Deny (403 Forbidden)Encerra a requisição com resposta HTTP 403 Forbidden-
Drop (Close Without Response)Encerra a requisição sem responder ao cliente-
Set Rate LimitDefine 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.
Nota: 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 SetAssocia 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 RulesWeb Application Firewall
Run FunctionExecuta uma função especificada como parâmetro. A função deve ter sido previamente instanciada e parametrizada na aba Functions para poder ser utilizadaEdge Functions
Set Custom ResponsePermite uma resposta personalizada quando a solicitaçã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

Seção intitulada Logica e execucao 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.


Contribuidores