วิธีป้องกัน VPS จากการโจมตี DDoS

โดย ทีมวิศวกรรม ONIE · อัปเดตเมื่อ 12 พฤศจิกายน ค.ศ. 2026 · อ่าน 3 นาที

การโจมตีแบบ distributed denial-of-service (DDoS) จะทวมเซิร์ฟเวอร์หรือการเชื่อมต่อเครือข่ายด้วยทราฟฟิกจำนวนมาก จนผู้เข้าชมจริงไม่สามารถเข้าถึงได้ การโจมตีบางครั้งมีขนาดใหญ่เกินกว่าที่ตัวเซิร์ฟเวอร์จะรับไหว ดังนั้นการป้องกันที่ได้ผลดีที่สุดคือการทำเป็นชั้น ๆ โดยกรองที่ขอบเครือข่ายก่อน แล้วค่อยตั้งค่าไฟร์วอลล์และแอปพลิเคชันบน VPS ONIE ป้องกันเซิร์ฟเวอร์คลาวด์ในนครโฮจิมินห์ด้วย DDoS Shield ที่ขอบเครือข่ายโดยไม่มีค่าใช้จ่ายเพิ่ม และคุณสามารถติดตั้ง VPS ที่มีการป้องกัน DDoS ได้ภายในไม่กี่นาที

ประเภทของการโจมตี

  • Volumetric (layer 3 และ 4): การถล่มด้วยแพ็กเก็ตจำนวนมากจนเต็มลิงก์เครือข่าย เช่น UDP flood
  • Protocol attacks: การใช้ประโยชน์จากการจัดการการเชื่อมต่อ เช่น SYN flood ที่ทำให้ตารางการเชื่อมต่อเต็ม
  • Application layer (layer 7): คำขอ HTTP จำนวนมากที่ดูเหมือนถูกต้อง ซึ่งทำให้เว็บเซิร์ฟเวอร์หรือฐานข้อมูลหมดแรง

แต่ละประเภทต้องใช้วิธีรับมือที่ต่างกัน ทราฟฟิกแบบ volumetric ต้องหยุดก่อนที่จะถึงเซิร์ฟเวอร์ ส่วนการถล่มระดับแอปพลิเคชันสามารถลดผลกระทบได้จากฝั่งเซิร์ฟเวอร์

1. กรองที่ขอบเครือข่าย

การกรองที่ขอบเครือข่ายจะทิ้งทราฟฟิกที่ไม่ดีก่อนถึง VPS ของคุณ ทำให้ลิงก์ไม่ถูกใช้จนเต็ม ด้วย DDoS Shield การกรองทำงานที่ขอบเครือข่ายโดยใช้ XDP/eBPF และคอนโซลจะแสดงทราฟฟิกและเหตุการณ์การโจมตีของแต่ละ IP เมื่อประเมินผู้ให้บริการ ควรถามว่ามีอะไรรวมอยู่บ้าง การกรองทำที่ใด และมีค่าใช้จ่ายเพิ่มหรือไม่

2. ปิดบริการที่ไม่ได้ใช้

sudo ufw default deny incoming
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

อย่าเปิดฐานข้อมูลหรือแผงควบคุมผู้ดูแลระบบให้เข้าถึงจากอินเทอร์เน็ต ให้ผูกกับ 127.0.0.1 หรือเครือข่ายส่วนตัวแทน

3. ปรับแต่งเคอร์เนลสำหรับ SYN flood

SYN cookies เปิดใช้งานเป็นค่าเริ่มต้นในดิสโทรส่วนใหญ่ ตรวจสอบได้ด้วยคำสั่ง:

sysctl net.ipv4.tcp_syncookies

ควรปรับค่าเคอร์เนลอื่น ๆ เพียงเล็กน้อยและทดสอบก่อนเสมอ เพราะค่าที่ไม่เหมาะสมอาจกระทบทราฟฟิกปกติได้

4. จำกัดอัตราคำขอใน Nginx

ในบล็อก http:

limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=connperip:10m;

ในบล็อก server หรือ location:

limit_req zone=perip burst=20 nodelay;
limit_conn connperip 20;

โหลดการตั้งค่าใหม่ด้วย sudo nginx -t && sudo systemctl reload nginx ให้เสิร์ฟไฟล์สแตติกจากแคช และใช้ปลั๊กอินแคชบน WordPress เพื่อลดต้นทุนของแต่ละคำขอ ดูการติดตั้ง WordPress ด้วย Nginx

5. เฝ้าดูทราฟฟิก

ss -s
sudo ss -ntu state established | wc -l
sudo apt install -y nload && nload

หากการเชื่อมต่อหรือแบนด์วิดท์เพิ่มขึ้นอย่างฉับพลัน หรือเซิร์ฟเวอร์ช้าลงทั้งที่การใช้ CPU ต่ำ อาจเป็นสัญญาณของการโจมตี ควรตั้งการแจ้งเตือนไว้เพื่อให้ทราบโดยเร็ว

6. เช็กลิสต์เมื่อเกิดเหตุการณ์

  1. ยืนยันในคอนโซลว่าทราฟฟิกนั้นเป็นการโจมตีหรือการพุ่งขึ้นตามปกติ
  2. ตรวจสอบเหตุการณ์การโจมตีและ IP ที่ถูกโจมตี
  3. บล็อกแหล่งที่มาที่เป็นอันตรายซึ่งสามารถระบุได้ หรือช่วงที่อยู่ที่เกี่ยวข้อง
  4. เปิดใช้การจำกัดอัตราที่เข้มงวดขึ้นหรือหน้าปิดปรับปรุง
  5. ติดต่อฝ่ายสนับสนุนของผู้ให้บริการพร้อมเวลาและ IP
  6. หลังเหตุการณ์ ทบทวนล็อกและอัปเดตแผนนี้ รักษาการสำรองข้อมูลและสแนปช็อต ให้เป็นปัจจุบัน

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

ไฟร์วอลล์บน VPS หยุด DDoS ขนาดใหญ่ได้หรือไม่?

ไม่ได้ด้วยตัวเองเพียงอย่างเดียว หากทราฟฟิกเต็มลิงก์เครือข่าย เซิร์ฟเวอร์จะกรองไม่ได้ จำเป็นต้องมีการกรองที่อยู่ต้นทางก่อนถึงเซิร์ฟเวอร์

CDN ช่วยได้หรือไม่?

สำหรับเว็บไซต์ CDN หรือ reverse proxy สามารถรับทราฟฟิกเว็บได้ ตราบใดที่ IP จริงของเซิร์ฟเวอร์ไม่ถูกเปิดเผยใน DNS หรือ header ของอีเมล

ต้องใช้แพ็กเกจพิเศษสำหรับการป้องกัน DDoS หรือไม่?

ขึ้นอยู่กับผู้ให้บริการ ตรวจสอบว่าแพ็กเกจและโลเคชันของคุณรวมอะไรไว้บ้าง

แหล่งข้อมูลและการอ่านเพิ่มเติม

คู่มือ VPS เพิ่มเติม