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 EngineImplementação
Escopo | Recurso |
---|---|
Proteja sua aplicação | Como proteger uma aplicação |
Configure as main settings | Como definir as main settings de um edge firewall |
Crie um WAF rule set | Como criar um WAF rule set |
Bloqueie endereços IP de exit nodes Tor | Como 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ável | Operador de comparação | Argumento | |
---|---|---|---|
If | Request URI | starts with | / |
Variáveis
Esta é a lista de todas as variáveis de Criteria disponíveis:
Criteria | Descrição | Exemplo | Requisitos |
---|---|---|---|
Header Accept | Header que informa quais tipos de dado que o cliente aceita como resposta | application/json | Web Application Firewall |
Header Accept Encoding | Header que informa quais os tipos de codificação de conteúdo, geralmente algoritmos de compressão, que o cliente aceita como resposta | gzip | Web Application Firewall |
Header Accept Language | Header que informa a linguagem esperada | en-US | Web Application Firewall |
Header Cookie | Header que contém os cookies enviados pelo cliente na requisição para o servidor | session_id=abc123 | Web Application Firewall |
Header Origin | Header 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 | https://example.com | Web Application Firewall |
Header Referer | Header que indica o endereço do documento, ou elemento em um documento, a partir do qual a URI da requisição foi obtida | https://example.com/landing-page | Web Application Firewall |
Header User Agent | Header com uma sequência característica que permite que servidores identifiquem o aplicativo, sistema operacional, fornecedor e/ou versão do dispositivo | Mozilla/5.0 | Web Application Firewall |
Host | Em 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 | api.example.com | - |
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) | 1xx.xxx.x.0 | Network Layer Protection |
Request Args | Todos os argumentos enviados pelo usuário na linha de requisição (query string) | page=1 | Web Application Firewall |
Request Method | O método HTTP da requisição. Por exemplo: GET , POST , PUT , etc. | POST | - |
Request URI | Refere-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/ | - |
Scheme | O scheme da requisição: http ou https | https | - |
Client Certificate Validation | Processo do servidor para autenticar o certificado digital do cliente | true | - |
SSL Verification Status | Resultado 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 | Certificate 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:
Operador | Descrição | Tipo de argumento |
---|---|---|
is equal | O valor da variável é igual ao argumento, comparado caractere a caractere | 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 ou lista |
does not match | O valor da variável não coincide com a expressão regular ou lista informada como argumento | Regular expression ou lista |
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 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.
Behavior | Argumento |
---|---|
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 porReq/s
(requisições por segundo) ouReq/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çoIP do cliente
ouGlobal
, 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 emAverage Rate Limit
, o que resultaria em penalizar a última requisição de uma rajada com até 10 segundos de atraso.
- O valor configurado será o Rate Limit em cada Azion Edge Node, implementado por meio do algoritmo de Leaky Bucket. Recomendamos que você utilize
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.