Repolode
fabriziosalmi

fabriziosalmi/caddy-waf

Middleware de Web Application Firewall para Caddy que ofrece reglas regex, filtrado por IP/DNS/ASN/GeoIP, límites de solicitudes y bloqueo de nodos de salida de Tor.

Alternativa open source a:Cloudflare WAF

Estrellas
876
Forks
37
Issues abiertos
1
Último commit
hace 3 días

¿Qué es?

caddy-waf es un módulo de HTTP handler para Caddy, escrito en Go, que inspecciona solicitudes y respuestas según un conjunto de reglas de expresiones regulares. Las reglas tienen una puntuación y se bloquea una solicitud cuando la puntuación total alcanza un umbral de anomalía configurable. La inspección abarca cuatro fases: encabezados de solicitud, cuerpo de la solicitud, encabezados de respuesta y cuerpo de la respuesta.

Además de evaluar las reglas, aplica listas de bloqueo de IP y CIDR, listas de bloqueo DNS, bloqueos por país y ASN mediante MaxMind GeoLite2 y una lista de nodos de salida de Tor que se actualiza periódicamente. También ofrece límites de solicitudes por IP con ventana deslizante y coincidencia opcional de rutas, respuestas de bloqueo personalizadas y un endpoint de métricas JSON. Los archivos de reglas y listas de bloqueo se supervisan y se vuelven a cargar cuando cambian, sin necesidad de reiniciar.

El módulo se configura mediante Caddyfile o JSON y se puede compilar con xcaddy, instalar con caddy add-package o ejecutar desde una imagen de Docker. Está publicado bajo la licencia AGPL-3.0.

Funciones clave

  • 01Motor de reglas regex basado en el paquete RE2 de Go, con puntuación de anomalía por regla.
  • 02Inspección de encabezados y cuerpos de solicitudes y respuestas en cuatro fases.
  • 03Listas de bloqueo de IP y CIDR, además de listas de bloqueo DNS.
  • 04Bloqueo por país y ASN mediante bases de datos MaxMind GeoLite2.
  • 05Límites de solicitudes por IP con ventana deslizante y patrones de ruta opcionales.
  • 06Bloqueo de nodos de salida de Tor y recarga en caliente de archivos de reglas y listas de bloqueo.

Casos de uso

  • Proteger con un conjunto de reglas un sitio servido por Caddy frente a ataques web comunes.
  • Bloquear tráfico de países, ASN, rangos de IP o nodos de salida de Tor específicos.
  • Limitar las solicitudes a endpoints de API en un proxy inverso de Caddy.
  • Exportar métricas del WAF a paneles de Prometheus o Grafana.

Inicio rápido

  1. 1

    Instala el módulo con xcaddy

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

    Compila Caddy con el módulo caddy-waf

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

    Comprueba que el módulo WAF esté disponible

    ./caddy list-modules | grep waf

Antes de usarlo

  • Está sujeto a la licencia AGPL-3.0, una licencia copyleft que puede no ser adecuada para todos los entornos de despliegue.
  • Requiere Go 1.26.0 o posterior y Caddy v2.11.x o posterior.
  • Las funciones GeoIP opcionales necesitan un archivo de base de datos MaxMind GeoLite2.

Temas

Preguntas frecuentes

¿Qué es caddy-waf?
Middleware de Web Application Firewall para Caddy que ofrece reglas regex, filtrado por IP/DNS/ASN/GeoIP, límites de solicitudes y bloqueo de nodos de salida de Tor. caddy-waf es un módulo de HTTP handler para Caddy, escrito en Go, que inspecciona solicitudes y respuestas según un conjunto de reglas de expresiones regulares. Las reglas tienen una puntuación y se bloquea una solicitud cuando la puntuación total alcanza un umbral de anomalía configurable. La inspección abarca cuatro fases: encabezados de solicitud, cuerpo de la solicitud, encabezados de respuesta y cuerpo de la respuesta.
¿caddy-waf es gratuito? ¿Qué licencia tiene?
caddy-waf es open source bajo la licencia AGPL-3.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿caddy-waf sigue mantenido?
Mantenimiento activo. El último commit de caddy-waf fue el 17 oct 2026.
¿Para qué puedo usar caddy-waf?
Proteger con un conjunto de reglas un sitio servido por Caddy frente a ataques web comunes. Bloquear tráfico de países, ASN, rangos de IP o nodos de salida de Tor específicos. Limitar las solicitudes a endpoints de API en un proxy inverso de Caddy. Exportar métricas del WAF a paneles de Prometheus o Grafana.
¿Cómo se instala caddy-waf?
Instala el módulo con xcaddy: go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest Compila Caddy con el módulo caddy-waf: xcaddy build --with github.com/fabriziosalmi/caddy-waf Comprueba que el módulo WAF esté disponible: ./caddy list-modules | grep waf
¿Dónde consigo caddy-waf?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/fabriziosalmi/caddy-waf

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados