Azion Bot Manager Lite
Visão Geral
Azion Bot Manager Lite v0.2.0 é uma integração serverless disponível no Marketplace da Azion, construída com uma function no Firewall. Ela analisa as requisições recebidas e atribui a cada uma uma pontuação com base em um conjunto de regras predefinidas. Quando a pontuação atinge ou excede o limite configurado, a função executa a ação definida. Se a pontuação ficar abaixo do limite, a requisição prossegue normalmente (allow é a ação padrão). Ações disponíveis: allow, deny, drop, redirect, custom_html, random_delay e hold_connection. A integração detecta tráfego suspeito e bots maliciosos, incluindo web scraping e ataques de força bruta.
Detalhes da solução
A função avalia cada requisição e atribui uma pontuação com base em regras predefinidas. Você configura a ação e o limite nos JSON Args. Se a pontuação atingir ou exceder o limite, a função executa a ação configurada. Caso contrário, o Rules Engine do Firewall continua a ser executado normalmente.
Regras
O Bot Manager Lite avalia cada requisição com base em 26 regras. Cada regra correspondida incrementa a pontuação da requisição por um valor fixo. Quando a pontuação acumulada atinge ou excede o threshold configurado, a função executa a action configurada.
| ID da Regra | Descrição | Incremento | Classe |
|---|---|---|---|
| 1 | ${http_user_agent} está vazio | 8 | Assinaturas de bots maliciosos |
| 2 | ${http_content_type} está vazio E ${request_body} não está vazio | 8 | Assinaturas de bots maliciosos |
| 3 | ${http_referer} está vazio E ${request_method} é POST, PUT, PATCH ou DELETE | 6 | Intenção maliciosa |
| 4 | ${http_user_agent} contém a string Dalvik | 4 | Assinaturas de bots maliciosos |
| 5 | ${http_user_agent} contém a string Trident | 6 | Assinaturas de bots maliciosos |
| 6 | ${http_user_agent} contém a string Headless | 6 | Assinaturas de bots maliciosos |
| 7 | ${http_user_agent} tem mais de 200 ou menos de 10 caracteres | 4 | Assinaturas de bots maliciosos |
| 8 | ${http_user_agent} corresponde a um user agent de bot malicioso conhecido | 8 | Bots scriptados |
| 9 | ${http_accept} está vazio | 8 | Assinaturas de bots maliciosos |
| 10 | ${http_accept_language} está vazio | 8 | Assinaturas de bots maliciosos |
| 11 | ${http_range} está vazio | 6 | Intenção maliciosa |
| 12 | ${request_method} é TRACE | 8 | Intenção maliciosa |
| 13 | ${http_content_length} está vazio E ${request_method} é POST, PUT ou PATCH | 8 | Assinaturas de bots maliciosos |
| 14 | O IP do cliente está em uma Network List de reputação configurada | 6 | Inteligência de Reputação |
| 15 | ${request_method} é POST, PUT ou PATCH E ${cookie_az_botm} está ausente | 8 | Comportamento malicioso de navegador |
| 16 | ${request_method} é POST, PUT ou PATCH E ${cookie_az_asm} está ausente | 8 | Comportamento malicioso de navegador |
| 17 | Violação de integridade dos cookies de sessão | 16 | Comportamento malicioso de navegador |
| 18 | ${http_sec_fetch_mode} está vazio | 4 | Intenção maliciosa |
| 19 | ${http_sec_fetch_dest} está vazio | 4 | Intenção maliciosa |
| 20 | ${http_sec_fetch_site} está vazio | 4 | Intenção maliciosa |
| 21 | ${server_fingerprint} corresponde a uma entrada em bad_fingerprint_list | 32 | Comportamento malicioso de navegador |
| 22 | ${http_user_agent} corresponde a um user agent de navegador desatualizado conhecido | 6 | Assinaturas de bots maliciosos |
| 23 | ${server_protocol} é HTTP/1.0 ou HTTP/1.1 | 6 | Bots scriptados |
| 24 | ${geoip_asn} corresponde a um ASN de provedor de nuvem conhecido | 4 | Provedor de nuvem |
| 25 | ${http_user_agent} corresponde a um user agent de navegador headless conhecido | 4 | Assinaturas de bots maliciosos |
| 26 | ${http_user_agent} corresponde a um user agent de cliente scriptado conhecido | 8 | Assinaturas de bots maliciosos |
Você pode desabilitar regras específicas usando o argumento disabled_rules. Consulte Configure a função para mais detalhes.
Detalhes da function
A função é implementada em JavaScript e é executada dentro do Firewall. Você configura seu comportamento por meio dos JSON Args. Os logs são transmitidos via Data Stream e Real-Time Events.
Logs e integração
Você pode configurar os registros de log para capturar uma ampla gama de dados de requisição, excluindo cabeçalhos sensíveis listados na descrição do argumento log_headers. A solução também valida endereços IP usando Network Lists de reputação definidas no argumento reputation_network_lists, aumentando a pontuação de ameaça das requisições correspondentes.
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 classe de logging que a função usará. Valores possíveis:"0": escrever logs se a pontuação da requisição for maior que 0 (padrão)."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.Quando este campo não tiver valor ou tiver um valor inválido, a função usará o valor padrão "0" |
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. Use tags únicas ao executar múltiplas instâncias |
reputation_network_lists | Array de números | Não | IDs de Network Lists usadas para validar o IP do cliente. Se o IP for encontrado em alguma lista, a pontuação da requisição aumenta 6 pontos por lista correspondida. Padrão: lista vazia |
session_signature_key | String | Não | Assina o cookie de sessão az_asm usando HMAC para proteger contra adulteração de cookies. 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 |
good_fingerprint_list | Array de strings | Não | Fingerprints com boa reputação conhecida. Requisições que correspondam a qualquer fingerprint desta lista ignoram todas as regras de análise de bot. Padrão: lista vazia |
bad_fingerprint_list | Array de strings | Não | Fingerprints com má reputação conhecida, avaliados pela regra 21. Uma correspondência adiciona 32 pontos à pontuação da requisição. Padrão: lista vazia |
block_ai_bots | Boolean | Não | Quando definido como true, requisições identificadas como provenientes de user agents de AI conhecidos são bloqueadas automaticamente, sem executar nenhuma outra regra de análise de bot. Padrão: false |
Configuração de actions
Azion Bot Manager Lite pode 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, declare-a 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 — allow é a ação padrão.
deny: entrega uma resposta padrão com Status Code 403. Para habilitar esta ação, declare-a 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, declare-a da seguinte forma:
"action": "drop"Essa ação não requer argumentos adicionais.
redirect: redireciona a requisição para uma nova URL quando o limite de segurança é atingido. Para habilitar esta ação, declare as variáveis como no exemplo:
"action": "redirect", "redirect_to": "http://xxxxxxxxxx.map.azionedge.net/"Onde redirect_to define a nova URL para redirecionar a requisição. 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 se a ação allow estivesse habilitada.
custom_html: entrega conteúdo HTML personalizado ao usuário em caso de violação do limite. Para habilitar esta ação, declare as variáveis como no exemplo:
"action": "custom_html", "custom_html": "This should be the custom HTML content", "custom_status_code": 418Onde custom_html define o conteúdo HTML a ser entregue e custom_status_code define o status code HTTP a ser retornado.
- Se
custom_htmlnão estiver preenchido ou estiver preenchido com um valor que não seja uma string, a função se comportará como se a açãoallowestivesse habilitada. - Se
custom_status_codenão estiver preenchido ou estiver preenchido com um valor que não seja um número, o valor padrão será Status Code 200.
random_delay: faz com que a função aguarde um período aleatório entre 1 e 10 segundos antes de permitir que a requisição prossiga. Para habilitar esta ação, declare-a 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, declare-a da seguinte forma:
"action": "hold_connection"Essa ação não requer argumentos adicionais.
Vá para o guia de instalação do Bot Manager Lite Vá para o guia do Bot Manager Lite Starter Kit Vá para o guia do Bot Manager Lite Integration Kit