تخطَّ إلى المحتوى

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

يوفر هذا المكون خادم مصدر واحد يستضيف تطبيقات ويب متعددة قابلة للاختراق لأغراض اختبار الأمان وعروض التوضيح. ويمثل “المصدر” في بنية موازن التحميل النموذجية — خادم المحتوى الخلفي الذي يحميه موازن تحميل F5 XC HTTP.

في بيئات الإنتاج:

End User -> F5 XC HTTP LB (WAF/Bot/API Security) -> Origin Server -> Application

يحل هذا المكون محل خادم تطبيقات الإنتاج الفعلي بجهاز VM مبني لهذا الغرض، يشغّل تطبيقات معروفة قابلة للاختراق تُفعّل قواعد WAF وسياسات أمان API وكشف البوتات.

graph LR
    Client[Client Browser] --> XCHLB[F5 XC HTTP LB]
    XCHLB --> NGINX[nginx Reverse Proxy<br/>Ubuntu 24.04 · D16s_v3<br/>reuseport · 16 workers]
    NGINX --> |/| DEFAULT[Landing Page]
    NGINX --> |/juice-shop/| JS[Juice Shop ×4<br/>Ports 3001-3004<br/>hash cookie_token · cache]
    NGINX --> |/dvwa/| DVWA[DVWA-FPM ×4<br/>Ports 8101-8104<br/>hash cookie_PHPSESSID]
    NGINX --> |/vampi/| VAMPI[VAmPI ×4<br/>Ports 5101-5104<br/>ip_hash · gunicorn]
    NGINX --> |/httpbin/| HTTPBIN[httpbin ×4<br/>Ports 8201-8204<br/>gunicorn -w 4]
    NGINX --> |/whoami/| WHOAMI[whoami ×4<br/>Ports 8082-8085]
    NGINX --> |/csd-demo/| CSD[CSD Demo ×4<br/>Ports 5001-5004<br/>ip_hash · gunicorn -w 1]
    NGINX --> |/dvga/| DVGA[DVGA ×4<br/>Ports 5201-5204<br/>ip_hash · SQLite]
    NGINX --> |/restaurant/| REST[RESTaurant ×4<br/>Ports 8301-8304<br/>round-robin]
    XCHLB --> |:8888| CRAPI[crAPI ×7 microservices<br/>Port 8888<br/>web · identity · community<br/>workshop · postgres · mongo · mailhog]
    DVWA --> DB[(MariaDB 10.11<br/>dvwa-db)]
    REST --> RESTDB[(PostgreSQL 15.4<br/>restaurant-db)]

41 حاوية على جهاز VM من نوع Standard_D16s_v3 (16 vCPU، 64 GiB RAM، 60 GiB قرص).

يقوم الوكيل العكسي nginx بما يلي:

  • الاستماع على المنفذ 80 مع reuseport وbacklog=4096 لاستيعاب حركة مرور CDN عالية التزامن
  • التوجيه عبر بادئة المسار إلى تجمعات upstream موزونة التحميل (4 مثيلات لكل تطبيق)
  • الجلسات الثابتة لمنع فقدان الحالة: hash $cookie_token لـ Juice Shop، وhash $cookie_PHPSESSID لـ DVWA، وip_hash لـ VAmPI وCSD Demo (حالة SQLite/في الذاكرة لكل مثيل)
  • Proxy cache للأصول الثابتة في Juice Shop (منطقة 10 MB، بحد أقصى 100 MB، مدة صلاحية 60 ثانية)
  • تعطيل تسجيل الوصول لمنع استنفاد القرص تحت اختبار حمل CDN (مع logrotate كطبقة دفاع إضافية)
  • تمرير رؤوس العميل (X-Real-IP وX-Forwarded-For وX-Forwarded-Proto) لرؤية المصدر
  • ضبط النواة عبر sysctl: somaxconn=65535 وtcp_tw_reuse=1 وip_local_port_range=1024-65535
المسارUpstreamالمثيلاتالمنافذالجلسة الثابتةالغرض
/nginxصفحة الهبوط مع روابط لجميع التطبيقات
/healthnginxنقطة نهاية JSON للفحص الصحي (9 تطبيقات مدرجة)
/juice-shop/juice_shop43001-3004hash $cookie_tokenأمان تطبيقات الويب الحديثة (XSS، الحقن، CSRF)
/dvwa/dvwa4 + MariaDB8101-8104hash $cookie_PHPSESSIDاختبار WAF الكلاسيكي بمستوى صعوبة قابل للضبط
/vampi/vampi45101-5104ip_hashاختبار أمان REST API (OWASP API Top 10)
/httpbin/httpbin_up48201-8204خدمة طلب/استجابة HTTP لعروض API
/whoami/whoami_up48082-8085تشخيصات الطلبات — يعرض جميع الرؤوس وعنوان IP للعميل
/csd-demo/csd_demo45001-5004ip_hashاختبار الدفاع من جهة العميل (هجمات Magecart)
/dvga/dvga45201-5204ip_hashاختبار أمان GraphQL API (الحقن، DoS، تجاوز المصادقة)
/restaurant/restaurant4 + PostgreSQL8301-8304أمان REST API (OWASP API Top 10 2023)
:8888crapi7 microservices8888OWASP crAPI (BOLA، BFLA، mass assignment، SSRF، JWT)

تصميم المكونات المعيارية

Section titled “تصميم المكونات المعيارية”

هذا المكون جزء من بيئة مختبر أكبر. كل مكون مستقل بذاته ويُنشر بشكل مستقل:

  • هذا المكون يوفر خادم المصدر (nginx + حاويات Docker على Azure VM)
  • محاكي CDN يوفر طبقة حافة CDN (nginx مع التخزين المؤقت على Azure VM)
  • المكونات الأخرى توفر إعداد F5 XC، وDNS، وسياسات WAF، وأمان API، وغيرها

يضيف المشغل البشري المكونات واحدًا تلو الآخر. توثيق كل مكون مكتوب بحيث يستطيع مساعد الذكاء الاصطناعي قراءته ونشر البنية التحتية باستقلالية.

التطبيقسبب الاختيار
Juice Shopالمشروع الرائد لـ OWASP؛ تطبيق SPA حديث بـ Node.js مع أكثر من 100 تحدٍّ يغطي OWASP Top 10؛ يُصان بنشاط؛ 4 مثيلات مع proxy cache
DVWAالمعيار الصناعي لاختبار WAF؛ مستويات أمان قابلة للضبط (منخفض/متوسط/عالٍ/مستحيل)؛ بناء مخصص بـ php-fpm + nginx للأداء؛ خلفية MariaDB 10.11 مشتركة
VAmPIمبني خصيصًا لـ OWASP API Security Top 10؛ REST API بثغرات معروفة؛ gunicorn مع 4 عمال لكل مثيل؛ ip_hash ثابت لاتساق SQLite
httpbinخدمة اختبار HTTP الأساسية لـ Kenneth Reitz؛ gunicorn مع 4 عمال gevent؛ مفيد لعروض API وفحص الطلبات
whoamiخادم صدى الطلبات من Traefik؛ يعرض تفاصيل الطلب الكاملة كما يراها المصدر — ضروري للتحقق من حقن رؤوس F5 XC
CSD Demoصفحة دفع مخصصة مع 5 هجمات بأسلوب Magecart قابلة للتفعيل (ناسخ البطاقة، حاقن النماذج، مسجّل لوحة المفاتيح، تعدين العملات المشفرة، اختطاف DOM)؛ نقطة نهاية للتسريب + لوحة تحكم المهاجم؛ gunicorn بعامل واحد للحفاظ على الحالة في الذاكرة
DVGADamn Vulnerable GraphQL Application؛ ثغرات خاصة بـ GraphQL تشمل الحقن وDoS وهجمات التجميع وتجاوز التفويض؛ واجهة GraphiQL للاستكشاف التفاعلي؛ ip_hash ثابت لـ SQLite لكل مثيل
RESTaurantلعبة Damn Vulnerable RESTaurant API؛ مبنية خصيصًا لـ OWASP API Security Top 10 2023؛ FastAPI مع Swagger UI؛ خلفية PostgreSQL 15.4 مشتركة؛ تغطي BOLA وBFLA وmass assignment وSSRF والحقن
crAPIOWASP Completely Ridiculous API؛ بنية 7 microservices تغطي BOLA وBFLA وmass assignment وSSRF ومعالجة JWT وحقن NoSQL؛ منفذ مخصص 8888 (SPA بمسارات API مثبّتة في الكود)؛ MailHog لالتقاط البريد الإلكتروني