
دفاع غير متماثل ضد وكلاء الذكاء الاصطناعي العدائيين. يقيّم VeilGate كل طلب وارد، ويعيد توجيه الوكلاء المشتبه بهم إلى بيئة مصيدة (honeypot) متسقة لكل عنوان IP، ويحدد كميًا التكلفة الحاسوبية المفروضة على المهاجم.
VeilGate هو بروكسي خداع مفتوح المصدر للفرق التي تريد رفع تكلفة الاستكشاف الأمني الآلي دون وضع قواعد حظر هشة أمام المستخدمين الحقيقيين.
إنه يقع أمام تطبيق ويب، ويقيّم كل طلب، ويختار واحدًا من ثلاث نتائج:
الهدف ليس حصانة سحرية. الهدف هو اقتصاديات أفضل: إبقاء البشر والأتمتة العادية تعمل، مع جعل الماسحات المدعومة بالذكاء الاصطناعي تنفق الوقت والتوكنز والانتباه على طرق مسدودة مقنعة.
observe وchallenge وtarpit وauto المدعوم بالعتبات.X-Veilgate-Token حتى تتمكن تطبيقات SPA عبر الأصول من حل التوكن وإعادة إرفاقه في استدعاءات API اللاحقة. استجابة التحدي 401 واعية بـ SPA: تُرجع HTML لعمليات التنقل في المستوى الأعلى وJSON (مع بيانات PoW الوصفية لحلها مباشرة) لسياقات fetch/XHR.ينزّل الملف الثنائي، ويثبّت خدمة systemd، ويثبّت قواعد المجتمع، ويكتب إعدادًا أوليًا في وضع observe.
# One-liner
curl -sSL https://veilgate.dev/install.sh | sudo bash -s -- --upstream http://localhost:3000
# Or download first, then run
curl -sSL https://veilgate.dev/install.sh -o install.sh
sudo ./install.sh --upstream http://localhost:3000
الخيارات:
يستخدم الإعداد المُرفق rules_dir: "~/.veilgate/rules". ضمن systemd، يعمل VeilGate كمستخدم veilgate الذي يكون مجلده الرئيسي /var/lib/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"
المرجع الكامل: مرجع الإعدادات.
لا يأتي VeilGate مع أي قواعد مدمجة. يقرأ الملف الثنائي rules_dir عند بدء التشغيل ويعيد تحميل التغييرات مباشرة؛ إذا كان الدليل فارغًا، يبدأ بدون أي إشارات كشف. تأتي القواعد من مكان واحد:
install.sh باستنساخها تلقائيًا عند التثبيت الأول. يمكنك أيضًا تحديثها يدويًا باستخدام الأمر الفرعي المدمج update-rules — لا إعادة بناء ولا إعادة تشغيل:| يثبّت القواعد تلقائيًا؟ | |
|---|---|
install.sh (التشغيل الأول) |
# Install the latest pack into ~/.veilgate/rules (the default location)
veilgate update-rules
# Or pin to a release tag
veilgate update-rules --dir ~/.veilgate/rules --version v1.2.0
# List available releases
veilgate update-rules --list
بعد التثبيت، يلتقط مراقب fsnotify الخاص بـ VeilGate الملفات الجديدة خلال ~500 مللي ثانية. يتم أخذ نسخة احتياطية من كل ملف موجود باسم <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.VEILGATE_SECRET أو challenge.secret قبل استخدام وضع challenge أو tarpit. يرفض VeilGate بدء التشغيل خارج وضع observe مع سر التحدي الافتراضي.rules/ كسياسة أمنية. راجعها وحافظ على إصداراتها.make test
make fmt
make build
يحتوي مجلد tests ذو المستوى الأعلى على اختبارات تكامل الصندوق الأسود. توجد اختبارات الوحدات الخاصة بالحزم بجوار حزمها لأنها تتحقق من أدوات الكشف غير المُصدَّرة وبصمات TLS وtarpit ومساعدي التعلم الآلي.
Apache-2.0. انظر LICENSE.
| الخيار | الافتراضي | الوصف |
|---|
--upstream URL | http://127.0.0.1:3000 | تطبيقك العلوي (upstream) |
--listen ADDR | :8080 | عنوان استماع البروكسي |
--metrics-listen ADDR | 127.0.0.1:9090 | المقاييس (أبقِها خاصة) |
--secret SECRET | مُطالَب به أو مُولَّد | سر توقيع التحدي |
--user USER | veilgate | مستخدم الخدمة لتشغيل VeilGate |
--no-service | — | تخطي خدمة systemd |
--no-rules | — | تخطي تثبيت قواعد المجتمع |
| الوضع | استخدمه عندما | السلوك |
|---|
observe | النشر الأولي والضبط | يقيّم ويسجّل حركة المرور، ويمررها دائمًا إلى الواجهة العلوية |
challenge | تكون مرتاحًا لمقاطعة العملاء المشبوهين | حركة المرور ذات الدرجة المتوسطة تحصل على إثبات عمل |
tarpit | تكون مستعدًا لخداع الوكلاء عاليي الثقة | حركة المرور ذات الدرجة العالية تستقبل التطبيق الوهمي |
auto | تريد أن تقود العتبات التنفيذ لكل طلب | مرر أسفل العتبة، وتحدَّ الدرجات المتوسطة، وصيّد الدرجات العالية |
| نعم — يستنسخ عبر git |
ملف veilgate الثنائي (بدء التشغيل) | لا — يقرأ rules_dir ولا يجلب أبدًا |
veilgate update-rules | فقط عندما تستدعيه صراحةً |