- หน้าแรก
- เซิร์ฟเวอร์ต้นทาง
- การผสานรวม
การผสานรวม
การผสานรวม Origin Pool ของ F5 XC
หัวข้อที่มีชื่อว่า “การผสานรวม Origin Pool ของ F5 XC”เซิร์ฟเวอร์ต้นทางนี้ออกแบบมาเพื่อใช้เป็น สมาชิก origin pool ที่อยู่เบื้องหลัง F5 Distributed Cloud HTTP load balancer แพลตฟอร์ม F5 XC ให้บริการ ไฟร์วอลล์แอปเว็บ (WAF), Bot Defense, ความปลอดภัย API และการป้องกันฝั่งไคลเอนต์ ที่อยู่หน้าเซิร์ฟเวอร์ต้นทางนี้
สถาปัตยกรรม
หัวข้อที่มีชื่อว่า “สถาปัตยกรรม”End User -> F5 XC HTTP LB (WAF/Bot/API/CSD) -> Origin Server VM (nginx -> Docker apps)การกำหนดค่า Origin Pool
หัวข้อที่มีชื่อว่า “การกำหนดค่า Origin Pool”สร้าง origin pool ของ F5 XC ที่ชี้ไปยัง IP สาธารณะของ VM นี้:
| การตั้งค่า | ค่า |
|---|---|
| ประเภท Origin Server | Public IP of Origin Server |
| IP Address | <terraform output public_ip> |
| พอร์ต | 80 |
| Health Check | HTTP, path /health |
การกำหนดค่า HTTP Load Balancer
หัวข้อที่มีชื่อว่า “การกำหนดค่า HTTP Load Balancer”สร้าง HTTP load balancer พร้อม origin pool:
| การตั้งค่า | ค่า |
|---|---|
| Domains | โดเมนสาธิตของคุณ (เช่น demo.example.com) |
| Origin Pool | pool ที่สร้างไว้ข้างต้น |
| WAF | แนบนโยบาย WAF ของคุณ |
| Bot Defense | เปิดใช้งานตามความต้องการ |
| API Discovery | เปิดใช้งานสำหรับ endpoint ของ VAmPI |
การกำหนดเส้นทางตามพาธ
หัวข้อที่มีชื่อว่า “การกำหนดเส้นทางตามพาธ”แต่ละแอปพลิเคชันสามารถเข้าถึงได้ผ่าน path prefix ผ่าน load balancer:
| F5 XC LB URL | Origin Path | แอปพลิเคชัน |
|---|---|---|
https://demo.example.com/juice-shop/ | /juice-shop/ | Juice Shop (4 instances, cookie sticky) |
https://demo.example.com/dvwa/ | /dvwa/ | DVWA (4 instances + MariaDB, cookie sticky) |
https://demo.example.com/vampi/ | /vampi/ | VAmPI (4 instances, ip_hash sticky) |
https://demo.example.com/httpbin/ | /httpbin/ | httpbin (4 instances, round-robin) |
https://demo.example.com/whoami/ | /whoami/ | การวินิจฉัยคำขอ (4 instances) |
https://demo.example.com/csd-demo/ | /csd-demo/ | CSD Demo (4 instances, ip_hash sticky) |
https://demo.example.com/dvga/ | /dvga/ | DVGA (4 instances, ip_hash sticky) |
https://demo.example.com/restaurant/ | /restaurant/ | RESTaurant (4 instances, round-robin) |
https://demo.example.com/health | /health | Health check (nginx direct) |
ตรวจสอบการฉีด Header ของ F5 XC
หัวข้อที่มีชื่อว่า “ตรวจสอบการฉีด Header ของ F5 XC”ใช้ endpoint ของ whoami เพื่อตรวจสอบว่า F5 XC ฉีด header อะไรเข้าไปในคำขอที่ไปถึงเซิร์ฟเวอร์ต้นทาง:
LB_DOMAIN="demo.example.com"
curl -sk "https://${LB_DOMAIN}/whoami/"ค้นหา header ที่ F5 XC ฉีดเข้ามาเหล่านี้ในการตอบสนอง:
| Header | ความหมาย |
|---|---|
X-Forwarded-For | ห่วงโซ่ IP ของไคลเอนต์ผ่าน F5 XC |
True-Client-IP | IP ไคลเอนต์ต้นทางดั้งเดิม |
X-Forwarded-Proto | https หาก TLS สิ้นสุดที่ F5 XC |
X-Volterra-Bot-Type | การจำแนกประเภท Bot (เมื่อเปิดใช้งาน Bot Defense) |
X-Request-ID | ID การติดตามคำขอของ F5 XC |
การทดสอบ ไฟร์วอลล์แอปเว็บ (WAF) ผ่าน F5 XC
หัวข้อที่มีชื่อว่า “การทดสอบ ไฟร์วอลล์แอปเว็บ (WAF) ผ่าน F5 XC”เมื่อแนบนโยบาย WAF กับ HTTP load balancer แล้ว ให้ทดสอบ payload การโจมตี:
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
หัวข้อที่มีชื่อว่า “การทดสอบความปลอดภัย API”เปิดใช้งาน API Discovery บน HTTP load balancer เพื่อทำแผนที่ endpoint ของ API ของ VAmPI:
# These requests build the API inventory in F5 XCcurl -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)
หัวข้อที่มีชื่อว่า “การผสานรวม crAPI (พอร์ต 8888)”crAPI ทำงานบนพอร์ตเฉพาะ (8888) เนื่องจากเป็นแอปพลิเคชันแบบหน้าเดียวที่ hardcode พาธ API ของตนเองและไม่สามารถให้บริการผ่าน path prefix ได้ ในการผสานรวม crAPI กับ F5 XC:
| การตั้งค่า | ค่า |
|---|---|
| ประเภท Origin Server | Public IP of Origin Server |
| IP Address | <terraform output public_ip> |
| พอร์ต | 8888 |
| Health Check | HTTP, path / |
สร้าง origin pool แยกต่างหาก สำหรับ crAPI บนพอร์ต 8888 หรือเพิ่มสมาชิก origin pool ที่สองใน pool ที่มีอยู่ของคุณโดยใช้พอร์ต 8888 และใช้กฎเส้นทางเพื่อนำทางทราฟฟิก:
# 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)การรับรู้เซสชันแบบ Sticky
หัวข้อที่มีชื่อว่า “การรับรู้เซสชันแบบ Sticky”เซิร์ฟเวอร์ต้นทางใช้ nginx sticky sessions ภายในเพื่อกำหนดเส้นทางแอปพลิเคชันที่มีสถานะไปยัง container backend ที่สม่ำเสมอ เมื่อกำหนดค่า F5 XC HTTP load balancer ควรทราบสิ่งต่อไปนี้:
| แอปพลิเคชัน | วิธี Sticky | เหตุผล |
|---|---|---|
| Juice Shop | hash $cookie_token | สถานะเซสชัน Node.js |
| DVWA | hash $cookie_PHPSESSID | สถานะเซสชัน PHP |
| VAmPI | ip_hash | ฐานข้อมูล SQLite ต่อ instance |
| CSD Demo | ip_hash | บันทึก exfil ในหน่วยความจำต่อ instance |
| DVGA | ip_hash | ฐานข้อมูล SQLite ต่อ instance |
| RESTaurant | Round-robin | PostgreSQL backend ที่แชร์กัน |
| crAPI | — (single port 8888) | 7 microservices, PostgreSQL + MongoDB |
| httpbin | Round-robin | Stateless |
| whoami | Round-robin | Stateless |
F5 XC ไม่จำเป็นต้องทำซ้ำ sticky sessions เหล่านี้ — nginx บน VM ต้นทางจัดการการกำหนดเส้นทาง backend F5 XC ควรปฏิบัติต่อเซิร์ฟเวอร์ต้นทางเป็น endpoint เดียว (IP สาธารณะของ VM บนพอร์ต 80)
สถาปัตยกรรมหลายส่วนประกอบ
หัวข้อที่มีชื่อว่า “สถาปัตยกรรมหลายส่วนประกอบ”เมื่อรวมกับตัวจำลอง CDN สถาปัตยกรรมแล็บแบบสมบูรณ์จะเป็น:
End User -> CDN Simulator (nginx cache) -> F5 XC HTTP LB -> Origin Server (this component)ตัวจำลอง CDN ใช้ F5 XC HTTP load balancer VIP เป็นเซิร์ฟเวอร์ต้นทาง และ F5 XC load balancer ใช้เซิร์ฟเวอร์ต้นทางนี้เป็น backend ซึ่งสร้างสถาปัตยกรรมหลายชั้นที่สมจริงสำหรับการทดสอบที่ครอบคลุม