การโจมตีระบบเครือข่ายแบบ DDoS คืออะไร? แล้วเราจะป้องกันได้อย่างไร

ในบ่อยครั้งที่เรามักจะได้ยินข่าวการโจมตีระบบเครือข่ายเพื่อให้ระบบคอมพิวเตอร์ใช้งานไม่ได้ เคยสงสัยหรือไม่ว่ามีการโจมตีลักษณะดังกล่าวจริงหรือไม่? หากโดนโจมตีแล้วเราจะรู้ได้อย่างไรว่าโดนโจมตีอยู่และจะรับมือกับการโจมตีลักษณะเหล่านี้ได้อย่างไร บทความนี้จะมาอธิบายเรื่องเหล่านี้ให้ฟัง...

การโจมตีแบบ DDoS คืออะไร? แตกต่างอะไรจากโจมตีแบบ DoS?
ก่อนจะอธิบาย DDoS ผมขอเริ่มจาก DoS ก่อน ซึ่ง DoS ย่อมาจาก Denial-of-Service ซึ่งก็สามารถแปลได้ตรงตัวว่า “การกระทำการใดๆ เพื่อไม่ให้ระบบใช้งานได้นั้น” ซึ่งการกระทำการใดๆ ที่กล่าวถึงอาจจะเป็นการถอดลายแสนของเครื่องเซิร์ฟเวอร์ที่ให้บริการ การถอดปลั๊กหรือการตัดระบบไฟฟ้าของเครื่องเซิร์ฟเวอร์ ก็นับได้ว่าเป็นการทำ DoS ได้ทั้งสิ้น แต่เป็นการโจมตีที่ระดับกายภาพ (Physical Attack) จึงเป็นสาเหตุที่ต้องมีการทำความมั่นคงทางการกายภาพ (Physical Security) เช่นห้องเซิร์ฟเวอร์ ระบบไฟฟ้าสำรองนั่นเอง สำหรับ DDoS ก็ย่อมาจาก Distributed Denial-of-Service หรือเป็นการโจมตีแบบกระจายนั่นเอง ซึ่งมักจะใช้ในการโจมตีผ่านระบบเครือข่ายเข้ามา ซึ่งเป้าหมายของการกระทำดังกล่าวคือทำให้เครื่องเซิร์ฟเวอร์ปลายทางไม่สามารถใช้งานได้

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

 DDoS_001.png

จุดประสงค์หลักของการโจมตีคือทำให้ระบบไม่สามารถใช้งานได้ ซึ่งเป็นคนละวัตถุประสงค์ในการขโมยข้อมูล ดังนั้นการโจมตีแบบ DDoS มักจะตรวจสอบได้จากการมอนิเตอร์ระบบ หากพบการใช้งานผิดปรกติก็ประเมินได้ว่า “อาจจะ” เป็นการโจมตี ทั้งนี้จะต้องทราบถึงลักษณะการใช้งานด้วย เช่น หากระบบของเราเป็นการขายของออนไลน์และมีการจัดโปรโมชันส่งเสริมการขายแบบ 11.11 หรือ 12.12 ในแง่ของทราฟฟิกก็ย่อมมีเข้ามามากจนดูเหมือนเป็นการโจมตีเช่นเดียวกัน ดังรูปตัวอย่างด้านล่าง

 DDoS_002.png

ตัวอย่างทราฟฟิกการโจมตีแบบ TCP/443 หรือ HTTPs ที่มีการปลอมไอพีแอดเดรสต้นทางไปยังเว็บเซิร์ฟเวอร์ปลายทาง โดยมีการกำหนด TCP Syn flag ให้เหมือนกับการเปิดการเชื่อมต่อนั่นเอง โดยจากตัวอย่างเป็นการแสดงให้เห็นว่ามีการยิงทราฟฟิกในปริมาณไม่มาก ประมาณ 1 packet/sec เท่านั้น แต่หากเป็นการทราฟฟิกโจมตีจริงอาจจะมีขนาดสูงกว่านี้มาก อาจจะเป็นระดับ 10,000 packet/sec หรือมากกว่านั้นขึ้นอยู่กับจำนวนเครื่องที่โจมตีเข้ามานั่นเอง เนื่องจากการโจมตีแบบ DDoS จะเน้นปริมาณเป็นหลัก จึงมักเรียกกันว่า Flood (หรือ “ท่วม”) นั่นเอง จากตัวอย่างการโจมตีแบบด้านล่างจะเรียกว่าเป็นการโจมตีแบบ TCP Syn flood attack นั่นเอง โดยตรวจสอบได้จากการใช้โปรแกรมดักข้อมูล (Sniffer) บนระบบ Linux ผ่านทางคำสั่ง tcpdump 

 DDoS_003.png

การโจมตีแบบ DDoS มีการทำงานได้อย่างไร
สำหรับการโจมตีแบบ DDoS นั้นจะต้องอาศัยจำนวนเครื่องหลายเครื่องในการโจมตี ซึ่งผู้โจมตี (Attacker) ไม่สามารถใช้เครื่องของตนเองในการโจมตีได้พอ จึงมักจะใช้เครื่องของเหยี่อที่ติดมัลแวร์ไปแล้ว (มัลแวร์ที่ติดจะเรียกรวมๆ ว่า Botnet) เพื่อโจมตีไปยังเครื่องเซิร์ฟเวอร์ปลายทางอีกทอดหนึ่ง โดยสั่งงานผ่านทางเครื่องควบคุม (Handler) ดังรูปด้านล่าง

DDoS_004.png
 
หากเราเป็นผู้ดูแลระบบของเครื่องเซิร์ฟเวอร์ปลายทางก็จะพบทราฟฟิกการโจมตีจำนวนมหาศาลเข้ามายังเครื่องเซิร์ฟเวอร์ของเรา โดยทราฟฟิกเหล่านี้ก็มักจะปลอมแปลงไอพีแอดเดรสต้นทางทำให้ไม่สามารถหาได้ว่ามาจากที่ใด หรือในกรณีที่สามารถตรวจสอบพบก็มักจะเจอว่าผู้โจมตีเป็นเครื่องคอมพิวเตอร์ที่ติดมัลแวร์ Botnet อยู่ดี ไม่สามารถตรวจสอบไปยังผู้โจมตีตัวจริงได้

เราจะป้องกันการโจมตีเหล่านี้ได้อย่างไร
เนื่องจากการโจมตีแบบ DDoS นั้น เน้นที่การโจมตีที่จุดอ่อนของระบบ ดังนั้นการแก้ไขปัญหาอาจจะต้องพิจารณาหลายส่วนประกอบกัน รวมไปถึงอาจจะต้องมีการปรับเปลี่ยนระบบเพื่อแก้ไขปัญหา สามารถสรุปได้คร่าวๆ ดังตาราง

รูปแบบการโจมตี แนวทางแก้ไข
การโจมตีของแบนด์วิดท์อินเทอร์เน็ตเพื่อทำให้ท่อการเชื่อมต่อเต็ม หากระบบเซิร์ฟเวอร์อยู่ภายในออฟฟิส ลองพิจารณาย้ายระบบดังกล่าวไปอยู่บนศูนย์ข้อมูลของผู้ให้บริการ (บริการ Colocation) หรือเปลี่ยนไปใช้บริการคลาวด์คอมพิวติ้งแทน
การโจมตีด้วยทราฟฟิกจำนวนมาก เครื่องเซิร์ฟเวอร์ดังกล่าวควรตั้งอยู่หลังไฟร์วอลล์และตรวจสอบว่าไฟร์วอลล์มีฟีเจอร์ DoS Protection หรือไม่ ถ้ามีก็ให้เปิดใช้งานฟีเจอร์ดังกล่าวพร้อมทั้งมอนิเตอร์การทำงานเป็นระยะๆ
การโจมตีผ่านทางช่องโหว่ของซอฟต์แวร์ เครื่องเซิร์ฟเวอร์ รวมไปถึงอุปกรณ์เครือข่ายที่เกี่ยวข้องต้องมีการอัปเดทอย่างสม่ำเสมอ หากไฟร์วอลล์มีฟีเจอร์การป้องกันด้วย IPS (Intrusion Prevention System) ก็ให้เปิดใช้งานฟีเจอร์ดังกล่าว พร้อมทั้งมอนิเตอร์การทำงานเป็นระยะๆ
การโจมตีไปที่อุปกรณ์เครือข่ายก่อนถึงเครืองเซิร์ฟเวอร์ พิจารณาการป้องกันอุปกรณ์ต่างๆ ที่เขื่อมต่อก่อนถึงเครื่องเซิร์ฟเวอร์ เช่น การกำหนด Access Control List หรือ ACL ของอุปกรณ์เราท์เตอร์ให้เข้าถึงได้จากไอพีแอดเดรสที่กำหนด เป็นต้น

ตัวอย่างการคอนฟิก DoS Policy บนไฟร์วอลล์ FortiGate  ที่สามารถป้องกันได้ในระดับ Layer 3 (ระดับไอพีแอดเดรส) และ Layer 4 (ระดับ TCP, UDP และ ICMP) เป็นต้น โดยเป็นการกำหนด Threshold ในการป้องกัน ซึ่งค่า Threshold นั้นจะได้จากการมอนิเตอร์อีกทีหนึ่ง ซึ่งโดยมากแล้วแนะนำให้ใช้ค่าดีฟอลต์ก่อนเพื่อเป็นค่ามาตรฐาน (Baseline) ก่อนที่จะปรับค่าอีกทีหนึ่งจากการมอนิเตอร์การใช้งาน

DDoS_005.png 
สำหรับกรณีทีมีการโจมตีปริมาณมากเกินกว่าระบบที่มีอยู่จะป้องกันได้ อาจจะพิจารณาเลือกใช้บริการ DDoS Protection ผ่านทางผู้ให้บริการเพิ่มเติม ซึ่งมีผู้ให้บริการหลายเจ้า เช่น Cloudflare เป็นต้น ซึ่งบริการเหล่านี้จะทำหน้าที่เป็นระบบป้องกันด่านหน้าให้กับเครื่องเซิร์ฟเวอร์ของเราแทน โดยการใช้เทคนิคของ DNS ที่ชี้เว็บเซิร์ฟเวอร์ของเราไปที่ Cloudflare แทน และคอนฟิกระบบ Cloudflare ให้มารับข้อมูลที่เว็บไซต์ของเราอีกทีหนึ่ง หากมีการโจมตีเกิดขึ้นจะเป็นการโจมตีไปยังระบบ Cloudflare แทน ซึ่งเป็นระบบที่มีการออกแบบเพื่อป้องกันการถูกโจมตีเอาไว้แล้ว

 DDoS_006.png

บทสรุป
การโจมตีแบบ DDoS นั้น มีโอกาสเกิดขึ้นได้ แต่จากประสบการณ์ของผมเองพบว่าผู้โจมตีมักจะมีจุดประสงค์ในการโจมตีประกอบด้วยเสมอ เช่น การโจมตีระบบของทางราชการ การโจมตีเพื่อเรียกร้องทางการเมือง การโจมตีสถาบันทางการเงิน รวมไปถึงเกมออนไลน์ และระบบ E-commerce เป็นต้น ซึ่งลักษณะดังกล่าวเป็นการโจมตีจากภายนอกเป็นหลัก โดยหัวใจสำคัญในการตรวจสอบการโจมตีคือการมอนิเตอร์ระบบ หากปราศจาการมอนิเตอร์ระบบก็จะไม่สามารถทราบได้ว่าระบบทำงานปรกติหรือไม่ มีการโจมตีหรือไม่ โดยบ่อยครั้งการโจมตีที่เกิดขึ้นอาจจะไม่พบล็อกในระบบก็ได้

อ้างอิง: