
Asymmetrische Verteidigung gegen feindliche KI-Agenten. VeilGate bewertet jede eingehende Anfrage, leitet verdächtige Agenten in eine pro-IP-konsistente Honeypot-Umgebung um und quantifiziert die dem Angreifer auferlegten Rechenkosten.
VeilGate ist ein Open-Source-Deception-Proxy für Teams, die die Kosten automatischer Sicherheitsabfragen erhöhen möchten, ohne zerbrechliche Blockierungsregeln vor echte Benutzer zu setzen.
Er sitzt vor einer Webanwendung, bewertet jede Anfrage und wählt eines von drei Ergebnissen aus:
Das Ziel ist nicht magische Unverwundbarkeit. Das Ziel ist bessere Wirtschaftlichkeit: Menschen und normale Automatisierung sollen flüssig arbeiten, während KI-gestützte Scanner Zeit, Tokens und Aufmerksamkeit auf glaubwürdige Sackgassen verschwenden.
observe, challenge, tarpit und schwellwertgesteuertem auto-Modus.X-Veilgate-Token-Header-Transport, damit Cross-Origin-SPAs das Token lösen und bei nachfolgenden API-Aufrufen wieder anhängen können. Die 401-Challenge-Antwort ist SPA-bewusst: Sie gibt HTML für Top-Level-Navigationen und JSON (mit den PoW-Metadaten zum Inline-Lösen) für fetch- / XHR-Kontexte zurück.Lädt die Binärdatei herunter, installiert einen systemd-Dienst, installiert Community-Regeln und schreibt eine Starter-Konfiguration im Modus observe.
# Einzeiler
curl -sSL https://veilgate.dev/install.sh | sudo bash -s -- --upstream http://localhost:3000
# Oder zuerst herunterladen, dann ausführen
curl -sSL https://veilgate.dev/install.sh -o install.sh
sudo ./install.sh --upstream http://localhost:3000
Flags:
| Flag | Standard | Beschreibung |
|---|---|---|
--upstream URL | http://127.0.0.1:3000 | Ihre Upstream-Anwendung |
--listen ADDR | :8080 | Proxy-Hör-Adresse |
--metrics-listen ADDR | 127.0.0.1:9090 | Metriken (privat halten) |
--secret SECRET | Aufforderung oder generiert | Challenge-Signatur-Geheimnis |
--user USER | veilgate | Dienstbenutzer für VeilGate |
--no-service | — | systemd-Dienst überspringen |
--no-rules | — | Installation der Community-Regeln überspringen |
Die paketierte Konfiguration verwendet rules_dir: "~/.veilgate/rules". Unter systemd läuft VeilGate als Benutzer veilgate, dessen Home-Verzeichnis /var/lib/veilgate ist, sodass dies zu /var/lib/veilgate/.veilgate/rules aufgelöst wird.
Wenn --secret bei einer Neuinstallation weggelassen wird, fragt das Installationsprogramm auf interaktiven Terminals nach und generiert ansonsten ein zufälliges Geheimnis. Wenn der Dienstbenutzer nicht existiert, fragt das Installationsprogramm auf interaktiven Terminals vor der Erstellung und standardmäßig auf Erstellung bei nicht-interaktiven Installationen.
Nach der 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
Voraussetzung: Go 1.25.10 oder neuer.
git clone https://github.com/C0oki3s/veilgate.git
cd veilgate
make build
./veilgate -config configs/veilgate.yaml
Standardmäßig hört VeilGate auf :8080, leitet an http://localhost:3000 weiter und stellt Metriken auf :9090 bereit.
Die Standardkonfiguration startet im Modus observe — Basislauf von normalem Traffic, bevor challenge oder tarpit aktiviert werden.
| Modus | Verwenden Sie ihn, wenn | Verhalten |
|---|---|---|
observe | Erste Ausbringung und Optimierung | Bewertet und zeichnet Traffic auf, leitet immer weiter |
challenge | Sie fühlen sich wohl dabei, verdächtige Clients zu unterbrechen | Traffic mit mittlerem Score erhält einen Arbeitsnachweis |
tarpit | Sie bereit sind, Hochvertrauens-Agenten zu täuschen | Traffic mit hohem Score erhält die Fake-App |
auto | Sie möchten, dass Schwellwerte die Durchsetzung pro Anfrage steuern | Unter Schwellwert weiterleiten, mittlere Scores challenge, hohe Scores tarpit |
Empfohlene Ausrollung:
observe mindestens einige Tage lang aus.challenge für uneindeutigen Traffic.tarpit, sobald Ihre Schwellwerte zu Ihrer Umgebung passen.Beginnen Sie mit 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"
Vollständige Referenz: Konfigurationsreferenz.
VeilGate liefert keine eingebetteten Regeln aus. Die Binärdatei liest rules_dir beim Start und lädt Änderungen per Hot-Reload; wenn das Verzeichnis leer ist, startet es ohne Erkennungssignale. Regeln stammen von einem Ort:
install.sh klont es automatisch bei der ersten Installation. Sie können es auch manuell mit dem integrierten Unterbefehl update-rules aktualisieren — kein Neubau, kein Neustart:| Installiert Regeln automatisch? | |
|---|---|
install.sh (erster Lauf) | Ja — klont via Git |
veilgate-Binärdatei (Start) | Nein — liest rules_dir, nie abrufend |
veilgate update-rules | Nur wenn Sie es explizit aufrufen |
# Das neueste Paket in ~/.veilgate/rules (dem Standardort) installieren
veilgate update-rules
# Oder auf eine Release-Tag festlegen
veilgate update-rules --dir ~/.veilgate/rules --version v1.2.0
# Verfügbare Releases auflisten
veilgate update-rules --list
Nach der Installation erkennt der fsnotify-Watcher von VeilGate die neuen Dateien innerhalb von ~500 ms. Jede vorhandene Datei wird vor dem Überschreiben als <name>.bak gesichert (übergeben Sie --no-backup, um dies zu überspringen). Die installierte Version wird in <rules_dir>/.rules-version.json aufgezeichnet, sodass CI und Betreiber ohne Einsicht in Git-Metadaten prüfen können, was läuft.