ถ้าเว็บของคุณอยู่ ๆ ช้าลงจนใช้ไม่ได้ทั้งที่ไม่ได้แก้อะไรเลย หนึ่งในสาเหตุที่คนนึกถึงเป็นอันดับต้น ๆ คือ DDoS แต่พอถามว่ามันคืออะไรกันแน่ คำตอบที่ได้มักปนกันระหว่างการเจาะระบบ การขโมยข้อมูล และการทำให้เว็บล่ม ซึ่งเป็นคนละเรื่องกัน
บทความนี้อธิบาย DDoS ในมุมของคนที่ต้องดูแลเว็บหรือเซิร์ฟเวอร์ เริ่มจากว่ามันคืออะไร ต่างจาก DoS ยังไง รูปแบบที่พบบ่อยมีอะไรบ้างในเชิงแนวคิด อาการที่บอกว่ากำลังโดนอยู่ และที่สำคัญที่สุดคือความจริงว่าป้องกันได้แค่ไหน เนื้อหาทั้งหมดเขียนในมุมของฝ่ายตั้งรับเท่านั้น
DDoS คืออะไร
DDoS ย่อมาจาก Distributed Denial of Service คือการทำให้บริการหยุดให้บริการ ด้วยการส่งคำขอหรือทราฟฟิกเข้ามาจำนวนมหาศาลจากหลายแหล่งพร้อมกัน จนทรัพยากรของเป้าหมายหมด ไม่ว่าจะเป็นแบนด์วิดท์ หน่วยความจำ หรือจำนวนการเชื่อมต่อที่รับไหว ผลคือผู้ใช้จริงเข้าเว็บไม่ได้หรือเข้าได้ช้าจนใช้งานไม่ไหว
จุดที่ต้องเข้าใจให้ตรงกันคือ DDoS ไม่ใช่การเจาะระบบ ไม่ได้ขโมยข้อมูล และไม่ได้แก้ไขไฟล์อะไรบนเครื่องคุณ มันคือการทำให้บริการใช้ไม่ได้เฉย ๆ เปรียบเทียบให้เห็นภาพคือเหมือนมีคนหลายพันคนมายืนออกันหน้าประตูร้าน ไม่ได้เข้าไปขโมยของ แต่ลูกค้าจริงก็เดินเข้าร้านไม่ได้อยู่ดี
คำว่า distributed ในชื่อคือหัวใจของปัญหา เพราะทราฟฟิกไม่ได้มาจากที่เดียวแต่กระจายมาจากอุปกรณ์จำนวนมากทั่วโลก ทำให้แยกไม่ออกง่าย ๆ ว่าอันไหนเป็นผู้ใช้จริงอันไหนไม่ใช่ และการบล็อกทีละที่อยู่จึงไม่ได้ผลในทางปฏิบัติ
DoS ต่างจาก DDoS ยังไง
สองคำนี้ใช้ปนกันบ่อยมากจนหลายคนคิดว่าเหมือนกัน จริง ๆ แล้วเป้าหมายเดียวกันคือทำให้บริการใช้ไม่ได้ แต่ต่างกันที่จำนวนแหล่งที่มาของทราฟฟิก ซึ่งความต่างตรงนี้ส่งผลโดยตรงต่อความยากในการรับมือ
| หัวข้อ | DoS | DDoS |
|---|---|---|
| แหล่งที่มา | มาจากแหล่งเดียวหรือไม่กี่แหล่ง | มาจากอุปกรณ์จำนวนมากกระจายทั่วโลก |
| ปริมาณที่ทำได้ | จำกัดด้วยกำลังของแหล่งเดียว | รวมกำลังของทุกแหล่งเข้าด้วยกัน จึงสูงกว่ามาก |
| ความยากในการบล็อก | บล็อกที่อยู่ต้นทางได้ค่อนข้างตรงไปตรงมา | บล็อกทีละที่อยู่แทบไม่ได้ผล เพราะมีมากเกินไป |
| การแยกจากผู้ใช้จริง | พอแยกออกได้จากรูปแบบที่ผิดปกติชัดเจน | แยกยาก เพราะทราฟฟิกกระจายและเลียนแบบผู้ใช้จริงได้ |
| ความถี่ที่เจอ | พบน้อยลงในปัจจุบัน | เป็นรูปแบบหลักที่เจอในทางปฏิบัติ |
รูปแบบการโจมตีที่พบบ่อย
เวลาอ่านรายงานด้านความปลอดภัยจะเห็นการแบ่ง DDoS ออกเป็นกลุ่มตามชั้นที่มันไปกดดัน ซึ่งสำคัญเพราะแต่ละกลุ่มต้องใช้วิธีตั้งรับคนละแบบ ตารางนี้อธิบายเชิงแนวคิดว่าแต่ละกลุ่มไปทำให้อะไรหมดก่อน ไม่ได้ลงรายละเอียดวิธีการใด ๆ
| กลุ่ม | กดดันที่อะไร | อาการที่เห็น | ตั้งรับด้วยอะไรเป็นหลัก |
|---|---|---|---|
| Volumetric | แบนด์วิดท์ของเส้นทางที่วิ่งเข้าเครื่อง | ท่อเต็มจนทราฟฟิกปกติเบียดเข้ามาไม่ได้ | ความจุของเครือข่ายฝั่งผู้ให้บริการหรือบริการกรองปลายทางที่ใหญ่กว่า |
| Protocol | ตารางการเชื่อมต่อของเซิร์ฟเวอร์และอุปกรณ์เครือข่าย | เครื่องยังมีแบนด์วิดท์เหลือ แต่รับการเชื่อมต่อใหม่ไม่ไหว | การตั้งค่าระดับระบบปฏิบัติการและไฟร์วอลล์ที่จำกัดการเชื่อมต่อค้าง |
| Application layer | ตัวเว็บแอปและฐานข้อมูลที่อยู่หลังบ้าน | ปริมาณคำขอดูไม่สูงมาก แต่ CPU และฐานข้อมูลทำงานเต็มที่จนช้า | การจำกัดอัตราคำขอ การแคช และการกรองระดับเว็บแอป |
อาการที่บอกว่ากำลังโดนอยู่
อาการของ DDoS คล้ายกับปัญหาทางเทคนิคทั่วไปมาก จนหลายครั้งกว่าจะรู้ตัวก็เสียเวลาไล่หาสาเหตุผิดจุดไปแล้ว สิ่งที่ช่วยได้มากคือการมีข้อมูลพื้นฐานไว้เทียบ เช่นรู้ว่าปกติเว็บมีทราฟฟิกเท่าไหร่และ CPU วิ่งที่ระดับไหน สัญญาณที่ควรสงสัยมีดังนี้
- เว็บช้าลงหรือเข้าไม่ได้เป็นช่วง ๆ ทั้งที่ไม่ได้แก้ไขหรือติดตั้งอะไรใหม่
- ทราฟฟิกพุ่งขึ้นผิดปกติแบบฉับพลัน โดยไม่มีแคมเปญหรือเหตุการณ์อะไรรองรับ
- ทราฟฟิกจำนวนมากยิงมาที่หน้าเดียวซ้ำ ๆ โดยเฉพาะหน้าที่ต้องประมวลผลหนัก เช่นหน้าค้นหาหรือหน้าล็อกอิน
- สัดส่วนผู้เข้าชมจากประเทศหรือแหล่งที่ไม่เคยมีมาก่อนเพิ่มขึ้นผิดสังเกต
- CPU หรือแรมของเครื่องเต็มตลอดเวลาโดยที่ยอดผู้ใช้จริงไม่ได้เพิ่มขึ้นตาม
- จำนวนการเชื่อมต่อค้างสูงผิดปกติ ทั้งที่แบนด์วิดท์ยังเหลือ
- บริการอื่นบนเครื่องเดียวกันพลอยช้าหรือล่มไปด้วย เพราะแย่งทรัพยากรกัน
ป้องกันได้แค่ไหนกันแน่
ต้องพูดกันตรง ๆ ว่าไม่มีอะไรกัน DDoS ได้ 100% ใครก็ตามที่บอกว่าบริการของเขากันได้ทั้งหมดในทุกสถานการณ์ คือการอธิบายที่ไม่ตรงกับความเป็นจริง เพราะถ้าปริมาณที่ยิงเข้ามาใหญ่กว่าความจุของทุกชั้นที่คุณมี สุดท้ายบริการก็จะได้รับผลกระทบอยู่ดี
เป้าหมายที่ทำได้จริงจึงไม่ใช่การทำให้โจมตีไม่สำเร็จเลย แต่คือการลดผลกระทบและกระจายภาระ ให้ทราฟฟิกส่วนใหญ่ถูกดูดซับหรือคัดออกตั้งแต่ก่อนถึงเครื่องของคุณ และให้สิ่งที่หลุดเข้ามาถึงเครื่องมีปริมาณที่เครื่องยังรับไหว ถ้าทำได้แบบนี้ ผู้ใช้จริงส่วนใหญ่จะยังใช้งานได้แม้กำลังโดนอยู่
อีกมุมที่ควรตั้งความคาดหวังให้ถูกคือเรื่องเวลา การโจมตีส่วนใหญ่ไม่ได้ยืดเยื้อตลอดไป และสิ่งที่ตัดสินว่าคุณเจ็บมากหรือน้อยคือเตรียมการไว้ล่วงหน้าแค่ไหน ไม่ใช่ว่าตอบสนองเร็วแค่ไหนหลังเกิดเหตุ เพราะตอนกำลังโดนอยู่คือเวลาที่แก้อะไรได้ยากที่สุด
แนวทางป้องกันเป็นชั้น ๆ
วิธีคิดที่ใช้ได้จริงคือวางการป้องกันเป็นชั้น ให้แต่ละชั้นคัดทราฟฟิกออกไปส่วนหนึ่ง เหลือให้ชั้นถัดไปน้อยลงเรื่อย ๆ ชั้นนอกสุดคือบริการอย่าง Cloudflare หรือ CDN ที่รับทราฟฟิกแทนเครื่องคุณ ส่วนชั้นในสุดคือ ไฟร์วอลล์ และการตั้งค่าบนเครื่องเอง
- ชั้นนอกสุด — ใช้ CDN หรือ reverse proxy รับทราฟฟิกแทน ทำให้ที่อยู่จริงของเครื่องไม่ถูกเปิดเผยตรง ๆ และเนื้อหาที่แคชได้ถูกตอบจากชั้นนอกโดยไม่รบกวนเครื่องหลัก
- ชั้นระดับเว็บแอป — จำกัดอัตราคำขอต่อผู้ใช้หนึ่งราย โดยเฉพาะหน้าที่ประมวลผลหนักอย่างหน้าค้นหา หน้าล็อกอิน และหน้าที่เขียนข้อมูล
- ชั้นแคช — ทำให้หน้าที่คนเข้าเยอะที่สุดตอบได้จากแคช ยิ่งพึ่งฐานข้อมูลน้อยเท่าไหร่ เครื่องยิ่งทนต่อคำขอจำนวนมากได้มากขึ้น
- ชั้นไฟร์วอลล์บนเครื่อง — ปิดพอร์ตที่ไม่ได้ใช้ทั้งหมด จำกัดจำนวนการเชื่อมต่อค้างต่อที่อยู่ และไม่เปิดบริการภายในออกสู่สาธารณะ
- ชั้นผู้ให้บริการ — ตรวจสอบว่าผู้ให้บริการเซิร์ฟเวอร์ของคุณมีการกรองทราฟฟิกระดับเครือข่ายให้หรือไม่ และช่องทางติดต่อตอนเกิดเหตุคืออะไร
- ชั้นข้อมูล — มีการสำรองข้อมูลและแผนย้ายเครื่องไว้ล่วงหน้า เผื่อกรณีที่ต้องยกบริการไปที่อื่นชั่วคราว
- ชั้นการเฝ้าดู — ตั้งการแจ้งเตือนเมื่อทราฟฟิกหรือการใช้ทรัพยากรเกินระดับปกติ เพื่อให้รู้ตัวตั้งแต่ต้นแทนที่จะรู้ตอนเว็บล่มแล้ว
ถ้าโดนแล้วทำยังไง
ตอนกำลังเกิดเหตุ สิ่งที่แย่ที่สุดคือลองสุ่มแก้ไปเรื่อย ๆ จนเปลี่ยนหลายอย่างพร้อมกันแล้วไม่รู้ว่าอะไรได้ผล ลำดับด้านล่างคือแนวทางตั้งสติที่ใช้ได้กับกรณีทั่วไป และถ้าเครื่องปัจจุบันเล็กเกินกว่าจะรับภาระไหวตั้งแต่แรก การขยับไปเครื่องที่ทรัพยากรมากขึ้นก็เป็นอีกทางหนึ่ง ดูสเปกได้ที่หน้า VPS ของ Plusweb
- 1ยืนยันก่อนว่าเป็นการโจมตีจริง โดยดูบันทึกของเว็บเซิร์ฟเวอร์และกราฟทราฟฟิก เทียบกับระดับปกติ
- 2บันทึกหลักฐานไว้ เช่นช่วงเวลา ปริมาณ และหน้าที่ถูกยิงหนักที่สุด เพื่อใช้คุยกับผู้ให้บริการ
- 3แจ้งผู้ให้บริการเซิร์ฟเวอร์ทันที เพราะเขาเห็นภาพระดับเครือข่ายที่คุณมองไม่เห็นจากในเครื่อง
- 4เปิดหรือเพิ่มความเข้มของการกรองที่ชั้นนอก เช่นโหมดป้องกันของ CDN หรือ reverse proxy ที่ใช้อยู่
- 5ลดภาระของเครื่องชั่วคราว เช่นเปิดแคชให้กว้างขึ้น หรือปิดฟีเจอร์ที่กินทรัพยากรหนักไว้ก่อน
- 6จำกัดอัตราคำขอที่หน้าซึ่งถูกยิงหนักที่สุด แทนการบล็อกทั้งเว็บซึ่งกระทบผู้ใช้จริงด้วย
- 7หลีกเลี่ยงการบล็อกทีละที่อยู่ด้วยมือ เพราะไม่ทันและมักบล็อกโดนผู้ใช้จริงไปด้วย
- 8เฝ้าดูจนทราฟฟิกกลับสู่ระดับปกติ แล้วค่อยทยอยคืนค่าที่ปรับไว้ชั่วคราวทีละอย่าง
- 9ทบทวนหลังจบเหตุว่าชั้นไหนรับไม่ไหว แล้วเสริมชั้นนั้นก่อนครั้งต่อไป
สรุป
DDoS คือการทำให้บริการใช้งานไม่ได้ด้วยการถล่มทราฟฟิกจากหลายแหล่งพร้อมกัน ต่างจาก DoS ตรงที่แหล่งที่มากระจายจนบล็อกทีละที่อยู่ไม่ได้ผล และต่างจากการเจาะระบบตรงที่มันไม่ได้ขโมยหรือแก้ไขข้อมูลของคุณ แต่ทำให้คนอื่นเข้าใช้ไม่ได้
ความจริงที่ต้องยอมรับคือไม่มีวิธีไหนกันได้ 100% สิ่งที่ทำได้คือวางการป้องกันเป็นชั้น ๆ ให้ทราฟฟิกส่วนใหญ่ถูกคัดออกตั้งแต่ก่อนถึงเครื่อง และให้เครื่องรับเฉพาะส่วนที่ยังไหว การเตรียมไว้ล่วงหน้าให้ผลมากกว่าการแก้ตอนเกิดเหตุเสมอ
ถ้าจะเริ่มจากจุดเดียวก่อน ให้เริ่มที่ชั้นนอกสุดด้วย CDN หรือ Cloudflare แล้วค่อยไล่มาที่ ไฟร์วอลล์บนเครื่อง และถ้ายังไม่คุ้นกับการดูแลเซิร์ฟเวอร์ของตัวเอง แนะนำอ่าน VPS คืออะไร ประกอบ เพื่อให้เห็นว่าอะไรคือหน้าที่ของคุณและอะไรคือหน้าที่ของผู้ให้บริการ
อยากได้เซิร์ฟเวอร์ที่ตั้งการป้องกันเองได้ทุกชั้น?
VPS ของ Plusweb ให้สิทธิ์ root เต็มและมี 1 Public IPv4 ในตัว ตั้งไฟร์วอลล์ แคช และ reverse proxy ได้เอง เริ่มต้น 120฿/เดือน เมื่อชำระรายปี
คำถามที่พบบ่อย
DDoS คืออะไรแบบสั้นที่สุด?
DDoS คือการทำให้บริการใช้งานไม่ได้ ด้วยการส่งทราฟฟิกหรือคำขอจำนวนมหาศาลจากหลายแหล่งพร้อมกัน จนทรัพยากรของเป้าหมายหมดและผู้ใช้จริงเข้าไม่ได้ มันไม่ได้ขโมยข้อมูลและไม่ได้เจาะเข้าไปแก้ไขอะไรในเครื่อง แค่ทำให้ใช้บริการไม่ได้เท่านั้น
DoS กับ DDoS ต่างกันยังไง?
เป้าหมายเหมือนกันคือทำให้บริการใช้ไม่ได้ ต่างกันที่แหล่งที่มา DoS มาจากแหล่งเดียวหรือไม่กี่แหล่ง จึงบล็อกที่ต้นทางได้ค่อนข้างตรงไปตรงมา ส่วน DDoS กระจายมาจากอุปกรณ์จำนวนมากทั่วโลก ปริมาณรวมสูงกว่ามากและบล็อกทีละที่อยู่แทบไม่ได้ผล
ป้องกัน DDoS ได้ 100% ไหม?
ไม่ได้ และควรระวังบริการที่อ้างแบบนั้น เพราะถ้าปริมาณที่ยิงเข้ามาใหญ่กว่าความจุของทุกชั้นที่มี บริการก็จะได้รับผลกระทบอยู่ดี สิ่งที่ทำได้จริงคือลดผลกระทบและกระจายภาระ ให้ทราฟฟิกส่วนใหญ่ถูกคัดออกก่อนถึงเครื่อง เพื่อให้ผู้ใช้จริงส่วนใหญ่ยังใช้งานได้
รู้ได้ยังไงว่าเว็บกำลังโดน DDoS อยู่?
สัญญาณที่พบบ่อยคือเว็บช้าหรือเข้าไม่ได้ทั้งที่ไม่ได้แก้อะไร ทราฟฟิกพุ่งฉับพลันโดยไม่มีเหตุรองรับ คำขอกระจุกอยู่ที่หน้าเดียวซ้ำ ๆ และทรัพยากรเครื่องเต็มทั้งที่ยอดผู้ใช้จริงไม่ได้เพิ่ม ให้ตัดสาเหตุที่พบบ่อยกว่าออกก่อน เช่นบอทเก็บข้อมูลหรืองานตามเวลาที่รันทับกัน โดยอ่านจากบันทึกของเว็บเซิร์ฟเวอร์
ใช้ CDN แล้วช่วยเรื่อง DDoS จริงไหม?
ช่วยได้มากในหลายกรณี เพราะ CDN หรือ reverse proxy ทำหน้าที่รับทราฟฟิกแทนเครื่องของคุณ เนื้อหาที่แคชได้จะถูกตอบจากชั้นนอกโดยไม่รบกวนเครื่องหลัก และที่อยู่จริงของเครื่องไม่ถูกเปิดเผยตรง ๆ แต่ก็ไม่ได้แปลว่าปลอดภัยเต็มร้อย จึงควรทำควบคู่กับการจำกัดอัตราคำขอและไฟร์วอลล์บนเครื่อง
VPS แพ็กเกจใหญ่ขึ้นช่วยให้ทน DDoS ได้มากขึ้นไหม?
ช่วยได้ในแง่ที่เครื่องมี CPU และแรมเหลือมากขึ้น จึงรับคำขอจำนวนมากได้นานกว่าก่อนจะล้า แต่ไม่ใช่คำตอบหลัก เพราะการถล่มปริมาณระดับสูงกินความจุของเส้นทางเครือข่ายมากกว่ากำลังของเครื่อง ทางที่ได้ผลกว่าคือคัดทราฟฟิกที่ชั้นนอกก่อน แล้วค่อยเลือกสเปกเครื่องให้พอกับงานจริง เช่น VPS-01 ที่ 250฿ ต่อเดือน หรือ VPS-02 ที่ 350฿ ต่อเดือนสำหรับเว็บที่มีผู้ใช้ต่อเนื่อง
GUIDES
บทความที่เกี่ยวข้อง
อ่านต่อในหัวข้อใกล้เคียง
Firewall คืออะไร? เข้าใจการทำงาน พร้อมแนวทางตั้งค่าบน VPS
ไฟร์วอลล์คือด่านตรวจที่คัดกรองการเชื่อมต่อเข้าออกเซิร์ฟเวอร์ตามกฎที่คุณตั้งไว้ อ่านให้เข้าใจหลักการทำงาน ประเภทที่ต้องรู้ พอร์ตที่ควรเปิดปิด และกับดักที่ทำให้คนล็อกตัวเองออกจากเครื่อง
อ่านต่อCloudflare คืออะไร? เข้าใจใน 10 นาที พร้อมวิธีใช้กับ VPS
Cloudflare คือบริการที่มาอยู่ตรงกลางระหว่างผู้ใช้กับเซิร์ฟเวอร์ของเรา ทำหน้าที่ทั้ง DNS, CDN, ป้องกันการโจมตี และ SSL อ่านให้เข้าใจว่ามันช่วยอะไรจริง ไม่ช่วยอะไร และต่อกับ VPS ยังไง
อ่านต่อCDN คืออะไร? อธิบายแบบเห็นภาพ พร้อมบอกว่าเว็บไหนได้ผลจริง
CDN คือเครือข่ายที่เอาสำเนาไฟล์ของเว็บไปวางไว้หลายจุดทั่วโลก แล้วส่งจากจุดที่ใกล้ผู้ใช้ที่สุด อ่านให้เข้าใจว่ามันช่วยอะไร ไม่ช่วยอะไร และเว็บแบบไหนใช้แล้วแทบไม่ต่าง
อ่านต่อ