Azion Bot Manager Lite
Proteja suas aplicações contra ataques automatizados, como assinaturas de bots maliciosos ou bots scriptados com uma versão simplificada do Bot Manager.
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:
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:
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:
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:
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:
Onde 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:
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:
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