รับเครดิต $200

Cloud Firewall และ VPC บน DigitalOcean: ปิดช่องโหว่เครือข่ายให้ Droplet ตั้งแต่ระดับโครงสร้าง

อัปเดตล่าสุด 3 พฤศจิกายน 2569 · อ่านประมาณ 7 นาที · โดย DigitalOcean Review ไทย

คู่มือ Cloud Firewalls (ฟรี) และ VPC private network ของ DigitalOcean ตั้งกฎ inbound/outbound ด้วย tag, จำกัด SSH ตาม IP, แยกฐานข้อมูลไว้ในเครือข่ายภายใน และใช้ร่วมกับ UFW และ Docker

เปิดเผยข้อมูล: บทความนี้มีลิงก์แนะนำ (referral) ของ DigitalOcean หากคุณสมัครผ่านลิงก์ เจ้าของเว็บอาจได้รับเครดิต โดยคุณไม่เสียค่าใช้จ่ายเพิ่ม · อ่านนโยบายการรีวิว

สองแนวคิดที่ต้องรู้

  • Cloud Firewall — ไฟร์วอลล์ที่ทำงาน *นอกเครื่อง* ที่ชั้นเครือข่ายของ DigitalOcean กรองแพ็กเก็ตก่อนถึง Droplet
  • VPC (Virtual Private Cloud) — เครือข่ายส่วนตัวในภูมิภาคเดียวกัน ให้ Droplet คุยกันด้วย IP ภายในโดยไม่ผ่านอินเทอร์เน็ตสาธารณะ

ทั้งสองอย่างเสริมกันและเสริม UFW ภายในเครื่อง ตามหลัก "defense in depth" ที่อธิบายใน คู่มือความปลอดภัยเซิร์ฟเวอร์

Cloud Firewall คืออะไร

  • ใช้งานได้โดยไม่มีค่าใช้จ่ายเพิ่ม (ตามที่ DigitalOcean ระบุ ณ เวลาที่เขียน)
  • เป็นแบบ stateful ตอบกลับของการเชื่อมต่อที่อนุญาตแล้วผ่านได้เอง
  • กฎ inbound (เข้า) และ outbound (ออก) แยกกัน
  • ผูกกับ Droplet ได้ทั้งแบบเลือกทีละเครื่อง หรือแบบ tag (แนะนำ)
  • ไม่กินทรัพยากร CPU/RAM ของ Droplet
  • มีผลทันทีโดยไม่ต้องรีสตาร์ตเครื่อง

ทำไมต้องมีทั้ง Cloud Firewall และ UFW

หัวข้อCloud FirewallUFW
ทำงานที่นอกเครื่อง (ระดับเครือข่าย)ในระบบปฏิบัติการ
จัดการหลายเครื่องพร้อมกันได้ (ผ่าน tag)ต้องตั้งทีละเครื่อง
ถูกข้ามโดย Docker publish portไม่ถูกข้ามถูกข้ามได้ (iptables ของ Docker)
ถ้าแฮกเกอร์ได้ rootแก้กฎไม่ได้จากในเครื่องแก้ได้

เพราะ Docker จัดการ iptables เอง พอร์ตที่ publish จึงอาจเปิดสู่โลกแม้ UFW ปิดไว้ Cloud Firewall จึงเป็นด่านที่เชื่อถือได้กว่าสำหรับเครื่องที่รัน Docker ดู ติดตั้ง Docker บน Droplet

รับเครดิตฟรี $200 (ใช้ได้ 60 วัน)สมัคร DigitalOcean ผ่านลิงก์แนะนำของเรา แล้วเพิ่มวิธีชำระเงินที่ใช้งานได้ ระบบจะให้เครดิตทดลองใช้งาน ตามเงื่อนไขของ DigitalOcean ณ วันที่สมัคร
สมัครรับเครดิต $200 →

สร้าง Cloud Firewall ทีละขั้น

  1. Control Panel → Networking → Firewalls → Create Firewall
  2. ตั้งชื่อ เช่น web-basic
  3. ตั้ง Inbound Rules
  4. ตั้ง Outbound Rules (ปกติเปิดไว้ตามค่าเริ่มต้นได้)
  5. ใส่ชื่อ tag ใน "Apply to Droplets" เช่น web
  6. ติด tag web ให้ Droplet ที่ต้องการ

ชุดกฎ inbound พื้นฐานสำหรับเว็บ

TypeProtocolPortSources
SSHTCP22IP ที่ทำงานของคุณ (หรือ VPN)
HTTPTCP80All IPv4, All IPv6
HTTPSTCP443All IPv4, All IPv6
ICMPICMP-All (ถ้าต้องการ ping ตรวจสอบ)

พอร์ตอื่นที่ไม่ใส่ในรายการถูกปฏิเสธโดยอัตโนมัติ (default deny)

จำกัด SSH ให้เฉพาะ IP ของคุณ

ถ้าอินเทอร์เน็ตที่บ้านเป็น IP ไดนามิก ให้ใช้ VPN หรือ bastion host (เครื่องกลางที่มี IP คงที่) เป็นทางเข้า เพื่อไม่ต้องเปิดพอร์ต 22 ให้ทั้งโลก ลดการสแกนรหัสผ่านอัตโนมัติได้มาก ควบคู่กับ SSH key และปิดการล็อกอินด้วยรหัสผ่าน

ใช้ tag จัดกลุ่มเครื่อง

tagบทบาทกฎเด่น
webเซิร์ฟเวอร์เว็บ80/443 เปิดสาธารณะ
dbฐานข้อมูล5432/3306 เปิดเฉพาะจาก tag web
adminเครื่องดูแลระบบ22 จาก IP ของทีม

กฎ "Sources" ใส่ tag อื่น ได้ ทำให้ฐานข้อมูลรับการเชื่อมต่อเฉพาะจากเว็บเซิร์ฟเวอร์ที่ติด tag web เท่านั้น เครื่องใหม่ที่ติด tag จะได้กฎอัตโนมัติ

VPC: เครือข่ายส่วนตัว

ทุกบัญชีมี VPC เริ่มต้นต่อภูมิภาค และ Droplet ใหม่จะอยู่ใน VPC นั้นโดยอัตโนมัติ Droplet ใน VPC เดียวกันคุยกันผ่าน private IP (เช่นช่วง 10.x.x.x)

ประโยชน์

  • ฐานข้อมูลไม่ต้องเปิดพอร์ตออกอินเทอร์เน็ตสาธารณะ
  • เวลาแฝงต่ำและปลอดภัยกว่า
  • ทราฟฟิกระหว่างเครื่องใน VPC ไม่นับเป็น bandwidth สาธารณะตามเอกสารของ DigitalOcean (ตรวจเงื่อนไขล่าสุดในหน้า Pricing/Docs)
  • จัดแยกสภาพแวดล้อม เช่น production กับ staging ด้วย VPC คนละอัน

ตัวอย่างสถาปัตยกรรม 3 ชั้น

อินเทอร์เน็ต
   │  (80/443)
[Load Balancer]
   │  private IP
[web-1] [web-2]  ← tag: web
   │  private IP (3306/5432)
[db-1]           ← tag: db (ไม่มี public rule)

ดู คู่มือ Load Balancer สำหรับตัวบาลานซ์ด้านบน และ คู่มือ Managed Databases ถ้าใช้ฐานข้อมูลแบบ Managed ซึ่งรองรับ Trusted Sources (จำกัดว่าเครื่องใดเชื่อมต่อได้)

ดู private IP

ip -4 addr show eth1
curl -s http://169.254.169.254/metadata/v1/interfaces/private/0/ipv4/address

(ชื่ออินเทอร์เฟซอาจต่างกันตาม image ใช้ ip addr เพื่อดูทั้งหมด)

ตัวอย่าง: ใช้ doctl สร้างไฟร์วอลล์

doctl compute firewall create \
  --name web-basic \
  --tag-names web \
  --inbound-rules "protocol:tcp,ports:22,address:203.0.113.5/32 protocol:tcp,ports:80,address:0.0.0.0/0,address:::/0 protocol:tcp,ports:443,address:0.0.0.0/0,address:::/0" \
  --outbound-rules "protocol:tcp,ports:all,address:0.0.0.0/0,address:::/0 protocol:udp,ports:all,address:0.0.0.0/0,address:::/0 protocol:icmp,address:0.0.0.0/0,address:::/0"

แทน 203.0.113.5 ด้วย IP จริงของคุณ ตรวจ syntax ล่าสุดด้วย doctl compute firewall create --help

ข้อผิดพลาดที่พบบ่อย

  1. ล็อกตัวเองออกจากเครื่อง: ตั้ง SSH ให้ IP ผิดแล้วเข้าไม่ได้ ใช้ Recovery Console ใน Control Panel เข้าเครื่องและแก้กฎ ก่อนแก้ให้เปิด console ไว้อีกหน้าต่างทดสอบ
  2. ลืมเปิดพอร์ต 80 ตอนขอ SSL: Let's Encrypt แบบ HTTP-01 ต้องเข้าพอร์ต 80 ได้ ดู Deploy Node.js บน Droplet
  3. เปิดฐานข้อมูลสู่ 0.0.0.0/0: ห้ามทำ จำกัดเป็น tag หรือ private IP
  4. ลืมติด tag กับเครื่องใหม่: เครื่องที่ไม่มีไฟร์วอลล์ผูกอยู่ไม่ถูกกรองที่ชั้นนี้
  5. ปิด outbound ทั้งหมดโดยไม่ตั้งใจ: ทำให้ apt update, DNS และ API ภายนอกใช้ไม่ได้
  6. คิดว่า Cloud Firewall แทนการอัปเดตระบบ: ไม่ใช่ ต้อง patch เป็นประจำเสมอ

รายการตรวจก่อนเปิดใช้งานจริง

  • [ ] SSH ใช้ key และปิดรหัสผ่าน
  • [ ] Cloud Firewall ผูกกับทุกเครื่อง (ผ่าน tag)
  • [ ] ฐานข้อมูลไม่มี public access
  • [ ] UFW เปิดใช้เป็นชั้นเสริม
  • [ ] ตั้ง alert เมื่อทราฟฟิกผิดปกติ ดู Monitoring และ Alerts
  • [ ] มีแผนสำรองข้อมูล ดู Backups และ Snapshots

คำถามที่พบบ่อย

Cloud Firewall ป้องกัน DDoS ได้ไหม

ไม่ใช่เครื่องมือป้องกัน DDoS โดยตรง แต่ช่วยลดพื้นผิวการโจมตีโดยปิดพอร์ตที่ไม่ใช้ สำหรับเว็บสาธารณะที่ถูกโจมตีหนักควรพิจารณา CDN/WAF เพิ่มเติม

ต้องจ่ายเพิ่มสำหรับ VPC ไหม

ไม่มีค่าใช้จ่ายเพิ่มสำหรับตัว VPC ตามเอกสาร ณ เวลาที่เขียน ตรวจเงื่อนไขล่าสุดที่ ราคา DigitalOcean ทุกบริการ

ย้าย Droplet ข้าม VPC ได้ไหม

ปกติทำผ่านการสร้าง snapshot แล้วสร้าง Droplet ใหม่เข้า VPC ที่ต้องการ หรือใช้ฟีเจอร์ย้ายตามที่ Control Panel รองรับ ณ ขณะนั้น

บริการใดบ้างที่ใช้กับ Cloud Firewall ได้

ใช้กับ Droplet เป็นหลัก บริการอื่นอย่าง Managed Database มีระบบ Trusted Sources ของตัวเอง ส่วน App Platform ดู คู่มือ App Platform

รับเครดิตฟรี $200 (ใช้ได้ 60 วัน)สมัคร DigitalOcean ผ่านลิงก์แนะนำของเรา แล้วเพิ่มวิธีชำระเงินที่ใช้งานได้ ระบบจะให้เครดิตทดลองใช้งาน ตามเงื่อนไขของ DigitalOcean ณ วันที่สมัคร
สมัครรับเครดิต $200 →