Files
lcbp3/specs/08-infrastructure/Securities.md
admin aaa5da3ec1
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled
251217:1704 Docunment Number: Update to 1.6.2
2025-12-17 17:04:06 +07:00

7.7 KiB

สวัสดีครับ! การตั้งค่า Network Segmentation และ Firewall Rules เป็นขั้นตอนที่ฉลาดมากครับ โดยเฉพาะเมื่อคุณมี Services ที่ต้องเปิดสู่ Public (เช่น lcbp3.np-dms.work) และ Services ภายใน (เช่น db.np-dms.work)

สำหรับอุปกรณ์ Omada (ER7206 + OC200) กลยุทธ์หลักคือการใช้ VLANs (Virtual LANs) เพื่อแบ่งกลุ่มอุปกรณ์ และใช้ Firewall ACLs (Access Control Lists) เพื่อควบคุมการจราจรระหว่างกลุ่มเหล่านั้น

นี่คือคำแนะนำตามแนวทาง "Zero Trust" ที่ปรับให้เข้ากับสถาปัตยกรรมของคุณครับ


1. 🌐 การแบ่งส่วนเครือข่าย (VLAN Segmentation)

ใน Omada Controller (OC200) ให้คุณไปที่ Settings > Wired Networks > LAN และสร้างเครือข่ายย่อย (VLANs) ดังนี้:

  • VLAN 1 (Default): Management

    • IP Range: 192.168.1.x
    • วัตถุประสงค์: ใช้สำหรับอุปกรณ์ Network (ER7206, OC200, Switches) และ PC ของผู้ดูแลระบบ (Admin) เท่านั้น
  • VLAN 10: Servers (DMZ)

    • IP Range: 192.168.10.x
    • วัตถุประสงค์: นี่คือ VLAN ที่คุณจะเสียบสาย LAN ของ QNAP NAS ครับ QNAP จะได้รับ IP ในกลุ่มนี้ (เช่น 192.168.10.100)
  • VLAN 20: Office / Trusted

    • IP Range: 192.168.20.x
    • วัตถุประสงค์: สำหรับ PC, Notebook, และ Wi-Fi ของพนักงานทั่วไปที่ต้องเข้าใช้งานระบบ (เช่น lcbp3.np-dms.work)
  • VLAN 30: Guests / Untrusted

    • IP Range: 192.168.30.x
    • วัตถุประสงค์: สำหรับ Wi-Fi แขก (Guest) ห้ามเข้าถึงเครือข่ายภายในโดยเด็ดขาด

การตั้งค่า Port Switch: หลังจากสร้าง VLANs แล้ว ให้ไปที่ Devices > เลือก Switch ของคุณ > Ports > กำหนด Port Profile:

  • Port ที่เสียบ QNAP NAS: ตั้งค่า Profile เป็น VLAN 10
  • Port ที่เสียบ PC พนักงาน: ตั้งค่า Profile เป็น VLAN 20

2. 🔥 Firewall Rules (ACLs)

นี่คือหัวใจสำคัญครับ ไปที่ Settings > Network Security > ACL (Access Control)

กฎของ Firewall จะทำงานจากบนลงล่าง (ข้อ 1 ทำก่อนข้อ 2)

A. กฎการห้าม (Deny Rules) - สำคัญที่สุด

กฎข้อ 1: บล็อก Guest (VLAN 30) ไม่ให้ยุ่งกับใคร

  • Name: Isolate-Guests
  • Policy: Deny
  • Source: Network -> VLAN 30
  • Destination: Network -> VLAN 1, VLAN 10, VLAN 20
  • (กฎนี้จะทำให้ Guest ออกอินเทอร์เน็ตได้อย่างเดียว แต่คุยข้าม VLAN ไม่ได้)

กฎข้อ 2: บล็อก Server (VLAN 10) ไม่ให้โจมตีคนอื่น

  • Name: Isolate-Servers
  • Policy: Deny
  • Source: Network -> VLAN 10
  • Destination: Network -> VLAN 20
  • (กฎนี้ป้องกันไม่ให้ Server (QNAP) ที่อาจถูกแฮก เริ่มเชื่อมต่อไปยัง PC ของพนักงาน (VLAN 20) เพื่อแพร่กระจาย Malware)

กฎข้อ 3: บล็อก Office ไม่ให้เข้าหน้า Admin

  • Name: Block-Office-to-Management
  • Policy: Deny
  • Source: Network -> VLAN 20
  • Destination: Network -> VLAN 1
  • (ป้องกันไม่ให้พนักงานทั่วไปเข้าหน้าตั้งค่า Router หรือ Controller)

B. กฎการอนุญาต (Allow Rules)

กฎข้อ 4: อนุญาตให้ Office (VLAN 20) ใช้งาน Services ที่จำเป็น

  • Name: Allow-Office-to-Services
  • Policy: Allow
  • Source: Network -> VLAN 20
  • Destination: IP Group -> (สร้าง Group ชื่อ QNAP_Services ชี้ไปที่ 192.168.10.100 (IP ของ QNAP))
  • Port: Service -> (สร้าง Port Group ชื่อ Web_Services):
    • TCP 443 (HTTPS - สำหรับทุก Service เช่น lcbp3, git, pma)
    • TCP 80 (HTTP - สำหรับ NPM redirect)
    • TCP 81 (NPM Admin UI)
    • TCP 2222 (Gitea SSH)
    • (ไม่จำเป็นต้องเปิด Port 3000, 3003, 5678, 89 เพราะ NPM จัดการให้แล้ว)

C. กฎสุดท้าย (Default)

Omada มักจะมีกฎ "Allow All" อยู่ล่างสุด ให้ปล่อยไว้ หรือถ้าคุณต้องการความปลอดภัยสูงสุด (Zero Trust) ให้เปลี่ยนกฎสุดท้ายเป็น "Deny All" (แต่ต้องมั่นใจว่ากฎ Allow ของคุณครอบคลุมทั้งหมดแล้ว)


3. 🚪 Port Forwarding (การเปิด Service สู่สาธารณะ)

ส่วนนี้ไม่ใช่ Firewall ACL แต่จำเป็นเพื่อให้คนนอกเข้าใช้งานได้ครับ ไปที่ Settings > Transmission > Port Forwarding

สร้างกฎเพื่อส่งต่อการจราจรจาก WAN (อินเทอร์เน็ต) ไปยัง Nginx Proxy Manager (NPM) ที่อยู่บน QNAP (VLAN 10)

  • Name: Allow-NPM-HTTPS

  • External Port: 443

  • Internal Port: 443

  • Internal IP: 192.168.10.100 (IP ของ QNAP)

  • Protocol: TCP

  • Name: Allow-NPM-HTTP (สำหรับ Let's Encrypt)

  • External Port: 80

  • Internal Port: 80

  • Internal IP: 192.168.10.100 (IP ของ QNAP)

  • Protocol: TCP

สรุปผังการเชื่อมต่อ

  1. ผู้ใช้ภายนอก -> https://lcbp3.np-dms.work
  2. ER7206 รับที่ Port 443
  3. Port Forwarding ส่งต่อไปยัง 192.168.10.100:443 (QNAP NPM)
  4. NPM (บน QNAP) ส่งต่อไปยัง backend:3000 หรือ frontend:3000 ภายใน Docker
  5. ผู้ใช้ภายใน (Office) -> https://lcbp3.np-dms.work
  6. Firewall ACL (กฎข้อ 4) อนุญาตให้ VLAN 20 คุยกับ 192.168.10.100:443
  7. (ขั้นตอนที่ 3-4 ทำงานเหมือนเดิม)

การตั้งค่าตามนี้จะช่วยแยกส่วน Server ของคุณออกจากเครือข่ายพนักงานอย่างชัดเจน ซึ่งปลอดภัยกว่าการวางทุกอย่างไว้ในวง LAN เดียวกันมากครับ