
Asymmetric defense against adversarial AI agents. VeilGate evaluates each incoming request, redirects suspected agents into a per-IP-consistent honeypot environment, and quantifies the computational cost imposed on the attacker.
VeilGate est un proxy de déception open-source pour les équipes qui souhaitent augmenter le coût des sondages de sécurité automatisés sans placer de règles de blocage fragiles devant les utilisateurs réels.
Il se place devant une application web, évalue chaque requête et choisit l'une des trois issues suivantes :
L'objectif n'est pas une invulnérabilité magique. L'objectif est une meilleure économie : laisser les humains et l'automatisation normale continuer, tout en faisant en sorte que les scanners assistés par IA perdent du temps, des jetons et de l'attention sur des impasses crédibles.
observe, challenge, tarpit et auto piloté par seuil.X-Veilgate-Token afin que les SPA cross-origin puissent résoudre et rattacher le jeton lors des appels API ultérieurs. La réponse 401 au défi est compatible SPA : elle renvoie du HTML pour les navigations de niveau supérieur et du JSON (avec les métadonnées PoW à résoudre en ligne) pour les contextes fetch / XHR.Télécharge le binaire, installe un service systemd, installe les règles communautaires et écrit une configuration de démarrage en mode observe.
# En une ligne
curl -sSL https://veilgate.dev/install.sh | sudo bash -s -- --upstream http://localhost:3000
# Ou téléchargez d'abord, puis exécutez
curl -sSL https://veilgate.dev/install.sh -o install.sh
sudo ./install.sh --upstream http://localhost:3000
Drapeaux :
La configuration fournie utilise rules_dir: "~/.veilgate/rules". Sous systemd, VeilGate s'exécute en tant qu'utilisateur veilgate dont le répertoire personnel est /var/lib/veilgate, donc cela se résout en /var/lib/veilgate/.veilgate/rules.
Si --secret est omis lors d'une nouvelle installation, le programme d'installation invite sur les terminaux interactifs et génère sinon un secret aléatoire. Si l'utilisateur système n'existe pas, le programme d'installation demande avant de le créer sur les terminaux interactifs et par défaut le crée pour les installations non interactives.
Après l'installation :
systemctl status veilgate
journalctl -u veilgate -f
docker run -d --name veilgate \
--network host \
-v /etc/veilgate/veilgate.yaml:/etc/veilgate/veilgate.yaml:ro \
-v ~/.veilgate/rules:/home/nonroot/.veilgate/rules \
-e VEILGATE_SECRET=$(openssl rand -hex 32) \
ghcr.io/c0oki3s/veilgate:latest -config /etc/veilgate/veilgate.yaml
Prérequis : Go 1.25.10 ou plus récent.
git clone https://github.com/C0oki3s/veilgate.git
cd veilgate
make build
./veilgate -config configs/veilgate.yaml
Par défaut, VeilGate écoute sur :8080, proxy vers http://localhost:3000 et expose les métriques sur :9090.
La configuration par défaut démarre en mode observe — observer le trafic normal avant d'activer challenge ou tarpit.
Déploiement recommandé :
observe pendant au moins plusieurs jours.challenge pour le trafic ambigu.tarpit une fois que vos seuils correspondent à votre environnement.Commencez par configs/veilgate.yaml :
listen: ":8080"
upstream: "http://localhost:3000"
mode: "observe"
rules_dir: "~/.veilgate/rules"
detector:
score_challenge_threshold: 40
score_tarpit_threshold: 70
trusted_ips: []
trusted_proxies: []
metrics:
listen: ":9090"
Référence complète : Référence de configuration.
VeilGate n'embarque aucune règle. Le binaire lit rules_dir au démarrage et recharge les modifications à chaud ; si le répertoire est vide, il démarre sans aucun signal de détection. Les règles proviennent d'un seul endroit :
install.sh le clone automatiquement lors de la première installation. Vous pouvez également le mettre à jour manuellement avec la sous-commande intégrée update-rules — sans reconstruction, sans redémarrage :| Installe les règles automatiquement ? | |
|---|---|
| (première exécution) |
# Installe le dernier pack dans ~/.veilgate/rules (emplacement par défaut)
veilgate update-rules
# Ou épinglez à un tag de version
veilgate update-rules --dir ~/.veilgate/rules --version v1.2.0
# Liste les versions disponibles
veilgate update-rules --list
Après l'installation, le watcher fsnotify de VeilGate détecte les nouveaux fichiers en environ 500 ms. Chaque fichier existant est sauvegardé sous <name>.bak avant d'être remplacé (passez --no-backup pour ignorer). La version installée est enregistrée dans <rules_dir>/.rules-version.json afin que les CI et les opérateurs puissent vérifier ce qui est exécuté sans consulter les métadonnées git.
Traitez les deux répertoires comme une politique de sécurité — examinez les modifications avant de les déployer en production, en particulier detector.yaml et ip_reputation.yaml. Guide complet et procédure de restauration :
docs/how-to/install-community-rules.md.
veilgate.yaml et fichiers de règles.veilgate update-rules.VEILGATE_SECRET ou challenge.secret avant d'utiliser les modes challenge ou tarpit. VeilGate refuse de démarrer en dehors du mode observe avec le secret de défi par défaut.rules/ comme une politique de sécurité. Examinez-les et versionnez-les.make test
make fmt
make build
Le dossier tests de premier niveau contient des tests d'intégration boîte noire. Les tests unitaires privés aux packages se trouvent à côté de leurs packages car ils vérifient des helpers de détection, d'empreinte TLS, de tarpit et de ML non exportés.
Apache-2.0. Voir LICENSE.
| Drapeau | Défaut | Description |
|---|
--upstream URL | http://127.0.0.1:3000 | Votre application en amont |
--listen ADDR | :8080 | Adresse d'écoute du proxy |
--metrics-listen ADDR | 127.0.0.1:9090 | Métriques (garder privé) |
--secret SECRET | invite ou généré | Secret de signature des défis |
--user USER | veilgate | Utilisateur système pour exécuter VeilGate |
--no-service | — | Ignorer le service systemd |
--no-rules | — | Ignorer l'installation des règles communautaires |
| Mode | Quand l'utiliser | Comportement |
|---|
observe | Déploiement initial et réglage | Note et enregistre le trafic, transmet toujours en amont |
challenge | Vous êtes à l'aise pour interrompre les clients suspects | Le trafic de score moyen reçoit une preuve de travail |
tarpit | Vous êtes prêt à tromper les agents à haute confiance | Le trafic de score élevé reçoit l'application factice |
auto | Vous voulez que les seuils pilotent l'application par requête | Transmettre en dessous du seuil, défier les scores moyens, piéger les scores élevés |
install.sh| Oui — clone via git |
Binaire veilgate (démarrage) | Non — lit rules_dir, ne télécharge jamais |
veilgate update-rules | Seulement lorsque vous l'appelez explicitement |