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 RegraDescriçãoIncrementoClasse
1${http_user_agent} está vazio8Assinaturas de bots maliciosos
2${http_content_type} está vazio E ${request_body} não está vazio8Assinaturas de bots maliciosos
3${http_referer} está vazio E ${request_method} é POST, PUT, PATCH ou DELETE6Intenção maliciosa
4${http_user_agent} contém a string Dalvik4Assinaturas de bots maliciosos
5${http_user_agent} contém a string Trident6Assinaturas de bots maliciosos
6${http_user_agent} contém a string Headless6Assinaturas de bots maliciosos
7${http_user_agent} tem mais de 200 ou menos de 10 caracteres4Assinaturas de bots maliciosos
8${http_user_agent} corresponde a um user agent de bot malicioso conhecido8Bots scriptados
9${http_accept} está vazio8Assinaturas de bots maliciosos
10${http_accept_language} está vazio8Assinaturas de bots maliciosos
11${http_range} está vazio6Intenção maliciosa
12${request_method} é TRACE8Intenção maliciosa
13${http_content_length} está vazio E ${request_method} é POST, PUT ou PATCH8Assinaturas de bots maliciosos
14O IP do cliente está em uma Network List de reputação configurada6Inteligência de Reputação
15${request_method} é POST, PUT ou PATCH E ${cookie_az_botm} está ausente8Comportamento malicioso de navegador
16${request_method} é POST, PUT ou PATCH E ${cookie_az_asm} está ausente8Comportamento malicioso de navegador
17Violação de integridade dos cookies de sessão16Comportamento malicioso de navegador
18${http_sec_fetch_mode} está vazio4Intenção maliciosa
19${http_sec_fetch_dest} está vazio4Intenção maliciosa
20${http_sec_fetch_site} está vazio4Intenção maliciosa
21${server_fingerprint} corresponde a uma entrada em bad_fingerprint_list32Comportamento malicioso de navegador
22${http_user_agent} corresponde a um user agent de navegador desatualizado conhecido6Assinaturas de bots maliciosos
23${server_protocol} é HTTP/1.0 ou HTTP/1.16Bots scriptados
24${geoip_asn} corresponde a um ASN de provedor de nuvem conhecido4Provedor de nuvem
25${http_user_agent} corresponde a um user agent de navegador headless conhecido4Assinaturas de bots maliciosos
26${http_user_agent} corresponde a um user agent de cliente scriptado conhecido8Assinaturas 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á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 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_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. Use tags únicas ao executar múltiplas instâncias
reputation_network_listsArray de númerosNãoIDs 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_keyStringNãoAssina 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_logsBooleanNãoDefine se a função registrará logs de aviso no Real-Time Events. Valor padrão: false
good_fingerprint_listArray de stringsNãoFingerprints 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_listArray de stringsNãoFingerprints 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_botsBooleanNãoQuando 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:

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

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

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

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

  1. 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": 418

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_html 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.
  • 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á Status Code 200.
  1. 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.

  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, 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