Módulo de Caddy

Módulo de Caddy para bloquear bots, VPN y Tor

Añade una directiva ipscanner a un bloque de sitio y cada visitante se revisa antes de reverse_proxy. Empieza en modo monitor y no bloquea nada hasta que cambies.

Gratis, licencia MITCaddy 2.8+

Clases de tráfico

Qué puede bloquear

Cada visitante recibe una clase. Bloquea una clase desde el panel, o ponla en block_classes.

  • Humanohuman
  • Bot verificadoverified_botSiempre pasa
  • Agente de IAai_agent
  • Automatización maliciosamalicious_automationPor defecto en enforce
  • Tortor
  • VPNvpn
  • Proxyproxy
  • Alojamientohosting
  • Relay privadorelay

Instalación

En marcha en cuatro pasos

  1. 1

    Consigue una API key

    Caddy la lee de IPSCANNER_API_KEY, o de api_key en el Caddyfile.

    Crea una API key gratis
    shell
    export IPSCANNER_API_KEY=<your API key>
  2. 2

    Compila Caddy con el módulo

    Con xcaddy o en Docker. Requiere Caddy 2.8 o posterior.

    xcaddy build --with github.com/ipscanner/ipscanner-caddy
    ./caddy list-modules | grep ipscanner
  3. 3

    Añade un sitio en el panel

    El sitio guarda la política y muestra el tráfico. Copia su Site ID.

    Añade un sitio
    example.comCaddyMonitor

    Site ID

    site_4fQ8nZ2kLm7xR1vT9cBw

  4. 4

    Añade la directiva

    Sin línea order global: se ejecuta antes de basic_auth y reverse_proxy.

    Caddyfile
    example.com {
    	ipscanner {
    		site_id site_4fQ8nZ2kLm7xR1vT9cBw
    	}
    	reverse_proxy localhost:8080
    }

Sin sitio

Caddyfile o JSON

El modo y las clases bloqueadas van en la configuración. Un matcher como ipscanner /app/* limita la revisión a algunas rutas.

example.com {
	ipscanner {
		mode enforce
		block_classes malicious_automation tor
	}
	reverse_proxy localhost:8080
}

Placeholders

Usa el veredicto en logs y matchers

Los define la directiva, para log_append, matchers vars y cabeceras.

Placeholder
{http.vars.ipscanner.status}ok, error, timeout, backoff, skipped
{http.vars.ipscanner.class}Clase de tráfico, definida si el estado es ok
{http.vars.ipscanner.action}allow, flag, block, would_flag, would_block
Caddyfile
log_append ipscanner_class {http.vars.ipscanner.class}
log_append ipscanner_action {http.vars.ipscanner.action}

@flagged vars ipscanner.action flag
request_header @flagged X-Review 1

IP del cliente

Detrás de un balanceador o CDN

El módulo revisa la IP del cliente que resolvió Caddy. Confía en tus proxies, y trusted_proxies_strict impide que un visitante añada un salto falso.

Caddyfile
{
	servers {
		trusted_proxies static 10.0.0.0/8
		trusted_proxies_strict
	}
}

Ajustes

Subdirectivas

Todas opcionales. La configuración JSON usa los mismos nombres.

SubdirectivaPor defecto
api_keyAPI key. Sin ella, todas las solicitudes pasan.{env.IPSCANNER_API_KEY}
site_idSitio del panel que fija el modo y la política.Vacío
modeMonitor o enforce. Con un sitio, solo cuenta monitor.monitor
block_classesBloqueadas en modo enforce sin sitio.malicious_automation
timeoutTiempo máximo por revisión.1.5s
cache_ttlCuánto se reutiliza un veredicto por visitante.10m
cache_sizeEntradas de la caché de veredictos.10000
policy_ttlCuánto dura en caché la política del sitio.30s
skip_pathsRegex de rutas que nunca se revisan.Archivos estáticos
block_messageTexto de la página 403.Blocked by IPScanner edge guard.
debugCabeceras de debug y una línea de log por decisión.Desactivado
api_urlURL base de la API.https://ipscanner.io

Siempre pasa

Lo que nunca bloquea

  • Rastreadores de búsqueda y de IA verificados.
  • Direcciones privadas y de loopback, y solicitudes OPTIONS.
  • Archivos estáticos y todo lo que esté en skip_paths.
  • Cualquier solicitud, si IPScanner va lento o no responde.

Preguntas

Preguntas sobre el módulo de Caddy

No. El modo monitor marca la solicitud como would_block y la deja pasar. Cambia el sitio o el Caddyfile a enforce cuando el log te convenza.

Empieza en modo monitor

Compila Caddy con el módulo, lee una semana de decisiones y luego bloquea.