Caddy-module
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+
Access-log
Verkeersklassen
Elke bezoeker krijgt één klasse. Blokkeer een klasse in het dashboard, of zet hem in block_classes.
Installatie
Caddy leest hem uit IPSCANNER_API_KEY, of uit api_key in de Caddyfile.
export IPSCANNER_API_KEY=<your API key>Met xcaddy of in Docker. Vereist Caddy 2.8 of nieuwer.
xcaddy build --with github.com/ipscanner/ipscanner-caddy
./caddy list-modules | grep ipscannerDe site bewaart de policy en toont het verkeer. Kopieer de Site ID.
Voeg een site toeSite ID
site_4fQ8nZ2kLm7xR1vT9cBw
Geen globale order-regel nodig: hij draait vóór basic_auth en reverse_proxy.
example.com {
ipscanner {
site_id site_4fQ8nZ2kLm7xR1vT9cBw
}
reverse_proxy localhost:8080
}Zonder site
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
Gezet door de directive, voor log_append, vars-matchers en headers.
| Placeholder | Waarden |
|---|---|
{http.vars.ipscanner.status}ok, error, timeout, backoff, skipped | ok, error, timeout, backoff, skipped |
{http.vars.ipscanner.class}Verkeersklasse, gezet bij status ok | Verkeersklasse, gezet bij status ok |
{http.vars.ipscanner.action}allow, flag, block, would_flag, would_block | allow, flag, block, would_flag, would_block |
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 1Client-IP
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.
{
servers {
trusted_proxies static 10.0.0.0/8
trusted_proxies_strict
}
}Instellingen
Allemaal optioneel. De JSON-config gebruikt dezelfde namen.
| Subdirective | Standaard | Wat het doet |
|---|---|---|
api_keyAPI-sleutel. Zonder sleutel komt elk verzoek door. | {env.IPSCANNER_API_KEY} | API-sleutel. Zonder sleutel komt elk verzoek door. |
site_idSite in het dashboard die modus en policy bepaalt. | Leeg | Site in het dashboard die modus en policy bepaalt. |
modeMonitor of enforce. Met een site werkt alleen monitor. | monitor | Monitor of enforce. Met een site werkt alleen monitor. |
block_classesGeblokkeerd in enforce-modus zonder site. | malicious_automation | Geblokkeerd in enforce-modus zonder site. |
timeoutTijdsbudget voor één controle. | 1.5s | Tijdsbudget voor één controle. |
cache_ttlHoe lang een oordeel per bezoeker geldt. | 10m | Hoe lang een oordeel per bezoeker geldt. |
cache_sizeItems in de oordeel-cache. | 10000 | Items in de oordeel-cache. |
policy_ttlHoe lang de site-policy in de cache blijft. | 30s | Hoe lang de site-policy in de cache blijft. |
skip_pathsRegex van paden die nooit worden gecontroleerd. | Statische bestanden | Regex van paden die nooit worden gecontroleerd. |
block_messageTekst van de 403-pagina. | Blocked by IPScanner edge guard. | Tekst van de 403-pagina. |
debugDebug-headers en één logregel per beslissing. | Uit | Debug-headers en één logregel per beslissing. |
api_urlBasis-URL van de API. | https://ipscanner.io | Basis-URL van de API. |
Komt altijd door
skip_paths.Vragen
Bouw Caddy met de module, lees een week aan beslissingen en blokkeer dan.