
انفرا جارد هو وكيل إعادة توجيه ومدير للقيادة والتحكم (C2) يحمي بنية فريقك الأحمر من التهديد المُسند.

متتبع البنية التحتية للفريق الأحمر وموجّه C2 -- بديل حديث لـ [RedWarden](https://github.com/mgeeky/RedWarden).
يجلس InfraGuard بين الإنترنت وخادم فريق C2 الخاص بك، حيث يتحقق من كل طلب وارد مقابل ملف تعريف C2 القابل للتشكيل الخاص بك ويحظر أي شيء لا يتوافق معه. يتم إعادة توجيه الماسحات الضوئية والروبوتات وتحقيقات الفريق الأزرق إلى موقع خادع بينما تمر حركة المرور الشرعية للـ beacon إلى خادم فريقك.


## البنية المعمارية

## الميزات
### التمرير والمستمعون
- **تمرير متعدد النطاقات** -- تمرير عدة نطاقات في وقت واحد، لكل منها ملفات تعريف C2 ومصادر علوية وقواعد مستقلة
- **مستمعون متعددو البروتوكولات** -- مستمعو HTTP/HTTPS وHTTP/3 (QUIC) وWebSocket وgRPC وDNS وMQTT ونفق TCP يعملون في وقت واحد مع استخبارات IP مشتركة وتتبع الأحداث
- **قاطع الدائرة** -- حماية من الأعطال لكل مصدر علوي مع حالات مغلق/مفتوح/نصف مفتوح؛ ينتقل إلى إجراء الإسقاط الخاص بالنطاق عندما تكون الخوادم الخلفية غير قابلة للوصول
- **التجاوز عند فشل البروتوكول** -- تجاوز تلقائي وعودة تلقائية بين بروتوكولات المستمع مرتبة حسب الأولوية
### دعم ملفات تعريف C2
- **التحقق من ملف تعريف C2** -- تحليل وتطبيق ملفات تعريف Cobalt Strike وMythic وBrute Ratel C4 وSliver وHavoc وNighthawk وPoshC2 كقواعد موجّه
- **ملفات تعريف قابلة للتبديل السريع** -- تبديل ملف تعريف C2 النشط لنطاق في وقت التشغيل من لوحة التحكم دون إعادة تشغيل الوكيل
- **معالج إنشاء ملفات التعريف** -- إنشاء ملفات تعريف C2 جديدة من الصفر لجميع الأنواع الثمانية المدعومة عبر نموذج موجّه، أو استيراد وتحميل ملفات التعريف الموجودة مع الكشف التلقائي عن النوع والتحقق منه
- **إنشاء ملفات التعريف بمساعدة الذكاء الاصطناعي** -- تكامل اختياري مع Ollama يوفر لوحة محادثة في لوحة التحكم للمساعدة في إنشاء ملفات التعريف ونصائح OPSEC
### خط أنابيب التصفية
- **خط أنابيب تصفية قائم على التقييم** -- 10 مرشحات يساهم كل منها بدرجة من 0.0 إلى 1.0؛ عتبة قابلة للتكوين تحدد الحظر/السماح. المرشحات: JA3، IP، bot، header، DNS، geo، profile، replay، enumeration، sandbox.
- **تصفية بصمة JA3 TLS** -- حظر Masscan وZGrab2 وShodan وcurl وPython requests وNmap عند طبقة مصافحة TLS قبل تبادل أي بيانات HTTP؛ يعمل عبر ترويسة الوكيل العكسي أو بروتوكول asyncio مخصص؛ وضع قائمة السماح الاختياري يفرض JA3 الخاص بالـ beacon
- **كشف البيئات المعزولة والمتصفحات بلا واجهة** -- تراكم النقاط عبر إشارات HTTP: HeadlessChrome UA، غياب Accept-Language، Chrome بدون sec-ch-ua، وكلاء الماسح الضوئي Safe Links وmsnbot، ترتيب Accept غير المتصفحي
- **كشف تعداد المسارات** -- تتبع URI الفريد لكل IP في نافذة منزلقة؛ يحظر dirbuster/ffuf/gobuster قبل أن يرسموا فضاء URI
- **كشف تعداد النطاقات الفرعية DNS** -- يتتبع استجابات NXDOMAIN لكل IP عميل؛ يحظر تلقائيًا عناوين IP المصدر عند تجاوز العتبة
- **مكافحة الروبوتات / مكافحة الزحف** -- أكثر من 40 نمطًا معروفًا لـ User-Agent الخاص بالماسحات الضوئية/الروبوتات، وكشف شذوذ الترويسات
- **حماية من إعادة التشغيل** -- رفض الطلبات المكررة حسب تجزئة المحتوى؛ تُحفظ التجزئات في SQLite بحيث تستمر الحماية عبر عمليات إعادة التشغيل
- **إجراءات الإسقاط** -- إعادة توجيه، إعادة تعيين TCP، تمرير إلى موقع خادع، أو tarpit (استجابة بطيئة لإضاعة وقت الماسح الضوئي)
### الاستخبارات
- **استخبارات IP** -- قوائم حظر CIDR مدمجة لـ 19 نطاقًا لموردي الأمان (Shodan، Censys، Rapid7، إلخ)، تصفية GeoIP، مطابقة الكلمات المفتاحية في DNS العكسي
- **خلاصات استخبارات التهديدات** -- تحديث تلقائي لقوائم الحظر من مصادر عامة (abuse.ch، Emerging Threats، Spamhaus DROP، Binary Defense) مع فاصل تحديث قابل للتكوين وتخزين مؤقت على القرص
- **حظر IP الديناميكي** -- حظر عناوين IP خارج النطاقات المدرجة في القائمة البيضاء؛ إضافة تلقائية لعناوين IP إلى القائمة البيضاء بعد N طلب C2 صالح
- **إثراء القائمة البيضاء** -- يتم إثراء نطاقات CIDR المدرجة في القائمة البيضاء تلقائيًا ببيانات ASN والمؤسسة والدولة والقارة عند بدء التشغيل عبر قواعد بيانات GeoIP
- **كشف الاحتراق** -- مراقبة سجلات شفافية الشهادات عبر crt.sh، والمراقبة الذاتية لسمعة النطاق عبر URLhaus/OpenPhish/Google Safe Browsing، وكشف المحللين عبر النطاقات عندما يصل IP واحد إلى عدة نطاقات للمشغل
- **تقييم ثقة الاحتراق** -- درجة مستمرة من 0 إلى 100 من 6 إشارات مرجحة: تنوع JA3، ارتفاعات الحجم، ASNs جديدة، التعرض في سجلات CT، إصابات السمعة، ومحاولات المصادقة الفاشلة. يتضمن إجراءات موصى بها: المراقبة، التدوير، أو الاحتراق الفوري.
- **حقن رموز Canary** -- بكسلات التتبع وروابط المصائد ونماذج المصائد تُحقن تلقائيًا في الصفحات الخادعة لكشف تحقيق الفريق الأزرق
- **مراقبة DNS السلبية** -- تستعلم عن CIRCL PDNS للكشف عن الحل الخارجي لنطاقاتك؛ تكشف السجلات الجديدة وارتفاعات NXDOMAIN والتعرض لأول مرة
### تسليم الحمولات
- **مسارات تسليم المحتوى** -- تقديم الحمولات والخوادع والملفات الثابتة في مسارات محددة عبر PwnDrop أو مخزن ملفات Mythic أو نظام الملفات المحلي أو خوادم HTTP الخلفية للوكيل؛ تسليم شرطي اختياري لتقديم محتوى حقيقي للأهداف وخوادع للماسحات الضوئية
- **تجهيز ملفات Mythic** -- خادم `mythic_file` الخلفي يمرر `/direct/download/{uuid}` الخاص بـ Mythic على عناوين URL نظيفة؛ UUID ثابت أو وضع الوكيل؛ التحكم في الوصول مقدم من مكدس التصفية الخاص بـ InfraGuard
- **رموز الحمولات لمرة واحدة** -- رموز تُصدر تلقائيًا عند إضافة beacon ديناميكيًا إلى القائمة البيضاء؛ فرض ذري للاستخدام لمرة واحدة عبر SQLite يمنع إعادة تشغيل URL من قبل المحللين أو البيئات المعزولة؛ TTL قابل للتكوين وحد أقصى للاستخدام
- **تحديد معدل لكل مسار** -- محدد معدل تنزيل لكل IP بنافذة منزلقة على مسارات المحتوى؛ تجاوز الحد يقدم الخادع المكوّن للماسح الضوئي أو 429
- **حراس التسليم** -- مفاتيح البيئة لمسارات المحتوى: اشتراط IP الـ beacon، قائمة سماح UA، قيم ترويسات مطلوبة، ترويسات محظورة؛ الفحوصات الفاشلة تقدم إجراء إسقاط النطاق، وليس 403 خام
- **رموز حملات التصيد** -- حماية صفحات التصيد خلف رموز لكل حملة مدمجة في روابط البريد الإلكتروني؛ قائمة رموز ثابتة أو رموز ذاتية التحقق موقعة بـ HMAC مع TTL قابل للتكوين
### المرونة
- **تدوير البنية التحتية** -- تدوير أزرق-أخضر بنقرة واحدة عبر Terraform على 5 مزودي سحابة مع فحوصات مسبقة وتراجع وحالة مشفرة بـ age
- **جدولة التدوير** -- سياسات تدوير آلية: فاصل زمني ثابت، مُشغَّل بالاحتراق، عتبة عدد الطلبات، وتدوير متدرج
- **مراقب التدوير التلقائي** -- يستعلم عن درجة الاحتراق وانتهاء صلاحية الشهادة على فاصل زمني؛ يدوّر تلقائيًا عند تجاوز عتبة الاحتراق أو عندما يتبقى للشهادة أقل من N يوم، أو يتراجع إلى وضع التنبيه فقط مع سقف للتكلفة
- **قواطع الدائرة** -- تتبع الأعطال لكل مصدر علوي مع حالات HEALTHY / PROBING / TRIPPED ومهلة استرداد قابلة للتكوين، تظهر مباشرة في أداة Upstreams في لوحة التحكم
- **مواجهة النطاق** -- توجيه C2 عبر CDN مع تقسيم ترويسة SNI/Host مع تجريد ترويسات CDN وحماية SSRF
- **مفتاح الرجل الميت** -- TTL لنبض المشغل يوقف تلقائيًا تمرير C2 إذا فشل المشغل في تسجيل الحضور
- **مرآة الفريق البنفسجي** -- نسخة مكررة بأسلوب أطلق وانسَ للأحداث المسموح بها إلى مجمّع الفريق الأزرق لتقييم المشاركة
- **خادم الحالة المشتركة (Redis)** -- ذاكرة تخزين مؤقت اختيارية لإعادة التشغيل عبر العقد، قائمة بيضاء ديناميكية، حقيبة جلسة beacon، وحد معدل الإسقاط بحيث ترى النسخ المتماثلة الموسعة أفقيًا نفس الحالة
- **وكلاء الحافة** -- Cloudflare Worker وAWS Lambda لمواجهة النطاق عبر بنية CDN التحتية، وحظر الدول على الحافة، وإعادة كتابة المضيف
### لوحة التحكم وأدوات المشغل
- **لوحة تحكم ويب** -- تطبيق صفحة واحدة في الوقت الفعلي مع صفحة تسجيل دخول، تغذية طلبات مباشرة، إحصائيات النطاق، أعلى عناوين IP المحظورة، بث أحداث WebSocket، وإجراءات حظر/إضافة للقائمة البيضاء/إلغاء حظر مضمّنة
- **إدارة الصفحات الخادعة** -- عرض وتحرير صفحات HTML الخادعة مباشرة من لوحة التحكم؛ **نظرة عامة على Canary** لكل نطاق (مفاتيح تشغيل البكسل / الرابط المخفي / النموذج المخفي) ولوحة **إصابات Canary** التي تُظهر كل ماسح ضوئي أو بيئة معزولة سحبت أصلًا خادعًا
- **رموز خادعة مع نقاط نهاية رد نداء مخصصة** -- بكسل التتبع المحقون والرابط المخفي والنموذج المخفي كل منها يُطلق حدث `canary_hit` على `/_ig/px|hp|hf?c=<token>`؛ تصل الإصابات إلى قاعدة بيانات التتبع مع `filter_result=canary_hit` وتُبث مباشرة إلى صفحة الخوادع وأي إضافة تنبيه مشتركة
- **علامة تبويب الإضافات** -- تسرد الإضافات المحمّلة مع مفاتيح تشغيل/تعطيل في وقت التشغيل (بدون إعادة تشغيل) و**سوق الإضافات** لإضافة أي من الإضافات الـ 29 المدمجة بنقرة واحدة؛ كل تعديل يُحفظ في `config.yaml` ويُسجَّل كإيداع في مستودع سجل التكوين
- **مركز القيادة** -- لوحة تحكم تجميع متعددة النسخ تدمج الإحصائيات والطلبات والأحداث المباشرة من عدة عقد InfraGuard في عرض واحد، مع **خريطة الأسطول** (MapLibre) التي ترسم كل وكيل وكل IP مصدر محظور عند خط الطول/العرض الجغرافي الخاص به ومفتاح تشغيل إضافة التوزيع للعمليات عبر النسخ
- **واجهة الطرفية** -- TUI قائمة على Textual مع شاشة تسجيل دخول، استعلام API مباشر، سجل طلبات مرمّز بالألوان
- **تقارير المشاركة** -- تقارير HTML أو JSON أو CSV مكتفية ذاتيًا مع تفصيل لكل نطاق، فعالية التصفية، ومسار تدقيق المشغل
- **مقاييس Prometheus** -- نقطة نهاية `/metrics` تعرض عدادات الطلبات، رسوم بيانية لزمن استجابة المصدر العلوي، حالة قاطع الدائرة، حداثة الخلاصات، الاتصالات النشطة، ومقياس `infraguard_active_beacons` الذي يتوسع عليه Helm HPA
- **OpenTelemetry** -- مصدّر OTLP للتتبع والمقاييس اختياري؛ ملف تعريف compose للمراقبة ينشئ مجمّع OTEL بالإضافة إلى Prometheus ولوحة تحكم Grafana نظرة عامة مُجهزة تلقائيًا
- **مخطط Kubernetes Helm** -- وكيل، لوحة تحكم، Redis StatefulSet، ServiceMonitor، وHPA على مقياس الـ beacon النشط؛ يُشحن تحت `deploy/helm/infraguard/`
### التكاملات والإضافات
- **تكامل SIEM** -- إضافات مدمجة لـ Elasticsearch وWazuh وSyslog (CEF/JSON) مع تمرير مجمّع
- **تنبيهات Webhook** -- إضافات مدمجة لـ Discord (embeds) وSlack (Block Kit) وwebhook عام و**PagerDuty** (Events API v2، مفتاح إزالة التكرار) و**Telegram** (محادثة عمليات ثنائية الاتجاه: `/status`، `/sessions`، `/kill`، `/ack` من الهاتف)
- **إضافات الكشف** -- قواعد YARA على أجسام الطلبات، استعلام GreyNoise Community، مصنف الروبوتات بتعلم الآلة (انحدار لوجستي على JA4 + UA + التوقيت)، canary الاستجابة (canarytokens.org)، بصمة p0f v3، إثراء JA4/JA4H، إثراء GeoIP
- **معالجات الاستجابة** -- معيد كتابة HTML، علامة مائية للحمولة، مزيل التوقيعات، تحدي JS، محاكاة ذاكرة التخزين المؤقت، tarpit بطيء، حظر ظلي (إرجاع 200 للماسحات الضوئية حتى لا يتكيفوا أبدًا)
- **تكامل Phishing.club** -- مستقبل webhook موقّع بـ HMAC يستوعب أحداث التصيد ويضيف تلقائيًا عناوين IP للأهداف الناقرة إلى القائمة البيضاء
- **نظام الإضافات** -- بنية معمارية مدفوعة بالأحداث مع خطافات `on_event`، تكوين لكل إضافة، وتصفية الأحداث؛ يمكن تشغيل أو تحميل كل إضافة من علامة تبويب **الإضافات** في لوحة التحكم دون إعادة تشغيل، ويستمر التغيير في `config.yaml` مع إيداع تدقيق في سجل التكوين
### التكوين والنشر
- **تشفير التكوين** -- تشفير age (الملف كامل) وSOPS (لكل قيمة) مع دعم ملف `.env`
- **التحقق من التكوين** -- أداة فرق CLI وأكثر من 20 فحصًا أمنيًا وتشغيليًا وفحصًا لـ TLS
- **إدارة مفاتيح API** -- إنشاء وإلغاء وتدوير مفاتيح API مع حدود معدل لكل مفتاح وتتبع الاستخدام والحصص
- **إنشاء تكوين الخادم الخلفي** -- إنشاء تكوينات Nginx أو Caddy أو Apache مع TLS وتصفية IP وفحوصات الترويسات والأسماء المستعارة والترويسات المخصصة
- **استيعاب القواعد** -- استيراد قوائم حظر IP وأنماط User-Agent من ملفات `.htaccess` و`robots.txt` الموجودة
- **نشر Docker** -- Dockerfile + docker-compose مع Let's Encrypt اختياري، محمّل GeoIP، خادم حمولات PwnDrop، ومساعد Ollama AI
- **دعم GeoIP** -- جميع قواعد بيانات GeoLite2 الثلاث (City، ASN، Country) مع تنزيل تلقائي عبر Docker
- **احتياطي TLS ذاتي التوقيع** -- إنشاء شهادات تلقائيًا عندما لا تكون المسارات المكوّنة موجودة
- **دعم متغيرات البيئة** -- تحميل تلقائي لملف `.env`؛ صيغة `${VAR}` تعمل في جميع قيم ومفاتيح التكوين
- **نقطة نهاية صحة قابلة للتكوين** -- تغيير مسار فحص الصحة لتجنب البصمات
- **تسجيل منظم** -- سجلات منظمة بتنسيق JSON عبر structlog
- **التتبع والاستمرارية** -- SQLite مع وضع WAL لتسجيل الطلبات والإحصائيات وسجل العقد وتجزئات إعادة التشغيل ورموز الحمولات
## دليل التثبيت
راجع [صفحة الويكي](https://infraguard.whispergate.org/docs/getting-started/installation/) للتثبيت
## مرجع CLI```
infraguard --version Show version
infraguard --help Show help
infraguard run -c config.yaml Start the reverse proxy
infraguard run -c config.yaml --port 8443 Override listen port
infraguard run -c config.yaml --host 0.0.0.0 Override bind address
infraguard dashboard -c config.yaml Start the web dashboard
infraguard dashboard -c config.yaml --port 9090 Override dashboard port
infraguard tui Launch TUI with login screen
infraguard tui --url http://host:8080 --token TOK Auto-connect to dashboard
infraguard tui -c config.yaml Read URL/token from config
infraguard command-post -c command-post.yaml Start multi-instance dashboard
infraguard command-post --instance name:url:token Add instance via CLI (repeatable)
infraguard profile parse <file> Parse and display a C2 profile
infraguard profile parse <file> --format json Output as JSON
infraguard profile parse <file> --type brute_ratel Force profile type
infraguard profile convert <file> -o out.json Convert profile to JSON
# Supported --type values: auto, cobalt_strike, mythic, brute_ratel, sliver, havoc, nighthawk, poshc2
# Auto-detection: .profile = CS, .toml = Havoc, .yaml = PoshC2, .json = auto-detect by keys
infraguard ingest <files...> Ingest .htaccess/robots.txt rules
infraguard ingest <files...> --format blocklist Output as IP blocklist
infraguard ingest <files...> --format json Output as JSON
infraguard ingest <files...> -o banned_ips.txt Write blocklist to file
infraguard generate nginx -c config.yaml Generate Nginx config
infraguard generate caddy -c config.yaml Generate Caddyfile
infraguard generate apache -c config.yaml Generate Apache VirtualHost
infraguard init -o config.yaml Generate starter config
infraguard validate -c config.yaml Validate config file
infraguard simulate-beacon -c config.yaml --domain <d> Run one synthetic beacon
through the loaded filter
pipeline in-process
infraguard drop-preview -c config.yaml --domain <d> Render the drop-action
response without any live
traffic (decoy / redirect
/ tarpit preview)
infraguard events tail -c config.yaml Tail the tracking DB as a
structured event stream
infraguard profile transpile <in> --to <c2> Convert a C2 profile
between formats using the
shared profile IR
infraguard preflight -c config.yaml Adversary-emulation
self-test: DNS, cert,
upstream, decoy dir,
writes a Markdown report
infraguard config set <domains.<d>.upstream> <value> Mutate config from CLI;
writes .bak, atomic file
replace, and commit to the
config-history git repo
infraguard config log Show mutation history
infraguard config revert HEAD~N Roll back N mutations
```
### خيارات المولّد
يقبل الأمر `generate` علامات إضافية لتخصيص المشغّل:
| العلامة | الوصف |
|---|---|
| `--listen-port PORT` | تجاوز منفذ الاستماع (الافتراضي: من الإعدادات) |
| `--ssl-cert PATH` | تجاوز مسار شهادة SSL |
| `--ssl-key PATH` | تجاوز مسار مفتاح SSL |
| `--redirect-url URL` | تجاوز عنوان URL لإعادة التوجيه للطلبات المحظورة |
| `--default-action redirect\|404` | الإجراء للطلبات غير المطابقة |
| `--no-ip-filter` | حذف كتل السماح/الرفض لعناوين IP |
| `--no-header-check` | حذف قواعد التحقق من الترويسات |
| `--alias DOMAIN:ALIAS` | إضافة اسم بديل للخادم (قابل للتكرار) |
| `--header NAME:VALUE` | إضافة ترويسة استجابة مخصصة (قابلة للتكرار) |
## Command Post (لوحة تحكم متعددة النسخ)
عند تشغيل عدة نسخ من InfraGuard عبر خوادم VPS أو مزوّدي خدمات سحابية مختلفين، تجمع Command Post الإحصائيات والطلبات والأحداث المباشرة من جميع العُقد في لوحة تحكم واحدة.```
┌─────────────────────────────┐
│ Command Post Dashboard │
│ http://localhost:9090 │
└──────────┬──────────────────┘
│ parallel fetch
┌─────┼──────┬──────────┐
▼ ▼ ▼ ▼
IG-1 IG-2 IG-3 ... IG-N
```

### البدء السريع```bash
# Via config file
infraguard command-post -c config/command-post.yaml
# Via CLI args
infraguard command-post \
--instance "prod:https://ig1.example.com:8080:TOKEN1" \
--instance "staging:https://ig2.example.com:8080:TOKEN2" \
--port 9090
# Via Docker
docker compose --profile command-post up -d command-post
```
### الإعداد
أنشئ `config/command-post.yaml`:```yaml
instances:
- name: "prod-cs"
url: "https://ig1.example.com:8080"
token: "${IG_PROD_TOKEN}"
- name: "prod-mythic"
url: "https://ig2.example.com:8080"
token: "${IG_MYTHIC_TOKEN}"
- name: "staging"
url: "https://ig3.example.com:8080"
token: "${IG_STAGING_TOKEN}"
port: 9090
# auth_token: "${COMMAND_POST_TOKEN}"
```
### ما يعرضه
- **إحصاءات مدمجة** -- إجمالي الطلبات، المسموح بها، المحظورة مجمّعة عبر جميع النسخ
- **شريط صحة النسخ** -- حالة خضراء/حمراء لكل عقدة متصلة
- **سجل الطلبات المتداخل** -- الطلبات من جميع النسخ مرتبة حسب الطابع الزمني، كل منها موسوم باسم نسخته
- **أعلى عناوين IP المحظورة المدمجة** -- مجمّعة عبر جميع النسخ
- **إحصاءات لكل نطاق** -- النطاقات من جميع النسخ مع معدلات حظر معاد حسابها
- **بث الأحداث المباشر** -- أحداث WebSocket متعددة الإرسال من جميع العقد
- **إجراءات الحظر/القائمة البيضاء** -- توزيع على جميع النسخ أو نسخة محددة
### نقاط نهاية API
| نقطة النهاية | الطريقة | الوصف |
|---|---|---|
| `/api/instances` | GET | سرد جميع النسخ مع حالة الصحة |
| `/api/stats` | GET | إحصاءات مدمجة من جميع النسخ |
| `/api/requests` | GET | سجل الطلبات المتداخل من جميع النسخ |
| `/api/intel/whitelist` | POST | إضافة عنوان IP إلى القائمة البيضاء على جميع النسخ |
| `/api/intel/blocklist` | POST | حظر عنوان IP على جميع النسخ |
| `/api/intel/blocklist` | DELETE | إلغاء حظر عنوان IP على جميع النسخ |
| `/ws/events` | WS | أحداث مباشرة متعددة الإرسال من جميع النسخ |
## نشر Docker
### البدء السريع```bash
cp .env.example .env
# Edit .env with your domain, teamserver, and token
docker compose up -d
```
يبدأ هذا خدمتين:
- **proxy** -- المُعيد التوجيه على المنفذين 443 و80
- **dashboard** -- واجهة الويب على المنفذ 8080
### مع Let's Encrypt```bash
# Set in .env:
# INFRAGUARD_LETSENCRYPT=true
# INFRAGUARD_DOMAIN=cdn.example.com
# [email protected]
# Obtain the initial certificate
docker compose --profile letsencrypt up certbot
# Start the proxy (will use the LE cert)
docker compose up -d proxy dashboard
# Start auto-renewal (checks every 12 hours)
docker compose --profile letsencrypt up -d certbot-renew
```
متطلبات Let's Encrypt:
- يجب أن يكون المنفذ 80 قابلاً للوصول من الإنترنت
- يجب أن يُترجم `INFRAGUARD_DOMAIN` إلى عنوان IP العام لهذا المضيف
- يجب أن يكون `INFRAGUARD_DOMAIN_EMAIL` عنوان بريد إلكتروني صالحاً
### مع قواعد بيانات GeoIP```bash
# Download all three GeoLite2 databases (City, ASN, Country)
docker compose --profile geoip up geoip-update
# Then start normally - databases are mounted at /app/geoip/
docker compose up -d proxy dashboard
```
### باستخدام PwnDrop (تسليم الحمولة)```bash
# Start PwnDrop alongside the proxy
docker compose --profile pwndrop up -d pwndrop
# Access PwnDrop admin UI at https://localhost:8443
# InfraGuard reaches it internally at http://pwndrop:80
```
ثم قم بتكوين مسارات المحتوى في الإعدادات الخاصة بك لتمرير مسارات الحمولة عبر وكيل إلى PwnDrop:```yaml
domains:
cdn.example.com:
content_routes:
- path: "/downloads/*"
backend:
type: "pwndrop"
target: "http://pwndrop:80"
auth_token: "${PWNDROP_TOKEN}"
```
### مع Ollama (توليد ملف تعريف بمساعدة الذكاء الاصطناعي)```bash
# Start the Ollama service
docker compose --profile ollama up -d ollama
# Pull the default model (~5 GB)
docker compose --profile ollama exec ollama ollama pull qwen3:8b
# The dashboard's AI chat panel will connect automatically
```
متغير البيئة للوحة التحكم `INFRAGUARD_OLLAMA_URL` مُهيأ مسبقًا في docker-compose.yml. عند تشغيل Ollama، يظهر مفتاح تبديل المساعد الذكي في صفحة الطُعم والملفات الشخصية للوحة التحكم.
### التوسيع```bash
# Run multiple redirector nodes
docker compose up -d --scale proxy-node=3
```
قم بإلغاء تعليق خدمة `proxy-node` في `docker-compose.yml` لتفعيلها.
### وحدات التخزين
| وحدة التخزين | الغرض |
|---|---|
| `./config` | ملفات التكوين (مثبتة للقراءة فقط) |
| `./examples` | ملفات تعريف C2 (مثبتة للقراءة فقط) |
| `./rules` | قوائم الحظر المستوردة وملفات مصدر القواعد (مثبتة للقراءة فقط) |
| `./data` | قاعدة بيانات SQLite وملفات التعريف المُنشأة (محفوظة) |
| `certs` | شهادات TLS (مشتركة بين الوكيل و certbot) |
| `geoip` | قواعد بيانات GeoLite2 (يتم تعبئتها بواسطة خدمة `geoip-update`) |
| `pwndrop-data` | الملفات المرفوعة وقاعدة بيانات PwnDrop |
| `ollama-data` | أوزان وتكوين نموذج Ollama |
> على مضيفات Linux، نفّذ `chown -R 1000:1000 config/` إذا كنت تريد أن تستمر التغييرات المُدارة من لوحة التحكم
> (drop-action، تبديل ملف التعريف، تفعيل/تعطيل الإضافة) في `config.yaml`. يحتاج
> معرّف المستخدم غير الجذر للحاوية إلى إذن الكتابة على وحدة التثبيت.
## النشر على Kubernetes
مخطط Helm الموجود تحت `deploy/helm/infraguard/` ينشر الوكيل ولوحة التحكم و
StatefulSet الخاص بـ Redis، و HPA يقوم بتوسيع الوكيل بناءً على المقياس المخصص
`infraguard_active_beacons` (يحتاج `prometheus-adapter` داخل العنقود). راجع صفحة
[Kubernetes Deployment](https://infraguard.whispergate.org/docs/deployment/kubernetes/)
في الويكي للحصول على الدليل الكامل.```bash
# One-shot install
helm install infraguard deploy/helm/infraguard \
--namespace infraguard --create-namespace \
-f my-values.yaml
# Get the API token the chart minted
kubectl get secret -n infraguard infraguard-secrets \
-o jsonpath='{.data.INFRAGUARD_API_TOKEN}' | base64 -d
```
تصل فحوصات المخطط إلى `/health` على مستمع HTTPS مع `scheme: HTTPS`، لذا يحتاج الحاوية إلى كتلة `tls:` في الإعدادات (الرجوع إلى الشهادة الموقعة ذاتيًا مقبول).
## المساهمات
- Mgeeky - الفكرة الأصلية ([RedWarden](https://github.com/mgeeky/RedWarden))
---
[Read more](https://github.com/whispergate/infraguard)