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

التكامل

تم تصميم خادم المصدر هذا ليُستخدم كـ عضو في مجموعة المصدر خلف موازن تحميل HTTP لـ F5 Distributed Cloud. توفر منصة F5 XC جدار حماية تطبيقات الويب (WAF) ودفاع Bot وأمان API والدفاع من جهة العميل أمام هذا المصدر.

End User -> F5 XC HTTP LB (WAF/Bot/API/CSD) -> Origin Server VM (nginx -> Docker apps)

أنشئ مجموعة مصدر F5 XC تشير إلى عنوان IP العام للجهاز الافتراضي:

الإعدادالقيمة
نوع خادم المصدرعنوان IP العام لخادم المصدر
عنوان IP<terraform output public_ip>
المنفذ80
فحص الصحةHTTP، المسار /health

أنشئ موازن تحميل HTTP مع مجموعة المصدر:

الإعدادالقيمة
النطاقاتنطاق العرض التوضيحي الخاص بك (مثل demo.example.com)
مجموعة المصدرالمجموعة التي تم إنشاؤها أعلاه
جدار الحماية WAFأرفق سياسة جدار الحماية WAF الخاصة بك
دفاع Botفعّله حسب الحاجة
اكتشاف APIفعّله لنقاط نهاية VAmPI

التوجيه المستند إلى المسار

Section titled “التوجيه المستند إلى المسار”

كل تطبيق متاح عبر بادئة مساره من خلال موازن التحميل:

رابط F5 XC LBمسار المصدرالتطبيق
https://demo.example.com/juice-shop//juice-shop/Juice Shop (4 نسخ، جلسة مثبّتة بالكوكي)
https://demo.example.com/dvwa//dvwa/DVWA (4 نسخ + MariaDB، جلسة مثبّتة بالكوكي)
https://demo.example.com/vampi//vampi/VAmPI (4 نسخ، جلسة مثبّتة بـ ip_hash)
https://demo.example.com/httpbin//httpbin/httpbin (4 نسخ، round-robin)
https://demo.example.com/whoami//whoami/تشخيصات الطلبات (4 نسخ)
https://demo.example.com/csd-demo//csd-demo/عرض توضيحي CSD (4 نسخ، جلسة مثبّتة بـ ip_hash)
https://demo.example.com/dvga//dvga/DVGA (4 نسخ، جلسة مثبّتة بـ ip_hash)
https://demo.example.com/restaurant//restaurant/RESTaurant (4 نسخ، round-robin)
https://demo.example.com/health/healthفحص الصحة (nginx مباشر)

التحقق من حقن ترويسات F5 XC

Section titled “التحقق من حقن ترويسات F5 XC”

استخدم نقطة نهاية whoami للتحقق من الترويسات التي تحقنها F5 XC في الطلبات الواصلة إلى المصدر:

Terminal window
LB_DOMAIN="demo.example.com"
curl -sk "https://${LB_DOMAIN}/whoami/"

ابحث عن ترويسات F5 XC المحقونة هذه في الاستجابة:

الترويسةالمعنى
X-Forwarded-Forسلسلة عناوين IP الخاصة بالعميل عبر F5 XC
True-Client-IPعنوان IP الأصلي للعميل
X-Forwarded-Protohttps إذا انتهى TLS عند F5 XC
X-Volterra-Bot-Typeتصنيف Bot (عند تفعيل دفاع Bot)
X-Request-IDمعرّف تتبع الطلب الخاص بـ F5 XC

اختبار جدار الحماية WAF عبر F5 XC

Section titled “اختبار جدار الحماية WAF عبر F5 XC”

مع إرفاق سياسة جدار حماية WAF بموازن تحميل HTTP، اختبر حمولات الهجوم:

Terminal window
LB_DOMAIN="demo.example.com"
# SQL Injection (should be blocked by WAF)
curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--&Submit=Submit"
# XSS (should be blocked by WAF)
curl -sk "https://${LB_DOMAIN}/juice-shop/rest/products/search?q=<script>alert(1)</script>"
# Command Injection (should be blocked by WAF)
curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/exec/" \
-d "ip=127.0.0.1;cat+/etc/passwd&Submit=Submit"
# Normal request (should pass through)
curl -sk "https://${LB_DOMAIN}/httpbin/get" | jq .

فعّل اكتشاف API على موازن تحميل HTTP لرسم خريطة نقاط نهاية API الخاصة بـ VAmPI:

Terminal window
# These requests build the API inventory in F5 XC
curl -sk "https://${LB_DOMAIN}/vampi/users/v1"
curl -sk -X POST "https://${LB_DOMAIN}/vampi/users/v1/register" \
-H "Content-Type: application/json" \
-d '{"username":"apitest","password":"test123","email":"api@test.com"}'
curl -sk -X POST "https://${LB_DOMAIN}/vampi/users/v1/login" \
-H "Content-Type: application/json" \
-d '{"username":"apitest","password":"test123"}'

يعمل crAPI على منفذ مخصص (8888) لأنه تطبيق أحادي الصفحة يُضمّن مسارات API الخاصة به بشكل ثابت ولا يمكن تقديمه خلف بادئة مسار. لتكامل crAPI مع F5 XC:

الإعدادالقيمة
نوع خادم المصدرعنوان IP العام لخادم المصدر
عنوان IP<terraform output public_ip>
المنفذ8888
فحص الصحةHTTP، المسار /

أنشئ مجموعة مصدر منفصلة لـ crAPI على المنفذ 8888، أو أضف عضوًا ثانيًا في مجموعة المصدر الحالية بالمنفذ 8888 واستخدم قواعد التوجيه لتوجيه حركة المرور:

Terminal window
# Test crAPI through F5 XC (if configured)
curl -sk "https://${LB_DOMAIN}:8888/"
# Or if using route rules on the same LB domain:
# Configure an F5 XC route rule matching Host header or path prefix
# to forward to the crAPI origin pool (port 8888)

الوعي بالجلسات المثبّتة

Section titled “الوعي بالجلسات المثبّتة”

يستخدم خادم المصدر جلسات nginx المثبّتة داخليًا لتوجيه التطبيقات ذات الحالة إلى حاويات الخلفية الثابتة. عند تكوين موازن تحميل HTTP لـ F5 XC، كن على دراية بما يلي:

التطبيقطريقة التثبيتالسبب
Juice Shophash $cookie_tokenحالة جلسة Node.js
DVWAhash $cookie_PHPSESSIDحالة جلسة PHP
VAmPIip_hashقاعدة بيانات SQLite لكل نسخة
CSD Demoip_hashسجل تسريب في الذاكرة لكل نسخة
DVGAip_hashقاعدة بيانات SQLite لكل نسخة
RESTaurantRound-robinخلفية PostgreSQL مشتركة
crAPI— (منفذ واحد 8888)7 خدمات مصغّرة، PostgreSQL + MongoDB
httpbinRound-robinعديم الحالة
whoamiRound-robinعديم الحالة

لا تحتاج F5 XC إلى تكرار هذه الجلسات المثبّتة — يتولى nginx على الجهاز الافتراضي للمصدر إدارة توجيه الخلفية. يجب أن تتعامل F5 XC مع المصدر كنقطة نهاية واحدة (عنوان IP العام للجهاز الافتراضي على المنفذ 80).

البنية متعددة المكونات

Section titled “البنية متعددة المكونات”

عند دمجه مع محاكي CDN، تكون البنية الكاملة للمختبر كما يلي:

End User -> CDN Simulator (nginx cache) -> F5 XC HTTP LB -> Origin Server (this component)

يستخدم محاكي CDN عنوان VIP الخاص بموازن تحميل HTTP لـ F5 XC كمصدره، ويستخدم موازن تحميل F5 XC خادم المصدر هذا كخلفية له. يُنشئ هذا بنية واقعية متعددة الطبقات لاختبار شامل.