Repolode
fabriziosalmi

fabriziosalmi/caddy-waf

Middleware de Web Application Firewall para o servidor Caddy, com regras regex, filtragem por IP/DNS/ASN/GeoIP, limitação de taxa e bloqueio de nós de saída do Tor.

Alternativa open source a:Cloudflare WAF

Estrelas
876
Forks
37
Issues abertas
1
Último commit
há 3 dias

O que é?

caddy-waf é um módulo HTTP handler para Caddy, escrito em Go, que inspeciona requisições e respostas com base em um conjunto de regras de expressões regulares. As regras têm pontuações, e uma requisição é bloqueada quando a soma atinge um limite de anomalia configurável. A inspeção cobre quatro etapas: cabeçalhos da requisição, corpo da requisição, cabeçalhos da resposta e corpo da resposta.

Além da correspondência de regras, o módulo aplica listas de bloqueio de IP e CIDR, listas de bloqueio de DNS, bloqueio por país e ASN com o MaxMind GeoLite2 e uma lista de nós de saída do Tor atualizada periodicamente. Também oferece limitação de taxa por IP com janela deslizante e correspondência opcional de caminhos, respostas de bloqueio personalizadas e um endpoint de métricas JSON. Os arquivos de regras e listas de bloqueio são monitorados e recarregados quando mudam, sem necessidade de reiniciar.

O módulo é configurado pelo Caddyfile ou por JSON e pode ser compilado com xcaddy, instalado via caddy add-package ou executado a partir de uma imagem Docker. É licenciado sob AGPL-3.0.

Recursos principais

  • 01Mecanismo de regras regex baseado no pacote RE2 do Go, com pontuação de anomalia por regra.
  • 02Inspeção de cabeçalhos e corpos de requisições e respostas em quatro etapas.
  • 03Listas de bloqueio de IP e CIDR, além de listas de bloqueio de DNS.
  • 04Bloqueio por país e ASN usando bancos de dados MaxMind GeoLite2.
  • 05Limitação de taxa por IP com janela deslizante e padrões de caminho opcionais.
  • 06Bloqueio de nós de saída do Tor e recarga automática de arquivos de regras e listas de bloqueio.

Casos de uso

  • Proteger um site servido pelo Caddy contra ataques web comuns usando um conjunto de regras.
  • Bloquear tráfego de países, ASNs, faixas de IP ou nós de saída do Tor específicos.
  • Limitar a taxa de requisições a endpoints de API em um proxy reverso Caddy.
  • Exportar métricas do WAF para dashboards do Prometheus ou Grafana.

Início rápido

  1. 1

    Instale o módulo com xcaddy

    go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
  2. 2

    Compile o Caddy com o módulo caddy-waf

    xcaddy build --with github.com/fabriziosalmi/caddy-waf
  3. 3

    Verifique se o módulo WAF está disponível

    ./caddy list-modules | grep waf

Antes de usar

  • Licenciado sob a AGPL-3.0, uma licença copyleft que pode não ser adequada para todos os ambientes de implantação.
  • Requer Go 1.26.0 ou mais recente e Caddy v2.11.x ou mais recente.
  • Os recursos GeoIP opcionais precisam de um arquivo de banco de dados MaxMind GeoLite2.

Tópicos

Perguntas frequentes

O que é caddy-waf?
Middleware de Web Application Firewall para o servidor Caddy, com regras regex, filtragem por IP/DNS/ASN/GeoIP, limitação de taxa e bloqueio de nós de saída do Tor. caddy-waf é um módulo HTTP handler para Caddy, escrito em Go, que inspeciona requisições e respostas com base em um conjunto de regras de expressões regulares. As regras têm pontuações, e uma requisição é bloqueada quando a soma atinge um limite de anomalia configurável. A inspeção cobre quatro etapas: cabeçalhos da requisição, corpo da requisição, cabeçalhos da resposta e corpo da resposta.
caddy-waf é gratuito? Qual é a licença?
caddy-waf é open source sob a licença AGPL-3.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
caddy-waf ainda é mantido?
Manutenção ativa. O último commit de caddy-waf foi em 17 de out. de 2026.
Para que posso usar caddy-waf?
Proteger um site servido pelo Caddy contra ataques web comuns usando um conjunto de regras. Bloquear tráfego de países, ASNs, faixas de IP ou nós de saída do Tor específicos. Limitar a taxa de requisições a endpoints de API em um proxy reverso Caddy. Exportar métricas do WAF para dashboards do Prometheus ou Grafana.
Como instalar caddy-waf?
Instale o módulo com xcaddy: go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest Compile o Caddy com o módulo caddy-waf: xcaddy build --with github.com/fabriziosalmi/caddy-waf Verifique se o módulo WAF está disponível: ./caddy list-modules | grep waf
Onde consigo caddy-waf?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/fabriziosalmi/caddy-waf

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados