Module Caddy
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+
Journal d'accès
Classes de trafic
Chaque visiteur reçoit une classe. Bloquez une classe depuis le tableau de bord, ou indiquez-la dans block_classes.
Installation
Caddy la lit dans IPSCANNER_API_KEY, ou dans api_key du Caddyfile.
export IPSCANNER_API_KEY=<your API key>Avec xcaddy ou dans Docker. Caddy 2.8 ou plus récent.
xcaddy build --with github.com/ipscanner/ipscanner-caddy
./caddy list-modules | grep ipscannerLe site porte la politique et affiche le trafic. Copiez son Site ID.
Ajouter un siteSite ID
site_4fQ8nZ2kLm7xR1vT9cBw
Pas de ligne order globale : elle s'exécute avant basic_auth et reverse_proxy.
example.com {
ipscanner {
site_id site_4fQ8nZ2kLm7xR1vT9cBw
}
reverse_proxy localhost:8080
}Sans site
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
Définis par la directive, pour log_append, les matchers vars et les en-têtes.
| Placeholder | Valeurs |
|---|---|
{http.vars.ipscanner.status}ok, error, timeout, backoff, skipped | ok, error, timeout, backoff, skipped |
{http.vars.ipscanner.class}Classe de trafic, définie si le statut est ok | Classe de trafic, définie si le statut est 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 1IP client
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.
{
servers {
trusted_proxies static 10.0.0.0/8
trusted_proxies_strict
}
}Réglages
Toutes facultatives. La configuration JSON reprend les mêmes noms.
| Sous-directive | Par défaut | Rôle |
|---|---|---|
api_keyClé API. Sans clé, chaque requête passe. | {env.IPSCANNER_API_KEY} | Clé API. Sans clé, chaque requête passe. |
site_idSite du tableau de bord qui fixe mode et politique. | Vide | Site du tableau de bord qui fixe mode et politique. |
modeMonitor ou enforce. Avec un site, seul monitor s'applique. | monitor | Monitor ou enforce. Avec un site, seul monitor s'applique. |
block_classesBloquées en mode enforce sans site. | malicious_automation | Bloquées en mode enforce sans site. |
timeoutBudget de temps par vérification. | 1.5s | Budget de temps par vérification. |
cache_ttlDurée de réutilisation d'un verdict par visiteur. | 10m | Durée de réutilisation d'un verdict par visiteur. |
cache_sizeEntrées du cache de verdicts. | 10000 | Entrées du cache de verdicts. |
policy_ttlDurée de cache de la politique du site. | 30s | Durée de cache de la politique du site. |
skip_pathsRegex des chemins jamais vérifiés. | Fichiers statiques | Regex des chemins jamais vérifiés. |
block_messageTexte de la page 403. | Blocked by IPScanner edge guard. | Texte de la page 403. |
debugEn-têtes de debug et une ligne de log par décision. | Désactivé | En-têtes de debug et une ligne de log par décision. |
api_urlURL de base de l'API. | https://ipscanner.io | URL de base de l'API. |
Passe toujours
skip_paths.Questions
Compilez Caddy avec le module, lisez une semaine de décisions, puis bloquez.