- الرئيسية
- خادم المصدر
- البنية المعمارية
البنية المعمارية
يوفر هذا المكون خادم مصدر واحد يستضيف تطبيقات ويب متعددة قابلة للاختراق لأغراض اختبار الأمان وعروض التوضيح. ويمثل “المصدر” في بنية موازن التحميل النموذجية — خادم المحتوى الخلفي الذي يحميه موازن تحميل F5 XC HTTP.
في بيئات الإنتاج:
End User -> F5 XC HTTP LB (WAF/Bot/API Security) -> Origin Server -> Applicationيحل هذا المكون محل خادم تطبيقات الإنتاج الفعلي بجهاز VM مبني لهذا الغرض، يشغّل تطبيقات معروفة قابلة للاختراق تُفعّل قواعد WAF وسياسات أمان API وكشف البوتات.
البنية المعمارية
Section titled “البنية المعمارية”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
مخطط التطبيقات
Section titled “مخطط التطبيقات”| المسار | Upstream | المثيلات | المنافذ | الجلسة الثابتة | الغرض |
|---|---|---|---|---|---|
/ | nginx | — | — | — | صفحة الهبوط مع روابط لجميع التطبيقات |
/health | nginx | — | — | — | نقطة نهاية JSON للفحص الصحي (9 تطبيقات مدرجة) |
/juice-shop/ | juice_shop | 4 | 3001-3004 | hash $cookie_token | أمان تطبيقات الويب الحديثة (XSS، الحقن، CSRF) |
/dvwa/ | dvwa | 4 + MariaDB | 8101-8104 | hash $cookie_PHPSESSID | اختبار WAF الكلاسيكي بمستوى صعوبة قابل للضبط |
/vampi/ | vampi | 4 | 5101-5104 | ip_hash | اختبار أمان REST API (OWASP API Top 10) |
/httpbin/ | httpbin_up | 4 | 8201-8204 | — | خدمة طلب/استجابة HTTP لعروض API |
/whoami/ | whoami_up | 4 | 8082-8085 | — | تشخيصات الطلبات — يعرض جميع الرؤوس وعنوان IP للعميل |
/csd-demo/ | csd_demo | 4 | 5001-5004 | ip_hash | اختبار الدفاع من جهة العميل (هجمات Magecart) |
/dvga/ | dvga | 4 | 5201-5204 | ip_hash | اختبار أمان GraphQL API (الحقن، DoS، تجاوز المصادقة) |
/restaurant/ | restaurant | 4 + PostgreSQL | 8301-8304 | — | أمان REST API (OWASP API Top 10 2023) |
:8888 | crapi | 7 microservices | 8888 | — | OWASP crAPI (BOLA، BFLA، mass assignment، SSRF، JWT) |
تصميم المكونات المعيارية
Section titled “تصميم المكونات المعيارية”هذا المكون جزء من بيئة مختبر أكبر. كل مكون مستقل بذاته ويُنشر بشكل مستقل:
- هذا المكون يوفر خادم المصدر (nginx + حاويات Docker على Azure VM)
- محاكي CDN يوفر طبقة حافة CDN (nginx مع التخزين المؤقت على Azure VM)
- المكونات الأخرى توفر إعداد F5 XC، وDNS، وسياسات WAF، وأمان API، وغيرها
يضيف المشغل البشري المكونات واحدًا تلو الآخر. توثيق كل مكون مكتوب بحيث يستطيع مساعد الذكاء الاصطناعي قراءته ونشر البنية التحتية باستقلالية.
لماذا هذه التطبيقات
Section titled “لماذا هذه التطبيقات”| التطبيق | سبب الاختيار |
|---|---|
| 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 بعامل واحد للحفاظ على الحالة في الذاكرة |
| DVGA | Damn 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 والحقن |
| crAPI | OWASP Completely Ridiculous API؛ بنية 7 microservices تغطي BOLA وBFLA وmass assignment وSSRF ومعالجة JWT وحقن NoSQL؛ منفذ مخصص 8888 (SPA بمسارات API مثبّتة في الكود)؛ MailHog لالتقاط البريد الإلكتروني |