๑๕15ความปลอดภัยและ monitoring
Security and monitoring
TL;DR — สรุปใน 30 วินาทีtldr
สรุปหลักความปลอดภัยของ BOMLLM ในหนึ่งประโยค: ทุกอย่าง bind อยู่ที่ localhost หรือ Tailscale ของที่เปิดสู่โลกคือ Cloudflare Tunnel ประตูเดียว ทุก API มีกุญแจ ทุกกุญแจมีงบ และไม่มีความลับถูก commit ลง repo เลย
เมื่อไหร่ควรใช้ / When to usewhen to use
บทนี้ไม่ใช่ "อ่านผ่าน" — กลับมาอ่านซ้ำทุกครั้งที่ (1) เพิ่มช่องทางใหม่ (2) เปิดพอร์ต/บริการใหม่ (3) ก่อนอัปเกรดใหญ่
วิธีทำ / How-tohow to
ตาราง bind ของทุก service (นโยบายจริงจาก ss -tlnp):
| Service | bind ที่ | เหตุผล |
|---|---|---|
| LiteLLM :4000 | 127.0.0.1 (+ Tailscale ผ่าน forward สำหรับ probe) | เส้นทางสาธารณะคือ tunnel เท่านั้น |
| Open WebUI :3000 | 127.0.0.1 | อยู่หลัง tunnel |
| SearXNG :8888 | 127.0.0.1 | ภายในเท่านั้น |
| Qdrant :6333 | 127.0.0.1 | ไม่มีเวกเตอร์สาธารณะ |
| Postgres / Valkey | เครือข่าย container เท่านั้น | ไม่เปิด host port เลย |
| Ollama (Mac) :11434 | Tailscale IP เท่านั้น | mesh เท่านั้น + firewall เปิด |
| SSH | พอร์ตไม่มาตรฐาน + key เท่านั้น | ufw ตั้ง DROP เป็นค่าตั้งต้น |
คุณสมบัติที่ตรวจซ้ำทุกรอบ audit:
# ตรวจเบื้องต้นด้วยตัวเองได้ (รันบน VPS)
curl -o /dev/null -w "%{http_code}" -X POST https://llm.example.com/v1/chat/completions
# ต้องได้ 401 — ไม่มีกุญแจห้ามผ่าน (ตรวจทุกรอบ)
curl -o /dev/null -w "%{http_code}" https://chat.example.com/api/models
# ต้องได้ 401 — ไม่มี session ห้ามเห็นโมเดล
ss -tlnp | grep -v 127.0.0.1 # ดูว่ามีอะไร Listen นอก localhost ที่ไม่ควรมีถ้าผลใดผิดจากนี้ = หยุดทุกอย่าง แก้ให้กลับมาถูกก่อน
สุขลักษณะความลับ (ทบทวนจากบทที่ ๗–๘): master key อยู่ใน .env บน VPS เท่านั้น, กุญแจรายช่องทางหมุนเวียนได้โดยไม่แตะ master, .env chmod 600 + gitignore, ใน log/รายงานพูดแค่ "โหลดคีย์แล้ว ยาว N ตัว", n8n เก็บความลับใน credential store เท่านั้น
การเฝ้าระวัง: Uptime Kuma บน NAS probe ทุก 5 นาที (ยิง GET /api/version ผ่าน mesh) และยิงแจ้งเตือน Telegram เมื่อสถานะพลิก — สถานะเฝ้าระวังสรุปไว้ในบอร์ดภายใน
ถ้าติดตรงไหน → บทที่ ๑๖
ตัวอย่างการตั้งค่า / Config exampleconfig example
ตารางภัยคุกคามกับมาตรการ (ฉบับย่อจาก docs/security.md):
| ภัย | มาตรการที่ระบบทำ |
|---|---|
| กุญแจรั่ว (git/ภาพ/log) | ระบบ gitignore + ตรวจก่อน push + งบต่อกุญแจจำกัดความเสียหาย |
| สแกนเนอร์อินเทอร์เน็ต | เปิดผ่าน tunnel เท่านั้น + 401 ถ้าไม่มีกุญแจ |
| VPS โดนบุก | ไม่มีโมเดล/ข้อมูลหนักบน VPS; Mac อยู่ใน mesh; สำรองข้อมูลออกกล่องทุกคืน |
| Prompt injection ผ่านผลค้นเว็บ | ผลค้นเป็นบริบท ไม่ใช่คำสั่ง + system prompt ตรึงพฤติกรรม + บอทมี post-process |
| ค่าใช้จ่ายหนีบ | งบรายวันรายกุญแจ + เพดานรวม $5 + แจ้งเตือน |
| อุปทาน (image) เปลี่ยนใต้มือ | ปักแท็กเวอร์ชันทุกตัว ห้าม latest |
Pro tip — เคล็ดลับจากสนามจริงpro tip
คำถามที่พบบ่อย / FAQfaq
ถาม: ข้อมูลออกนอกบ้านไหม? — ไม่ ยกเว้นกรณี Tier 3 คลาวด์ถูกดึงใช้ (สามารถปิดขาดได้ในบทที่ ๗) และการค้นเว็บที่ออนไลน์เพื่อดึงผลลัพธ์กลับ (ตัวค้นตั้งในเครื่องแต่ตัวเว็บไซต์เป้าหมายเห็น IP ของ VPS ตามปกติ)
ถาม: ถ้าอยากล็อกแน่นสุด ๆ? — ปิด signup บน WebUI + ครอบ Cloudflare Access ทุกหน้า admin + ปิด Tier 3 + เปิด ufw DROP ทั้งขาเข้ายกเว้น SSH/Tailscale — ระบบจะเงียบสนิทกับโลกภายนอก
คำถามอื่น ๆ ดูที่ FAQ
ดูเพิ่ม / See alsosee also
- บทที่ ๔ · เตรียมเครือข่าย — ที่มาของสถาปัตยกรรมนี้
- บทที่ ๑๖ · อัปเกรด — ปลอดภัยระหว่างเปลี่ยนของ
ภาพประกอบ / Figuresfigures
