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ávelTipoObrigatórioDescrição
actionStringSimA 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
thresholdNúmeroSimA 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_rulesArray de númerosNãoAs regras a serem desativadas. Se uma regra estiver desabilitada, ela não será processada nem aumentará a pontuação da requisição
internal_logsStringNãoA 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_headersArray de stringsNãoDefine 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_tagStringNãoUma tag para identificar nos logs a instância da função que gerou a requisição. É recomendado usar tags personalizadas e únicas
session_signature_keyStringNãoEssa 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_logsBooleanNãoDefine 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:

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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ção allow 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.
  1. random_delay: faz com que a função espere por um período aleatório entre 1 e 10 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.

  1. 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