แค่กด F5 ทำไมเว็บถึงล่ม?

ขอแสดงความยินดีกับการรวมพลังของชาวไซเบอร์ ที่ช่วยพัดพายุใหญ่ให้ผ่านไป ด้วยการระดมกด F5 (Refresh) กันอย่างล้นหลาม จนทำให้เว็บที่เราไม่ค่อยได้เข้าไปบ่อยๆ ล่มกันไปหลายเว็บเลย จนทำให้ต้นเรื่องต้องออกมาประกาศ เลื่อนการรวมถนนออกเน็ตเป็นสายเดียวไปก่อน (เค้าไม่ให้เรียก Single Gateway นี่นะ) … แต่หลายๆคนอาจจะสงสัยว่าเฮ้ย แค่กด F5 พร้อมๆกันมันทำให้เว็บล่มได้เลยเหรอ คำตอบคือ…ได้ครับ ถ้าทำพร้อมๆกันในปริมาณที่มากพอ และทำกับหน้าเว็ปที่ต้องการประมวลผลหนักๆ …ไม่ต้องอะไรมากลองดูตอนช่วงเช้าวันแรกของการลงทะเบียน ที่นักศึกษาเข้าระบบพร้อมกันแค่หลักพันก็ตายละครับ หรือถ้ายังไม่เห็นภาพก็ลองดูคืน 0 บาท ของสายการบินโลวคอสชื่อดังดัง ตายเรียบ อารมณ์เสียไปตามๆกัน

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

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

ครับทดสอบแล้ว แต่ส่วนใหญ่ปัญหาหลักไม่ได้อยู่ที่ตัวระบบ แต่อยู่ที่เงินงบประมาณมากกว่า … เพราะถ้าจะให้รับโหลดได้เยอะๆ ก็ต้องลงทุนเพิ่มเครื่อง เพิ่มซีพียู เพิ่มหน่วยความจำ รวมไปถึงเพิ่มความเร็วในการเชื่อมต่อ ซึ่งอาจเป็นหลักหลายร้อยล้าน (จากการตามข่าวพบว่าการใช้งานต่อวันประมาณ 6,000 คน ซึ่งถือว่าน้อยมาก) ส่วนโอกาสที่จะใช้พร้อมๆกัน ลองคิดเล่นๆว่าคนเข้าใช้เฉพาะเวลาทำงานคิดที่ 8 ชม. 8:00-16:00 คิดเป็น 6,000/(8*60) = 12.5 คน ต่อนาที ซึ่งเทียบไม่ได้กับการเข้าใช้พร้อมกันจริงๆ 100,000 คน ต่อวินาที (เพราะเค้าแจ้งว่ามีเข้ามาเป็นแสน แต่ตัวนี้เราไม่ต้องหาร 8*60 เพราะเค้าเข้าพร้อมกันแค่ช่วงเวลาหนึ่งตามนัด ถ้าคิดให้แฟร์ๆ ก็อาจจะเหลือที่ 10,000 คนใน 1 วินาที ก็นิ่งแล้ว)

การที่มีการโจมตีเข้ามาพร้อมๆกัน แบบนี้เค้าเรียก DoS (Denial Of Service) คือการโจมตีบริการใดบริการหนึ่ง (ในที่นี้คือเว็บ) จากแหล่งเดียวแต่ว่าหลายครั้งต่อเนื่อง ซึ่งโดยปกติถ้าปลายทางไม่มีการป้องกัน ผู้โจมตีสามารถเขียนสคริปแค่ไม่กี่บรรทัด ก็สามารถยิงให้ร่วงได้แล้ว แต่ในระบบส่วนใหญ่เค้าจะมีทั้ง Firewall และ IDS (Intrusion Detection System) ช่วยในการป้องกัน เช่นเจอยิงมา 100 ครั้งใน 1 วินาที ก็สามารถตรวจจับว่าเป็นการโจมตีได้แล้ว โดยปกติก็จะทำการตัดการเชื่อมต่อ หรือแบน IP นั้นเพื่อบล๊อกการโจมตี ทำให้ฝั่งผู้โจมตีต้องขยับขยายไปใช้วิธี DDoS (Distributed Denial of Service) ซึ่งสามารถทำได้หลายๆทาง ตั้งแต่การแพร่ มัลแวร์ หรือวอร์ม ไปฝั่งไว้ที่เครื่องผู้ใช้ทั่ว (Zombie PC) ไปเพื่อรอรับคำสั่งให้โจมตีพร้อมๆกัน (วิธีนี้มักใช้ในกลุ่มแฮกเกอร์ที่ทำงานเป็นทีมและมีเป้าหมายชัดเจน) ส่วนวิธีบ้านๆ แบบที่เราทำกันคือ นัดกันยิงจากเครื่องใครเครื่องมันโดยสมัครใจ ซึ่งถึงแม้จะมีระบบป้องกันก็ไม่สามารถจัดการได้ทันเพราะไอพีเปลี่ยนหน้ามาตลอด  เหมือนเวลาที่คุณไปต่อแถวซื้อของที่เค้าจำกัดจำนวนการซื้อ แต่ไปเจอกลุ่มคนที่เวียนกันซื้อเรื่อยๆ จนของหมดทำให้ผู้ใช้หลักอย่างเราใช้ระบบไม่ได้นั่นเอง

จริงๆการโจมตีในลักษณะ DDoS เกิดขึ้นทุกวินาที ถ้าใครอยากดูแผนภาพการโจมตีแบบเรียลไทม์ลองเข้าไปดูที่ http://map.norsecorp.com/ (ผมชอบตัวนี้นะเหมือนกำลังดูสงครามขนาดย่อมเลย)  กับอีกที่หนึ่งคือ http://www.digitalattackmap.com/ แล้วจะรู้ว่าที่ยิงแค่หลักแสนนี่แค่เบาะๆเอง ^_^

 

แล้วถ้ามันเกิดขึ้นกับเรา จะป้องกันยังไง?

  • อันดับแรกควรเลือกผลิตภัณฑ์ที่รองรับการป้องกัน DDoS (Prevent DDoS) เช่นการเลือกซื้อ WiFi Access Point หรือ เราเตอร์ ที่ใช้ตามบ้าน
  • เปิดใช้งาน Firewall พยายามบล๊อกทุกอย่างแล้วค่อยเลือกเปิดบางบริการ
  • อาจมีการตั้งเวลาสำหรับการรีเซ็ตอุปกรณ์ทุกๆวัน เพื่อให้ค่าต่างๆถูกเคลียร์ไปจะได้ไม่เป็นภาระหนัก
  • กรณีที่เป็นเว็บใหญ่ ต้องการเร่งความเร็วลองใช้บริการพวก CloudFlare ได้ครับ
  • ควรวางแผนรองรับปริมาณที่เพิ่มขึ้นของผู้ใช้ เช่นช่วงเทศกาลพิเศษ หรือการขยายระบบในระยะยาว เนื่องจากปริมาณผู้ใช้ที่เพิ่มขึ้นทุกวัน อย่างของ Line และ Facebook ถ้าใช้บริการแบบกลุ่มเมฆก็จะสามารถปรับแต่งได้ง่ายขึ้น
  • อันสุดท้ายนี่สำคัญสุด “อย่าไปทำให้ใครเค้าหมั่นไส้” เพราะการโจมตีส่วนใหญ่มักมาจากความไม่พอใจที่เริ่มจากเรื่องเล็กๆน้อยๆนี่แหละ ส่วนใหญ่คนสายนี้เค้าตีสนะ ^_^

ศึกครั้งนี้จบแล้วเหรอ กำลังสนุกเลย?

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

 

AjBee.Me :  เรื่องนี้สอนให้รู้ว่า เวลาจะทำอะไรควรถามเจ้าของบ้านบ้าง ว่าเค้าชอบประตูแบบไหน ขนาดเครื่องบินยังมีถึง 6 ประตูเลยครับ ^_^

ติดตามข้อมูลผ่าน FanPage: https://www.facebook.com/AjBeeMePage