Rules Engine for Edge Firewall

Edite no GitHub

O Rules Engine foi elaborado para que você implemente sua lógica de segurança na edge. Com base em critérios programáveis, você escolhe o que deseja fazer: bloquear, ignorar a requisição, limitar a taxa de acesso, aplicar uma política de WAF, executar uma edge function com seu próprio código de segurança ou simplesmente monitorar o tráfego para identificar ameaças.

  1. Como funciona?
  2. Regras
  3. Hands-on. Passo a passo para configurar o Azion Edge Firewall
  4. Hands-on. Criando uma configuração com Módulo Web Application Firewall usando Criteria e Behavior
  5. Hands-on. Criando uma configuração Web Application Firewall usando WAF Rule Set para sua aplicação

1. Como funciona?

Cada requisição de seus usuários para sua aplicação é processada primeiro pelo Edge Firewall.

Você pode definir um conjunto de regras de segurança no Edge Firewall. As regras são compostas por critérios, que representam as condições para execução da regra, e por comportamentos, que representam as ações que precisam ser executadas.

O processamento das regras é sequencial e você pode utilizar como critérios um poderoso conjunto de variáveis e operadores de comparação. Caso as condições sejam atendidas, os comportamentos de cada regra são executados até que todas as regras sejam processadas ou se encontre uma regra com um comportamento finalizador no caminho (Deny ou Drop).


2. Regras

As regras são compostas sempre por condições e comportamentos.

Criteria

Determinam o conjunto de condições que precisam ser atendidas para a execução dos Behaviors.

Variáveis

Criteria Descrição Requisitos
Header Accept Cabeçalho que informa quais tipos de mídia que o cliente aceita para a resposta. Web Application Firewall
Header Accept-Encoding Cabeçalho que informa quais os tipos de codificação de conteúdo, geralmente algoritmos de compressão, que o cliente aceita para a resposta. Web Application Firewall
Header Accept-Language Cabeçalho que informa sobre a linguagem esperada. Web Application Firewall
Header Cookie Cabeçalho que contém os cookies enviados pelo cliente na requisição para o servidor. Web Application Firewall
Header Origin Cabeçalho 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 caminho. Web Application Firewall
Header Referer Cabeçalho que indica o endereço do documento, ou elemento em um documento, a partir do qual a URI da requisição foi obtido. Web Application Firewall
Header User Agent Cabeçalho com uma sequência característica que permite que servidores identifiquem o aplicativo, sistema operacional, fornecedor e/ou versão do dispositivo. Web Application Firewall
Hostname Em ordem de precedência: o hostname da linha de requisição, ou o valor do campo de cabeçalho host da requisição, ou o nome do servidor atendendo a requisição. -
Network O 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 Args Todos os argumentos enviados pelo usuário na linha de requisição (query string). Web Application Firewall
Request Method O método HTTP da requisição. Por exemplo: GET, POST, PUT etc. -
Request URI A URI da requisição. -
Scheme O scheme da requisição: http ou https. -

Operadores de Comparação

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

Operador Descrição Argumento
is equal O valor da variável é igual ao argumento, comparado caracter a caracter. string
is not equal O valor da variável não é exatamente igual ao argumento. string
starts with O valor da variável inicia pelo argumento. string
does not start with O valor da variável não inicia pelo argumento. string
matches O valor da variável coincide com a expressão regular ou lista informada como argumento. regular expression
list
does not match O valor da variável não coincide com a expressão regular ou lista informada como argumento. regular expression
list
exists A variável tem valor definido. Por exemplo, Request Args existe se for enviado um argumento na query string da requisição. -
does not exist A 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 condições podem ser definidas por meio dos operadores lógicos and e or. O operador and tem precedência implícita sobre o operador or.

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

Behaviors

Em Behavior você adiciona os comportamentos que deseja executar caso as condições da regra sejam satisfeitas.

Behavior Descrição Requisitos
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 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: Average Rate Limit (req/s), que é a taxa limite, 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. -
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 Services > WAF. Web Application Firewall
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. Edge Functions

3. Hands-on. Passo a passo para configurar o Azion Edge Firewall

Passo 1: Criando uma nova Rule Set no Edge Firewall

  1. Acesse o Real-Time Manager e entre no menu Edge Services > Edge Firewall. Você visualizará a interface principal, onde poderá criar e administrar suas rule sets de Edge Firewall.

  2. Clique no botão Add Rule Set.

  3. Preencha os campos que aparecerão, conforme abaixo:

    Add Edge Firewall

    Atribua um nome sugestivo para seu Edge Application.

    Domain Settings

    Dentro desta seção, selecione os domínios para os quais você deseja que sejam aplicadas essas configurações.

    Edge Firewall Modules

    Habilite os módulos que julgar necessários para poder ter acesso às funcionalidades específicas de cada um. Os módulos disponíveis são:

    • Network Layer Protection
    • Web Application Firewall
    • Edge Functions
  4. Selecione o campo Active para ativar a rule set.

  5. Clique em Save para salvar.

Passo 2: Criando regras de segurança por meio do Rules Engine

  1. Selecione a aba Rules Engine.

  2. Clique em New Rule para adicionar uma nova regra.

  3. Preencha os campos que aparecerão, conforme abaixo:

    Rule Name

    Atribua um nome sugestivo para sua regra.

    Criteria

    Parametrize sua regra com os critérios que vão definir as condições para execução dos behaviors.

    • If: operador condicional. Selecione a variável, o operador de comparação e o valor a ser comparado.

      Ex: IF Request URI starts with /product. Essa condição testará toda requisição em que a URI começar com /product.

      Você pode combinar mais de uma condição dentro de uma mesma regra, basta ir adicionando regras por meio dos operadores lógicos And e Or.

    Behavior

    Defina a ação a ser executada caso a requisição coincida com os critérios definidos. Selecione o atributo, e, se necessário, selecione a condição e adicione o valor de referência. Algumas ações não necessitam de complemento, basta selecioná-las para que seu comportamento seja definido, como, por exemplo, na ação Deny (403 Forbidden), que irá retornar um HTTP Status Code 403 indicando que o servidor entendeu o pedido, mas se recusa a autorizá-lo.

    • Then: escolha uma das ações disponíveis. O conjunto de behaviors depende dos módulos do Edge Firewall habilitados. Algumas opções requerem o preenchimento de campos complementares.

      Ex: Then Set Rate Limit, Average Rate Limit (req/s) 2, Client IP Address, Maximum burst size 10. Nesse exemplo, para a ação Set Rate Limit, aparecerão os campos adicionais Average Rate Limit (req/s) e Maximum burst size, além da opção de seleção de restrição por endereço IP ou Global, ou seja, se a requisição satisfizer os critérios da regra, então será definido um rate limit de 2 requisições por segundo, por endereço IP, com um limite de rajada de 10 requisições.

  4. Selecione o campo Active para ativar a rule set.

  5. Clique em Save para salvar o Edge Firewall Rule Set


4. Hands-on. Criando uma configuração com Módulo Web Application Firewall usando Criteria e Behavior

Criar uma configuração com regras de negócio de Web Application Firewall por meio das Rules Engine. Ex: Rate Limit de 2 requests por segundo com burst de 10 para user-agent Googlebot.

  1. Selecione a aba Rules Engine;
  2. Clique em New Rule para adicionar uma nova regra.
  3. Preencha os campos que aparecerão, conforme abaixo:

Rule Name(Nome da sua regra)

Atribua um nome sugestivo para sua Rule Engine. Ex: Rate Limiting Googlebot.

Criteria

Parametrize sua Rule Engine com os critérios que vão definir a forma de atuação da sua regra.

  • IF: operador condicional. Selecione o atributo, selecione a condição e adicione o valor a ser testado.

    Ex: IF Request User-Agent Matches Googlebot . Essa condição testará toda requisição em que o cabeçalho user-agent contenha “Googlebot

    Ex: Header User Agent Matches Googlebot And Network Matches Azion Tor Exit Nodes - Nesse caso a regra só irá se enquadrar em requisições com cabeçalho contendo “Googlebot” e originadas na Rede Tor.

Behavior:

  • Then: escolha Set Rate Limit

    Ex: Then Set Rate Limit, Average Rate Limit (req/s) 2, Client IP Address, Maximum burst size 10. Nesse exemplo, para a ação Set Rate Limit, aparecerão os campos adicionais Average Rate Limit (req/s) e Maximum burst size, além da opção de seleção de restrição por endereço IP ou Global, ou seja, se a requisição satisfazer os critérios da Rule, então será definido um rate limit de 2 requisições por segundo, por endereço IP, com um limite de burst de 10 requisições.

  1. Seleicione o campo Active para ativar a rule set.
  2. Clique em Save para salvar o Edge Firewall Rule Set

5. Hands-on. Criando uma configuração Web Application Firewall usando WAF Rule Set para sua aplicação

Rule set é o conjunto de regras do WAF que habilita a proteção contra os mais variados tipos de ataque. Nela estão definidas as proteções que você deseja ativar, o nível de sensibilidade da detecção e a whitelist.

Criar uma configuração WAF dentro de seu Edge Firewall é muito simples, consiste nos seguintes passos:

  1. Acesse o Real-Time Manager, acesse o menu Edge Services > WAF. Você visualizará a interface principal onde poderá criar e administrar suas Web Application Firewall;
  2. Para incluir uma nova configuração de WAF, clique no botão Add;
  3. Preencha os campos que aparecerão, conforme abaixo:

    Name (nome do seu WAF)

    Atribua um nome sugestivo para seu WAF. Para criar uma rule set:

    Mode (modo de operação do WAF)

    • Counting: analisa todas as requisições e identifica aquelas com comportamento malicioso, porém não bloqueia, apenas contabiliza. Recomendamos utilizar esta opção apenas na etapa de aprendizagem(calibração) do seu WAF.
    • Blocking: analisa todas as requisições e bloqueia aquelas com comportamento malicioso.

    Threat Type (famílias de ameaças)

    Uma lista com as famílias ou tipos de ameaças tratadas pelo WAF é apresentada. Selecione o nível de sensibilidade do WAF que você deseja para cada uma em Sensitivity. Ative todos os tipos que julgar necessário, selecionando Status.

    Active

    Marque esta opção para ativar seu WAF.

  4. Clique em Save para salvar suas configurações.

Para que seu WAF entre efetivamente em ação é necessário associá-lo a um Behavior, dentro de uma Rule Engine de seu Edge Firewall:

  1. Acesse o Real-Time Manager e entre no menu Edge Services, selecione Edge Firewall.
  2. Adicione uma nova rule set clicando no botão Add Rule Set.
  3. Na aba Main Settings, habilite Web Application Firewall em Edge Firewall Modules e selecione um ou mais domains para receber a proteção do WAF.
  4. Salve sua rule set com um nome sugestivo. Você vai precisar dele para realizar posteriormente a configuração da Rule na aba Rules Engine.
  5. Na aba Rules Engine, na seção Behavior, no campo Then, selecione “Set WAF Rule Set” e associe o WAF Rule Set desejado. Certifique-se de que a opção Active está selecionada.
  6. Utilize o Analytics ou logs do WAF por meio dos produtos Real-Time Events e Data Streaming para acompanhar as ameaças detectadas.
Lembre-se: O WAF só bloqueia as ameaças se estiver configurado em Blocking Mode.

Não encontrou o que procurava? Abra um ticket.