Azion Bot Manager Lite
Visão Geral
Azion Bot Manager Lite v0.1.9 é uma integração serverless disponível no Marketplace da Azion, construída com uma edge function no Edge Firewall. Ela analisa requisições e atribui um score, declinando ou cancelando requisições que excedem um limite predeterminado, ou permitindo-as por padrão. As ações disponíveis incluem allow, deny, drop, redirect, custom HTML, random delay e hold the connection. A integração detecta tráfego suspeito e bots maliciosos como web scraping e brute force.
Detalhes da solução
Esta edge function avalia requisições e atribui uma pontuação com base em um conjunto de regras predefinidas. A ação tomada é configurada pelo cliente, podendo ser allow, deny, drop, redirect, custom HTML, random delay e hold the connection a requisição se a pontuação exceder um limite definido no JSON Args. Caso contrário, as regras do Edge Firewall continuam a ser executadas normalmente.
Regras
O Bot Manager Lite conta atualmente com um sistema de regras, cada uma incrementando a pontuação da requisição dependendo de diferentes condições, como cabeçalhos HTTP específicos ou padrões de comportamento de bots.
Detalhes da edge function
A edge function é implementada em JavaScript e integra-se no Edge Firewall. Os parâmetros configuráveis incluem a ação tomada, o limite de pontuação para acionar ações e logs detalhados transmitidos via Data Stream/Real-Time Events.
Logs e integração
Os registros de log podem ser configurados para capturar uma ampla gama de dados de requisição, excluindo cabeçalhos sensíveis listados abaixo. A solução também valida endereços IP usando listas de reputação definidas nos JSON Args, aumentando a pontuação de ameaça da requisição.
Configure a função
A função aceita os seguintes argumentos:
Variável | Tipo | Obrigatório | Descrição |
---|---|---|---|
action | String | Sim | A ação a ser tomada pela função sempre que a pontuação da requisição for igual ou maior ao limite definido. Valores possíveis: allow , deny , redirect , custom_html , drop , random_delay e hold_connection . Saiba mais sobre a configuração de actions |
threshold | Número | Sim | A pontuação máxima que a requisição pode atingir antes que a função execute uma ação. Se não tiver valor, a função não agirá |
disabled_rules | Array de números | Não | As regras a serem desativadas. Se uma regra estiver desabilitada, ela não será processada nem aumentará a pontuação da requisição |
internal_logs | String | Não | A Logging Class que a função usará. Valores possíveis:0 : escrever logs se a pontuação da requisição for maior que 0.1 : escrever logs apenas se a pontuação da requisição for maior que 0, ou se a requisição for classificada como “Good Bot”.2 : sempre escrever logs.3 : nunca escrever logs.Valor padrão: 0 . Quando este campo não tiver valor ou tiver um valor inválido, a função usará o valor padrão. |
log_headers | Array de strings | Não | Define quais cabeçalhos de requisição devem ser incluídos no log de relatórios da função. Por razões de segurança, os seguintes cabeçalhos são proibidos: authorization , cookie , proxy-authorization , set-cookie , x-csrf-token , x-api-key , x-amz-security-token . Nota: os valores dos cabeçalhos serão armazenados com codificação base64 |
log_tag | String | Não | Uma tag para identificar nos logs a instância da função que gerou a requisição. É recomendado usar tags personalizadas e únicas |
session_signature_key | String | Não | Essa string é usada para assinar, como dados criptografados, o cookie de sessão do bot assinado. Essa validação fornece proteção contra a manipulação do cookie. Se este campo não tiver valor ou tiver um valor inválido, a função usará o valor padrão az |
should_write_warning_logs | Boolean | Não | Define se a função registrará logs de aviso no Real-Time Events. Valor padrão: false . |
Configuração de actions
Azion Bot Manager Lite é capaz de executar 7 ações diferentes sempre que a pontuação da requisição for maior ou igual ao limite (threshold) definido. Saiba mais sobre cada action a seguir:
allow
: permite a continuação da requisição. Para habilitar esta ação, você deve declará-la da seguinte forma:
"action": "allow"
Essa ação não requer argumentos adicionais.
Se o score for menor que o limiar predeterminado, a requisição será processada, sendo allow a ação default.
deny
: entrega uma resposta padrão com Status Code 403. Para habilitar esta ação, você deve declará-la da seguinte forma:
"action": "deny"
Essa ação não requer argumentos adicionais.
drop
: encerra a requisição sem uma resposta ao usuário. Para habilitar esta ação, você deve declará-la da seguinte forma:
"action": "drop"
Essa ação não requer argumentos adicionais.
redirect
: permite que a requisição seja redirecionada para uma nova URL/localização quando o limite de segurança é atingido. Para habilitar esta ação, você deve declarar as variáveis como no exemplo:
"action": "redirect", "redirect_to": "http://xxxxxxxxxx.map.azionedge.net/"
Onde redirect_to
define a nova URL/localização para redirecionar as requisições. Se este campo não estiver preenchido ou estiver preenchido com um valor que não seja uma string, a função se comportará como aconteceria com a ação allow
habilitada.
custom_html
: permite a entrega de conteúdo HTML personalizado ao usuário em caso de violação do limite. Para habilitar esta ação, você deve declarar as variáveis como no exemplo:
"action": "custom_html", "custom_html": "This should be the custom HTML content", "custom_status_code": 418,
Onde custom_html
define o conteúdo HTML a ser entregue e custom_status_code
define o status code a ser entregue.
- Se
custom_html
não estiver preenchido ou estiver preenchido com um valor que não seja uma string, a função se comportará como aconteceria com a açãoallow
habilitada. - Se
custom_status_code
não estiver preenchido ou estiver preenchido com um valor que não seja um número, o valor padrão será um Status Code 200.
random_delay
: faz com que a função espere por um período aleatório entre1
e10
segundos antes de permitir que a requisição prossiga. Para habilitar esta ação, você deve declará-la da seguinte forma:
"action": "random_delay"
Essa ação não requer argumentos adicionais.
hold_connection
: retém a requisição, mantendo a conexão aberta por 1 minuto antes de encerrá-la. Para habilitar esta ação, você deve declará-la da seguinte forma:
"action": "hold_connection"
Essa ação não requer argumentos adicionais.
Vá para o guia Como adicionar o Bot Manager Lite em um edge firewall existente usando um template Vá para o guia Como testar o Bot Manager Lite usando um template Vá para o guia Como instalar o Bot Manager Lite através do Marketplace da Azion