WAF & Firewall
O WAF & Firewall olha cada pedido antes de ele chegar ao seu app. As regras gerenciadas pegam ataques conhecidos no caminho, na query e no corpo: SQL injection, cross-site scripting, path traversal, injeção de comando e exploits de vulnerabilidades publicadas. As suas regras casam por caminho, método, país, rede e pelos sinais que o Qlyne já tem, e decidem barrar, desafiar ou pular as outras regras. As listas de IP barram ou confiam num endereço ou numa faixa, e os confiáveis pulam todas as outras regras. O limite de requisições põe um teto em quantos pedidos um visitante faz por minuto numa rota, e responde 429 aos que passam do teto.
Como ligar
Seção intitulada “Como ligar”Disponível no proxy do Qlyne e no Worker da Cloudflare; o limite de requisições também no Next.js. Instale primeiro o conector pelo guia dele. Depois, tudo nesta página se configura no painel, sem mexer no seu app.
No menu do site, WAF & Firewall tem três itens:
- Visão geral: o que foi barrado, e o que seria barrado enquanto você observa.
- Regras de IP: as listas de endereços bloqueados e confiáveis.
- Configuração: regras gerenciadas, limites de requisições e as suas regras, em “Avançado”.
Depois de salvar, o conector recebe a mudança em até um minuto.
No Free, as listas de IP e os limites de requisições funcionam por inteiro, e as regras gerenciadas observam. Bloquear com as regras gerenciadas, e as suas regras, são Pro. A comparação dos planos está em Planos.
Comece observando. Com o conector em “Só observando” (em Conector), nada é recusado: cada caso aparece em Eventos como “Barraria pelas regras gerenciadas”, “Barraria pela sua regra”, “Barraria pelo IP” ou “Limitaria”. O seu app recebe o mesmo no cabeçalho Qlyne-Rule, como would_waf_block=sqli. Quando lá só aparecer ataque, mude o conector para “Aplicar”.
Nível de proteção
Seção intitulada “Nível de proteção”No topo de Configuração, o nível ajusta as regras gerenciadas por você:
| Nível | Regras gerenciadas |
|---|---|
| Básico | Só observando, os cinco grupos de ataque |
| Equilibrado | Bloquear, os cinco grupos de ataque |
| Agressivo | Bloquear, os cinco grupos de ataque |
O nível nunca mexe nas listas de IP, nas suas regras nem nos limites de requisições. O mesmo seletor também define o que recebem as saídas do Tor e a reputação entre sites, explicadas em Bot Management.
Regras gerenciadas (WAF)
Seção intitulada “Regras gerenciadas (WAF)”Em Configuração, “Regras gerenciadas”, “O que elas fazem” tem três opções: “Desligado”, “Só observando” (o padrão de todo site) e “Bloquear”. “Ataques a procurar” escolhe os grupos:
- SQL injection:
UNION SELECT, condições1=1, comandos empilhados, atrasos de tempo, leitura do esquema. - Cross-site scripting: tag script, handlers de evento, links
javascript:, iframes. - Path traversal:
../, arquivos do sistema, byte nulo. - Injeção de comando:
$(…)com comandos do sistema,curloubashencadeados, Log4Shell. - Exploits de CVE conhecidos: pedidos que miram vulnerabilidades publicadas, como o Spring4Shell.
As regras olham o caminho, a query string e o corpo, depois de decodificar duas vezes (para quem codifica duas vezes para escapar) e sem os comentários de SQL. Quais corpos são lidos depende do conector:
| Conector | Corpos lidos, até 16 KB |
|---|---|
| Proxy do Qlyne | formulário, JSON, envio de arquivo (multipart) e XML, com ou sem tamanho declarado |
| Worker da Cloudflare | formulário e JSON, só com tamanho declarado |
Eventos mostra cada caso com o grupo de ataque, como “Regras gerenciadas, sqli”. Bloquear exige Pro e o conector em “Aplicar”; no Free as regras continuam observando.
Página que manda HTML ou código de propósito, como um editor de texto rico, vai em “Rotas que as regras gerenciadas pulam”. * no fim cobre tudo abaixo da rota. As regras gerenciadas rodam depois das suas, então uma regra que deixa passar também pula elas.
As suas regras (Pro)
Seção intitulada “As suas regras (Pro)”Em Configuração, “As suas regras”, clique em “Adicionar regra”. Uma regra tem nome, uma lista de condições que precisam valer todas (“Quando”) e o que ela faz:
- Bloquear:
403. - Desafio: a página de desafio do Bot Management.
- Deixar passar, pulando as outras regras: vai ao seu app sem nenhuma outra regra, sala de espera inclusive.
- Só registrar: aparece em Eventos como “Casou com uma regra de registro” e não muda nada.
Cada condição é um campo, uma comparação e valores:
| Campo | Comparações | Exemplo |
|---|---|---|
| Caminho | começa com, casa com, contém, é algum de | /login |
| Host | é algum de, não é nenhum de | staging.shop.example |
| Método | é algum de, não é nenhum de | POST |
| País | é algum de, não é nenhum de | BR, PT |
| ASN (rede) | é algum de, não é nenhum de | AS14061, AS16509 |
| Endereço IP | é algum de, não é nenhum de | 203.0.113.0/24 |
| User agent | contém, não contém, está vazio | python-requests |
| Robô de busca verificado | é sim, é não | |
| Impressão digital do TLS (JA4) | começa com, é algum de, não é nenhum de | t13d1812h1 |
Para “ou”, ponha vários valores na mesma condição (BR, PT) ou escreva duas regras. As regras rodam em ordem, depois dos endereços bloqueados e da armadilha para scanner. A primeira que bloqueia, desafia ou deixa passar decide; “Só registrar” nunca segura a regra seguinte. Mude a ordem pelas setas e desligue uma regra sem apagar. “Pronto” fecha a janela; as regras valem depois que você salva a página.
Exemplos:
- Bloquear o login para redes de hospedagem: Caminho começa com
/login, e ASN é algum deAS14061, AS16509. - Desafiar o checkout fora dos seus países: Caminho casa com
/checkout*, e País não é nenhum deBR, PT. - Bloquear chamada à API sem user agent: Caminho começa com
/api/, e User agent está vazio.
Comece uma regra nova com “Só registrar”, confira Eventos por um dia e depois faça ela bloquear.
No Worker, país e rede vêm da Cloudflare. No proxy do Qlyne, vêm de uma base GeoIP local: baixe ip2asn-v4.tsv.gz e ip2asn-v6.tsv.gz em iptoasn.com, descompacte os dois numa pasta, monte a pasta no container e aponte QLYNE_GEOIP_DIR para ela. O proxy carrega a base quando sobe e registra qlyne: geoip database loaded no log. A impressão digital do TLS precisa do HTTPS no próprio proxy (veja o guia do proxy), ou do Bot Management da Cloudflare no Worker.
Listas de IP
Seção intitulada “Listas de IP”Em Regras de IP, digite um endereço ou uma faixa (IPv4 ou IPv6, como 203.0.113.7 ou 203.0.113.0/24), uma nota opcional, e escolha “Bloquear” ou “Confiar”. Em Eventos, cada linha também tem “Bloquear o IP” e “Confiar no IP”; a entrada ganha a nota “Pela tela Eventos”.
- Bloqueado: recusado com
403antes de qualquer outra regra. Fica bloqueado até você remover. - Confiável: vai ao seu site sem nenhuma regra, então pula o desafio, os limites de requisições e a sala de espera. Use para o escritório, monitores de disponibilidade e parceiros que chamam a sua API.
Cada lista guarda até 500 endereços, e um endereço fica numa lista só. Cada entrada mostra a nota, a data e quem adicionou. No modo observar, os bloqueados só são contados; os confiáveis já pulam todas as regras.
Limites de requisições
Seção intitulada “Limites de requisições”Em Configuração, “Limites de requisições”, clique em “Adicionar limite” e preencha:
- Rota: como
/api/*.*no fim cobre tudo abaixo dela. - Limite: Rígido (10 por minuto), Normal (60) ou Folgado (300), numa janela de 60 segundos.
- Contar por: endereço IP (visitante IPv6 conta pelo /64), um cabeçalho (como
X-API-Key) ou um cookie (comosession_id).
Conte por cabeçalho ou cookie numa API, ou onde muita gente divide um endereço (operadora de celular, escritório). Pedido sem esse cabeçalho ou cookie conta por IP. Um IP nunca passa de 10 vezes o limite, então inventar uma chave nova a cada pedido não contorna. Um site tem até 20 limites.
Onde a contagem fica depende do conector. O proxy do Qlyne conta na própria memória e guarda o valor do cabeçalho ou cookie só como hash. O Worker usa o limite de requisições da Cloudflare, que exige o conector publicado com o Wrangler e o wrangler.toml do painel (veja Instale o conector). Na instalação pelo painel da Cloudflare, os limites deixam passar todo pedido. No Next.js, o servidor do Qlyne soma todas as instâncias do seu app (veja o guia do Next.js).
Arquivos estáticos (scripts, estilos, imagens, fontes) também contam.
O que o visitante vê
Seção intitulada “O que o visitante vê”- Barrado por lista de IP, pela sua regra ou pelas regras gerenciadas: no navegador,
403com a página “Acesso bloqueado”, que diz “Este site recusou o acesso a partir da sua conexão. Se acha que é um engano, fale com o site.” Chamada de API recebe403com{"code": "ACCESS_BLOCKED"}. Nenhuma das duas diz qual regra recusou. - Acima do limite de requisições:
429comRetry-After: 60. No navegador, a página “Muitas requisições” diz “Espere 60 s e tente de novo. A página recarrega sozinha.” Chamada de API recebe{"code": "RATE_LIMITED"}. - Regra com “Desafio”: a página de desafio.
- Endereço confiável: nenhuma página; o pedido vai ao seu app.
- No modo observar: nada muda para o visitante.
Essas páginas não gravam cookie.
Limites
Seção intitulada “Limites”Em 2026-10-18:
- No Worker, as regras gerenciadas leem só corpo de formulário e JSON com tamanho declarado. Envio de arquivo, XML e corpo mandado em partes não são lidos ali.
- As regras gerenciadas pulam qualquer corpo acima de 16 KB, em todo conector.
- No proxy do Qlyne, cada instância conta os próprios limites de requisições. Com três proxies atrás de um balanceador, um visitante pode chegar a três vezes o limite.
- Os limites de requisições usam os três presets fixos e uma janela de 60 segundos; não dá para digitar um número próprio.
- No proxy do Qlyne, condições de País e ASN precisam da base GeoIP. Sem ela, nunca casam, e o painel não tem como saber se o seu proxy tem a base GeoIP.
- Bloqueio de IP não expira; remova a entrada para liberar.
- Um site guarda até 25 regras, 10 condições por regra e 100 valores por condição.
Perguntas frequentes
Seção intitulada “Perguntas frequentes”As regras gerenciadas substituem validar a entrada no meu app?
Seção intitulada “As regras gerenciadas substituem validar a entrada no meu app?”Não. Elas pegam os ataques comuns e automatizados. Continue validando a entrada e usando consulta parametrizada no app.
O que eu tenho no Free?
Seção intitulada “O que eu tenho no Free?”Listas de IP e limites de requisições, por inteiro. As regras gerenciadas observam e mostram o que barrariam. Bloquear com elas, e as suas regras, precisam do Pro.
Quanto tempo leva para uma mudança valer?
Seção intitulada “Quanto tempo leva para uma mudança valer?”Até um minuto depois de salvar, em todo conector.
Endereço confiável pula a sala de espera também?
Seção intitulada “Endereço confiável pula a sala de espera também?”Sim. Endereço confiável pula todas as regras, sala de espera e desafio inclusive.
Dá para gerenciar essas regras por código?
Seção intitulada “Dá para gerenciar essas regras por código?”Sim. Regras gerenciadas, as suas regras, listas de IP e limites de requisições fazem parte do arquivo de regras como código. As listas de IP também mudam por um assistente de IA, pelo MCP.
Problemas comuns
Seção intitulada “Problemas comuns”Um visitante de verdade foi barrado pelas regras gerenciadas
Seção intitulada “Um visitante de verdade foi barrado pelas regras gerenciadas”Abra Eventos e ache o pedido: a linha mostra “Barrado pelas regras gerenciadas” e o grupo de ataque. Se a página manda HTML ou código de propósito, ponha a rota em “Rotas que as regras gerenciadas pulam”. Se um grupo vive pegando o seu próprio tráfego, desmarque ele em “Ataques a procurar”. Enquanto investiga, ponha “O que elas fazem” em “Só observando”: os casos continuam aparecendo, e ninguém é recusado.
O meu próprio IP foi bloqueado
Seção intitulada “O meu próprio IP foi bloqueado”O painel roda nos servidores do Qlyne, então você continua entrando nele. Abra Eventos e veja o que barrou você. Uma entrada em Regras de IP sai com “Remover”. A sua regra se desliga na linha dela. Para a armadilha para scanner, veja Bot Management. Depois, ponha o seu endereço em Regras de IP como confiável, para nenhuma regra valer para ele de novo. O conector recebe em até um minuto.
O limite de requisições está baixo demais para a minha loja
Seção intitulada “O limite de requisições está baixo demais para a minha loja”Confira a rota primeiro: um limite em /* conta também cada imagem, script e estilo que a página carrega, então o Rígido acaba na primeira visita. Ponha o limite nas rotas que robô procura, como /api/* ou /login. Se os clientes dividem um endereço (operadora de celular, escritório), conte pelo cookie de sessão em vez do IP. Depois, passe para Normal ou Folgado. No modo observar, “Limitaria” em Eventos mostra quem seria barrado antes de alguém ser.