Module Caddy

Module Caddy pour bloquer bots, VPN et Tor

Ajoutez une directive ipscanner à un bloc de site et chaque visiteur est vérifié avant reverse_proxy. Le module démarre en mode monitor et ne bloque rien tant que vous ne basculez pas.

Gratuit, licence MITCaddy 2.8+

Classes de trafic

Ce qu'il peut bloquer

Chaque visiteur reçoit une classe. Bloquez une classe depuis le tableau de bord, ou indiquez-la dans block_classes.

  • Humainhuman
  • Robot vérifiéverified_botPasse toujours
  • Agent IAai_agent
  • Automatisation malveillantemalicious_automationPar défaut en enforce
  • Tortor
  • VPNvpn
  • Proxyproxy
  • Hébergementhosting
  • Relais privérelay

Installation

En ligne en quatre étapes

  1. 1

    Obtenir une clé API

    Caddy la lit dans IPSCANNER_API_KEY, ou dans api_key du Caddyfile.

    Créer une clé API gratuite
    shell
    export IPSCANNER_API_KEY=<your API key>
  2. 2

    Compiler Caddy avec le module

    Avec xcaddy ou dans Docker. Caddy 2.8 ou plus récent.

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

    Ajouter un site dans le tableau de bord

    Le site porte la politique et affiche le trafic. Copiez son Site ID.

    Ajouter un site
    example.comCaddyMonitor

    Site ID

    site_4fQ8nZ2kLm7xR1vT9cBw

  4. 4

    Ajouter la directive

    Pas de ligne order globale : elle s'exécute avant basic_auth et reverse_proxy.

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

Sans site

Caddyfile ou JSON

Le mode et les classes bloquées se règlent dans la configuration. Un matcher comme ipscanner /app/* limite la vérification à certains chemins.

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

Placeholders

Le verdict dans les logs et les matchers

Définis par la directive, pour log_append, les matchers vars et les en-têtes.

Placeholder
{http.vars.ipscanner.status}ok, error, timeout, backoff, skipped
{http.vars.ipscanner.class}Classe de trafic, définie si le statut est 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 client

Derrière un load balancer ou un CDN

Le module vérifie l'IP client résolue par Caddy. Déclarez vos proxys de confiance, et trusted_proxies_strict empêche un visiteur d'ajouter un faux saut.

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

Réglages

Sous-directives

Toutes facultatives. La configuration JSON reprend les mêmes noms.

Sous-directivePar défaut
api_keyClé API. Sans clé, chaque requête passe.{env.IPSCANNER_API_KEY}
site_idSite du tableau de bord qui fixe mode et politique.Vide
modeMonitor ou enforce. Avec un site, seul monitor s'applique.monitor
block_classesBloquées en mode enforce sans site.malicious_automation
timeoutBudget de temps par vérification.1.5s
cache_ttlDurée de réutilisation d'un verdict par visiteur.10m
cache_sizeEntrées du cache de verdicts.10000
policy_ttlDurée de cache de la politique du site.30s
skip_pathsRegex des chemins jamais vérifiés.Fichiers statiques
block_messageTexte de la page 403.Blocked by IPScanner edge guard.
debugEn-têtes de debug et une ligne de log par décision.Désactivé
api_urlURL de base de l'API.https://ipscanner.io

Passe toujours

Ce qu'il ne bloque jamais

  • Les robots de recherche et d'IA vérifiés.
  • Les adresses privées et loopback, et les requêtes OPTIONS.
  • Les fichiers statiques et tout ce qui est dans skip_paths.
  • Toute requête, quand IPScanner est lent ou indisponible.

Questions

FAQ du module Caddy

Non. Le mode monitor marque la requête would_block et la laisse passer. Passez le site ou le Caddyfile en enforce quand le journal vous convient.

Commencez en mode monitor

Compilez Caddy avec le module, lisez une semaine de décisions, puis bloquez.