Caddy-module

Caddy-module die bots, VPN's en Tor blokkeert

Zet één ipscanner-directive in een site-blok en elke bezoeker wordt gecontroleerd vóór reverse_proxy. De module start in monitor-modus en blokkeert niets tot je omschakelt.

Gratis, MIT-licentieCaddy 2.8+

Verkeersklassen

Wat het kan blokkeren

Elke bezoeker krijgt één klasse. Blokkeer een klasse in het dashboard, of zet hem in block_classes.

  • Menshuman
  • Geverifieerde botverified_botKomt altijd door
  • AI-agentai_agent
  • Kwaadaardige automatiseringmalicious_automationStandaard bij enforce
  • Tortor
  • VPNvpn
  • Proxyproxy
  • Hostinghosting
  • Privé-relayrelay

Installatie

Live in vier stappen

  1. 1

    Haal een API-sleutel

    Caddy leest hem uit IPSCANNER_API_KEY, of uit api_key in de Caddyfile.

    Maak een gratis API-sleutel
    shell
    export IPSCANNER_API_KEY=<your API key>
  2. 2

    Bouw Caddy met de module

    Met xcaddy of in Docker. Vereist Caddy 2.8 of nieuwer.

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

    Voeg een site toe in het dashboard

    De site bewaart de policy en toont het verkeer. Kopieer de Site ID.

    Voeg een site toe
    example.comCaddyMonitor

    Site ID

    site_4fQ8nZ2kLm7xR1vT9cBw

  4. 4

    Voeg de directive toe

    Geen globale order-regel nodig: hij draait vóór basic_auth en reverse_proxy.

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

Zonder site

Caddyfile of JSON

Zet de modus en de geblokkeerde klassen in de config. Een matcher zoals ipscanner /app/* beperkt de controle tot bepaalde paden.

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

Placeholders

Gebruik het oordeel in logs en matchers

Gezet door de directive, voor log_append, vars-matchers en headers.

Placeholder
{http.vars.ipscanner.status}ok, error, timeout, backoff, skipped
{http.vars.ipscanner.class}Verkeersklasse, gezet bij status 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

Client-IP

Achter een load balancer of CDN

De module controleert het client-IP dat Caddy heeft bepaald. Vertrouw je proxy's, en trusted_proxies_strict voorkomt dat een bezoeker een nep-hop toevoegt.

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

Instellingen

Subdirectives

Allemaal optioneel. De JSON-config gebruikt dezelfde namen.

SubdirectiveStandaard
api_keyAPI-sleutel. Zonder sleutel komt elk verzoek door.{env.IPSCANNER_API_KEY}
site_idSite in het dashboard die modus en policy bepaalt.Leeg
modeMonitor of enforce. Met een site werkt alleen monitor.monitor
block_classesGeblokkeerd in enforce-modus zonder site.malicious_automation
timeoutTijdsbudget voor één controle.1.5s
cache_ttlHoe lang een oordeel per bezoeker geldt.10m
cache_sizeItems in de oordeel-cache.10000
policy_ttlHoe lang de site-policy in de cache blijft.30s
skip_pathsRegex van paden die nooit worden gecontroleerd.Statische bestanden
block_messageTekst van de 403-pagina.Blocked by IPScanner edge guard.
debugDebug-headers en één logregel per beslissing.Uit
api_urlBasis-URL van de API.https://ipscanner.io

Komt altijd door

Wat het nooit blokkeert

  • Geverifieerde zoek- en AI-crawlers.
  • Privé- en loopback-adressen, en OPTIONS-verzoeken.
  • Statische bestanden en alles in skip_paths.
  • Elk verzoek, als IPScanner traag is of plat ligt.

Vragen

FAQ over de Caddy-module

Nee. Monitor-modus markeert een verzoek als would_block en laat het door. Zet de site of de Caddyfile op enforce als de log klopt.

Begin in monitor-modus

Bouw Caddy met de module, lees een week aan beslissingen en blokkeer dan.