
敵対的AIエージェントに対する非対称防御。VeilGateは受信リクエストごとに評価を行い、疑わしいエージェントをIPごとに一貫したハニーポット環境にリダイレクトし、攻撃者に課せられた計算コストを定量化します。
VeilGateは、チームが自動セキュリティプロービングのコストを引き上げつつ、実際のユーザーの前に脆弱なブロックルールを配置しないことを目指す、オープンソースの欺瞞プロキシです。
Webアプリケーションの前に配置され、各リクエストをスコアリングし、以下の3つの結果のいずれかを選択します。
目標は魔法のような無敵ではありません。目標はより良い経済性です:人間と通常の自動化を動かし続けながら、AI支援スキャナーが信頼できる行き止まりに時間、トークン、注意を費やすようにすることです。
observe、challenge、tarpit、および閾値駆動のautoモードを備えたリバースプロキシ。X-Veilgate-Tokenヘッダー**の両方のトランスポートをサポートし、クロスオリジンSPAがトークンを解決して後続のAPI呼び出しに再添付できるようにします。401チャレンジ応答はSPA対応です:トップレベルナビゲーションにはHTMLを、fetch/XHRコンテキストにはインラインで解決するPoWメタデータを含むJSONを返します。バイナリをダウンロードし、systemdサービスをインストールし、コミュニティルールをインストールし、observeモードのスターター設定を書き込みます。
# ワンライナー
curl -sSL https://veilgate.dev/install.sh | sudo bash -s -- --upstream http://localhost:3000
# またはダウンロードしてから実行
curl -sSL https://veilgate.dev/install.sh -o install.sh
sudo ./install.sh --upstream http://localhost:3000
フラグ:
パッケージ化された設定はrules_dir: "~/.veilgate/rules"を使用します。systemd下では、VeilGateはホームが/var/lib/veilgateであるveilgateユーザーとして実行されるため、これは/var/lib/veilgate/.veilgate/rulesに解決されます。
新規インストールで--secretが省略された場合、インタラクティブ端末ではインストーラーがプロンプトを表示し、それ以外ではランダムなシークレットを生成します。サービスユーザーが存在しない場合、インストーラーはインタラクティブ端末では作成前に確認し、非インタラクティブインストールでは作成をデフォルトとします。
インストール後:
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
前提条件: Go 1.25.10 以降。
git clone https://github.com/C0oki3s/veilgate.git
cd veilgate
make build
./veilgate -config configs/veilgate.yaml
デフォルトでは、VeilGateは:8080で待ち受け、http://localhost:3000にプロキシし、:9090でメトリクスを公開します。
デフォルト設定はobserveモードで開始されます — challengeまたはtarpitを有効にする前に、通常のトラフィックのベースラインを取得します。
推奨ロールアウト:
observeを実行します。challengeを有効にします。tarpitを有効にします。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"
完全なリファレンス: Configuration reference
VeilGateは組み込みのルールは提供しません。バイナリは起動時にrules_dirを読み込み、変更をホットリロードします。ディレクトリが空の場合、ゼロの検出シグナルで起動します。ルールは以下の1つのソースから提供されます:
install.shスクリプトが初回インストール時に自動的にクローンします。また、内蔵のupdate-rulesサブコマンドを使って手動で更新することもできます — 再ビルドや再起動は不要です:| ルールを自動インストールしますか? | |
|---|---|
install.sh(初回実行) | はい — gitでクローン |
veilgateバイナリ(起動時) |
# 最新のパックを~/.veilgate/rules(デフォルトの場所)にインストール
veilgate update-rules
# リリースタグを指定
veilgate update-rules --dir ~/.veilgate/rules --version v1.2.0
# 利用可能なリリースを一覧表示
veilgate update-rules --list
インストール後、VeilGateのfsnotifyウォッチャーが約500ms以内に新しいファイルを検出します。各既存ファイルは上書き前に<name>.bakとしてバックアップされます(--no-backupを渡すとスキップ)。インストールされたバージョンは<rules_dir>/.rules-version.jsonに記録され、CIや運用担当者がgitメタデータを参照せずに実行中のバージョンを確認できます。
両方のディレクトリをセキュリティポリシーとして扱ってください — 特にdetector.yamlとip_reputation.yamlは、本番にデプロイする前に変更をレビューしてください。完全ガイドとロールバック手順: docs/how-to/install-community-rules.md
veilgate.yamlとルールファイル。veilgate update-rulesによるコミュニティ管理ルールセットのインストールと更新。challengeまたはtarpitモードを使用する前に、VEILGATE_SECRETまたはchallenge.secretを設定してください。VeilGateはデフォルトのチャレンジシークレットでobserveモード以外では起動を拒否します。rules/以下のファイルをセキュリティポリシーとして扱ってください。レビューし、バージョン管理してください。make test
make fmt
make build
トップレベルのtestsフォルダにはブラックボックス統合テストが含まれています。パッケージプライベートの単体テストは各パッケージの隣にあり、エクスポートされていないディテクター、TLSフィンガープリント、tarpit、MLヘルパーを検証します。
Apache-2.0。 LICENSEを参照。
| フラグ | デフォルト | 説明 |
|---|
--upstream URL | http://127.0.0.1:3000 | 上流のアプリケーション |
--listen ADDR | :8080 | プロキシリスンアドレス |
--metrics-listen ADDR | 127.0.0.1:9090 | メトリクス(内部に保持) |
--secret SECRET | プロンプトまたは生成 | チャレンジ署名用シークレット |
--user USER | veilgate | VeilGateを実行するサービスユーザー |
--no-service | — | systemdサービスをスキップ |
--no-rules | — | コミュニティルールのインストールをスキップ |
| モード | 使用するタイミング | 動作 |
|---|
observe | 初期ロールアウトとチューニング | トラフィックをスコアリングおよび記録し、常に上流に転送 |
challenge | 疑わしいクライアントを中断しても構わない場合 | 中程度のスコアのトラフィックにProof of Workを課す |
tarpit | 高信頼度エージェントを欺く準備ができている場合 | 高スコアのトラフィックに偽アプリを提供 |
auto | 閾値でリクエストごとに執行を駆動したい場合 | 閾値未満は転送、中間スコアはチャレンジ、高スコアはtarpit |
いいえ — rules_dirを読み込むのみ、フェッチはしない |
veilgate update-rules | 明示的に呼び出した場合のみ |