ตัวเลือกของบรรณาธิการ:

การโฆษณา

บ้าน - บริการ
Kaspersky DDoS Protection ดำเนินธุรกิจของคุณอย่างต่อเนื่อง บริการใหม่: การป้องกันการโจมตี DDoS การป้องกันการโจมตี DDoS

มีไว้สำหรับผู้ใช้บริการ Dedicated Server และ Hosted Server รวมถึงลูกค้าที่เช่าชั้นวางเซิร์ฟเวอร์
เราจะอธิบายรายละเอียดว่าจะให้ความคุ้มครองอย่างไรในบทความนี้

การโจมตี DDoS: ข้อมูลอ้างอิงด่วน

ตัวย่อ DDoS ย่อมาจาก Distributed Denial of Service - การโจมตีแบบปฏิเสธการให้บริการแบบกระจาย การโจมตี DDoS เป็นการขัดขวางการทำงานของเครื่องที่ถูกโจมตีโดยการส่งคำขอจากโฮสต์จำนวนมากไปยังเครื่อง

โดยทั่วไปแล้ว การโจมตี DDoS จะดำเนินการผ่านบอตเน็ต ซึ่งเป็นเครือข่ายของคอมพิวเตอร์ที่ติดตั้งมัลแวร์ (ซึ่งเรียกว่า zombification)

การโจมตีบางประเภทสามารถทำได้โดยไม่ต้องใช้บ็อตเน็ต (เช่น UDP Flood)

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

วิธีการป้องกัน DDoS

วิธีการป้องกันการโจมตี DDoS แบ่งออกเป็นสองวิธี กลุ่มใหญ่: วิธีการป้องกันและวิธีการตอบสนอง

เพื่อป้องกันการโจมตี DDoS มักจะใช้วิธีการฮาร์ดแวร์ในการปกป้องขอบเขตเครือข่าย - ไฟร์วอลล์ร่วมกับระบบตรวจจับการบุกรุก (IDS) อย่างไรก็ตาม พวกเขาไม่ได้ให้ความคุ้มครองตามความหมายที่เข้มงวดของคำนี้

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

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

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

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

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

หากไม่มีวิธีการใดที่กล่าวข้างต้นช่วยได้และไม่สามารถทำอะไรได้อีก เรียกว่า blackholing - เปลี่ยนเส้นทางการรับส่งข้อมูลไปยังอินเทอร์เฟซที่ไม่มีอยู่จริง (เป็น "หลุมดำ") ตามกฎแล้วสิ่งนี้นำไปสู่ความจริงที่ว่าเซิร์ฟเวอร์ที่ถูกโจมตีไม่สามารถเข้าถึงได้จากอินเทอร์เน็ตในบางครั้ง เครือข่ายภายนอก- ด้วยเหตุผลนี้เพียงอย่างเดียว การแบล็คโฮลจึงแทบจะเรียกได้ว่าเป็นวิธีการป้องกันที่ครบครัน ที่จริงแล้วมันช่วยให้ผู้จัดงานโจมตีบรรลุเป้าหมายได้อย่างรวดเร็วเท่านั้น นั่นคือทำให้ทรัพยากรที่ถูกโจมตีไม่สามารถเข้าถึงได้

ในช่วงไม่กี่ปีที่ผ่านมา โซลูชันซอฟต์แวร์และฮาร์ดแวร์แบบผสานรวมสำหรับการป้องกัน DDoS ได้แพร่หลายมากขึ้น ข้อได้เปรียบของพวกเขาคือสามารถบล็อกการรับส่งข้อมูลที่เป็นอันตรายได้โดยไม่สร้างปัญหากับความพร้อมใช้งานของบริการที่ถูกโจมตีสำหรับผู้ใช้ที่ถูกกฎหมาย ตลาดนำเสนอระบบฮาร์ดแวร์และซอฟต์แวร์สำหรับการป้องกัน DDoS จาก Cisco, Arbor Networks, F5, Juniper และอื่นๆ

บริการป้องกัน DDoS ของเรายังดำเนินการบนพื้นฐานของซอฟต์แวร์และฮาร์ดแวร์เฉพาะทางอีกด้วย ให้บริการร่วมกับพันธมิตรของเรา - บริษัท Servicepipe

ระบบป้องกันดีดอส

ระบบป้องกัน DDoS ที่ใช้ไม่ได้มีเพียงระบบเดียว แต่มีหลายระบบฮาร์ดแวร์และซอฟต์แวร์ รวมถึง Arbor Pravail และ F5 การทำความสะอาดและวิเคราะห์การรับส่งข้อมูลดำเนินการโดยตรงบนเครือข่ายโดยใช้เครื่องมือซอฟต์แวร์พิเศษ

ระบบนี้ให้การป้องกันการโจมตีประเภทต่อไปนี้:

  • TCP ฟลัด;
  • น้ำท่วม SYN;
  • การรวมกันที่ผิดกฎหมายของแฟล็ก TCP
  • การโจมตีเซสชัน TCP เช่น TCP Idle, TCP ที่ช้าและอื่น ๆ
  • การโจมตีเซสชัน HTTP (Slowloris, Pyloris ฯลฯ );
  • HTTP ฟลัด;
  • DNS ฟลัด;
  • พิษแคช DNS;
  • น้ำท่วม UDP;
  • น้ำท่วม ICMP;
  • การโจมตีแฟรกเมนต์ IP, TCP และ UDP;
  • การโจมตี VoIP และ SIP

หากตรวจพบการโจมตี สามารถใช้มาตรการตอบโต้ต่อไปนี้:

  • รายการแพ็กเก็ตไม่ถูกต้อง - การกรองแพ็กเก็ตที่ไม่สอดคล้องกับ RFC
  • การสร้างรายการขาวดำของที่อยู่ IPv4 และ IPv6
  • รายการตัวกรอง GeoIP - กรองการรับส่งข้อมูลตามประเทศ (บล็อกการรับส่งข้อมูลจากประเทศที่มาจาก จำนวนมากที่สุดการโจมตีแบบ DDoS)
    การตรวจสอบ GeoIP - การตรวจสอบการรับส่งข้อมูลตามประเทศ (ตรวจสอบการรับส่งข้อมูลขาเข้าและการจำกัดการรับส่งข้อมูลจากประเทศที่มีการโจมตี DDoS จำนวนมากที่สุด)
  • การตรวจจับซอมบี้ที่ยืดหยุ่น - การระบุซอมบี้และสร้างโปรไฟล์ของการรับส่งข้อมูลที่ถูกต้อง
  • การรับรองความถูกต้อง TCP SYN - การตอบโต้ TCP ฟลัดผ่านการรับรองความถูกต้องไคลเอนต์
  • การรับรองความถูกต้อง DNS - การตอบโต้ DNS ฟลัดผ่านการรับรองความถูกต้องไคลเอนต์
  • การกำหนดขอบเขต DNS - การตรวจสอบความถูกต้องของการสืบค้น DNS โดยใช้นิพจน์ทั่วไป
  • DNS มีรูปแบบไม่ถูกต้อง - ตรวจสอบคำขอ DNS เพื่อให้สอดคล้องกับ RFC
  • การจำกัดอัตรา DNS - การจำกัดจำนวนคำขอ DNS จากที่อยู่ IP เดียว (เหมาะสำหรับทรัพยากรที่มีการรับส่งข้อมูลต่ำเท่านั้น: ในประเทศของเรา ผู้ให้บริการมักใช้ NAT มาก กรณีที่ค่อนข้างปกติคือเมื่อเครือข่ายย่อย "สีเทา" /16 เข้าถึงอินเทอร์เน็ตผ่าน หนึ่ง IP และคำขอ DNS ทั้งหมดมาจากที่อยู่เดียว)
  • การจำกัดอัตรา DNS NXDomain - การตรวจสอบความถูกต้องของการตอบสนอง DNS มาตรการตอบโต้นี้มีไว้สำหรับการโจมตีที่แคชของเซิร์ฟเวอร์ DNS เต็มไปด้วยรายการที่ไม่ถูกต้อง มีวัตถุประสงค์เพื่อติดตามคำขอด้วยชื่อ DNS ที่ไม่มีอยู่จริง
  • DNS Regular Expression - การกรองคำสั่ง DNS โดยใช้นิพจน์ทั่วไป
  • รีเซ็ตการเชื่อมต่อ TCP - ป้องกันการเชื่อมต่อ TCP ไม่ให้ใช้เวลานานเกินไป
  • Payload Regular Expression - การกรองการรับส่งข้อมูลโดยใช้ การแสดงออกปกติเกี่ยวข้องกับแพ็คเกจ Payload;
  • HTTP ผิดรูปแบบ - บล็อกการรับส่งข้อมูล HTTP ที่ไม่สอดคล้องกับ RFC
  • การจำกัดอัตรา HTTP - การจำกัดจำนวนคำขอ HTTP จากที่อยู่ IP เดียว
  • การกำหนดขอบเขต HTTP - การตรวจสอบคำขอ HTTP โดยใช้นิพจน์ทั่วไป
  • การเจรจา SSL - การบล็อกการรับส่งข้อมูล SSL ที่ไม่สอดคล้องกับ RFC
  • AIF และ HTTP/URL Regular Expression - การใช้ลายเซ็น AIF กับการรับส่งข้อมูลที่กำลังตรวจสอบ
  • SIP มีรูปแบบไม่ถูกต้อง - บล็อกการรับส่งข้อมูล SIP ที่ไม่สอดคล้องกับ RFC
  • การจำกัดคำขอ SIP - การจำกัดจำนวนคำขอ SIP จากที่อยู่ IP เดียว

วิธีนี้ทำงานอย่างไร

สำหรับลูกค้าที่สั่งซื้อบริการป้องกัน DDoS เราจะจัดเตรียมที่อยู่ IP ที่ได้รับการป้องกัน (มีที่อยู่หนึ่งแห่งรวมอยู่ในนั้นด้วย) อัตราภาษีพื้นฐานสามารถสั่งซื้อที่อยู่เพิ่มเติมได้ผ่านแผงควบคุม) นอกจากนี้เรายังจัดสรรช่องทางพิเศษสำหรับการจราจรที่มีการป้องกัน การรับส่งข้อมูลจากอินเทอร์เน็ตจะไปยังที่อยู่ที่ได้รับการป้องกันผ่านเครือข่ายพันธมิตรของเรา ซึ่งจะต้องผ่านขั้นตอนการทำความสะอาด
การรับส่งข้อมูลที่ผิดกฎหมายทั้งหมดจะถูกทิ้งในเครือข่ายของพันธมิตร ลูกค้าได้รับเฉพาะการรับส่งข้อมูลที่ชัดเจนเท่านั้น การรับส่งข้อมูลขาออกจะเข้าสู่อินเทอร์เน็ตผ่านโครงสร้างพื้นฐานของ Selectel

เส้นทางของการจราจรที่เคลียร์จะแสดงในแผนภาพต่อไปนี้:

ข้อดี

ในบรรดาข้อดีของระบบป้องกัน DDoS ของเรา เราควรเน้นย้ำสิ่งต่อไปนี้ก่อน:

  • การเชื่อมต่อที่รวดเร็ว: การปรับแต่งเต็มรูปแบบการป้องกัน DDoS ใช้เวลา 1 - 2 วันทำการ
  • ราคาไม่แพงและโครงการภาษีที่โปร่งใส: เฉพาะการรับส่งข้อมูลที่เคลียร์ขาเข้าเท่านั้นที่ต้องชำระเงิน
  • ไม่จำเป็นต้องกำหนดค่าที่ซับซ้อนบนฝั่งไคลเอ็นต์: เพียงลงทะเบียนที่อยู่ IP ที่มีการป้องกันด้วยนามแฝงหรือบนอินเทอร์เฟซแบบย้อนกลับ

สามารถสั่งซื้อบริการนี้ได้ในแผงควบคุมแล้ว (ส่วน “บริการเครือข่าย”)
เมื่อสั่งซื้อคุณจะต้องกรอกแบบสอบถามพิเศษและระบุสิ่งต่อไปนี้:

  • วัตถุประสงค์หลักของการใช้เซิร์ฟเวอร์
  • จำนวนที่อยู่ IP ที่ต้องได้รับการปกป้อง
  • มาตรการป้องกัน DDoS ที่ต้องการ

จากข้อมูลที่ให้มา เราจะสร้างกลยุทธ์การป้องกันที่เหมาะสมที่สุด โดยคำนึงถึงลักษณะเฉพาะของโครงการเฉพาะ

สำหรับกรณีการใช้งานเซิร์ฟเวอร์ที่ได้รับความนิยมมากที่สุด (เว็บเซิร์ฟเวอร์ แอปพลิเคชันเซิร์ฟเวอร์ เซิร์ฟเวอร์ DNS) เราได้เตรียมเทมเพลตการป้องกันพิเศษที่เหมาะกับไคลเอนต์ส่วนใหญ่

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

DDoS ทำให้ธุรกิจต้องเสียค่าใช้จ่าย 40,000 เหรียญต่อชั่วโมง.

ซูกุริ

SUCURI เป็นโซลูชันคลาวด์เฉพาะสำหรับการปกป้องเว็บไซต์ที่หลากหลาย รวมถึง WordPress, Joomla, Drupal, Magento, Microsoft.Net เป็นต้น

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

  • การระบุและการลบรหัสที่เป็นอันตราย
  • การควบคุมความปลอดภัย
  • การเพิ่มประสิทธิภาพความเร็ว
  • การป้องกันกำลังดุร้าย;
  • การป้องกันช่องโหว่แบบซีโรเดย์
  • การป้องกันจากบอทที่ไม่ต้องการ
SUCURI ตรวจจับและบล็อกการโจมตีระดับ 3, 4 และ 7 ค่าบริการเริ่มต้นที่ 19,88 ดอลลาร์ต่อเดือน

อาลีบาบา

Anti-DDoS Pro จาก Alibaba จะช่วยป้องกันการโจมตี DDoS สะท้อน Anti-DDoS Pro การโจมตีที่ทรงพลังสูงสุด 2 Tbps และรองรับโปรโตคอล TCP/UDP/HTTP/HTTPS

สามารถใช้ Anti-DDoS ได้ ไม่เพียงเท่านั้นในกรณีของการวางตำแหน่งบน Alibaba แต่สำหรับ AWS, Azure, Google Cloud เป็นต้น

ไมร่า

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

MYRA มีสำนักงานใหญ่ในประเทศเยอรมนี ดังนั้นข้อมูลจึงได้รับการประมวลผลตาม กฎหมายของรัฐบาลกลางเยอรมนีเรื่องการปกป้องข้อมูล

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

หากการโจมตีดังกล่าวเกิดขึ้นจากคอมพิวเตอร์เครื่องเดียว จะถูกจัดประเภทเป็น DoS (DoS) หากมาจากหลายเครื่อง - DDoS (DiDoS หรือ DDoS) ซึ่งหมายถึง “ดมีการกระจาย ดีเอนเนียล โอบริการ" - การปฏิเสธการให้บริการแบบกระจาย ต่อไป เราจะพูดถึงสาเหตุที่ผู้โจมตีทำการโจมตีดังกล่าว สิ่งที่พวกเขาทำ อันตรายอะไรต่อผู้ถูกโจมตี และวิธีที่ผู้โจมตีสามารถปกป้องทรัพยากรของพวกเขาได้อย่างไร

ใครบ้างที่สามารถทนทุกข์ทรมานจากการโจมตี DoS และ DDoS?

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

แผนภาพที่แสดงให้เห็นถึงแก่นแท้ของการโจมตี DDoS:

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

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

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

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

มีการโจมตีอย่างไร

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

นี่คือลักษณะการทำงานของเซิร์ฟเวอร์ปกติ ซึ่งแสดงเป็นภาพในโปรแกรม Logstalgia:

ประสิทธิภาพของการโจมตี DOS ครั้งเดียวนั้นไม่สูงมาก นอกจากนี้ การโจมตีจากคอมพิวเตอร์ส่วนบุคคลทำให้ผู้โจมตีเสี่ยงต่อการถูกระบุตัวตนและถูกจับได้ การโจมตีแบบกระจาย (DDoS) ดำเนินการจากเครือข่ายซอมบี้หรือบ็อตเน็ตที่เรียกว่าให้ผลกำไรที่มากกว่ามาก

นี่คือวิธีที่เว็บไซต์ Norse-corp.com แสดงกิจกรรมของบอตเน็ต:

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

นี่คือวิธีที่ Logstalgia แสดงการโจมตี DDoS:

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

วิธีการโจมตีและการป้องกัน

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

น้ำท่วม

Flood พูดง่ายๆ ก็คือข้อมูลที่ไม่มีความหมายใดๆ ในบริบทของการโจมตี DoS/DDoS น้ำท่วมคือคำขอที่ว่างเปล่าและไม่มีความหมายในระดับหนึ่งหรืออีกระดับหนึ่ง ซึ่งโหนดรับจะถูกบังคับให้ประมวลผล

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

ประเภทของน้ำท่วม:

  • MAC Flood - ผลกระทบต่อตัวสื่อสารเครือข่าย (การบล็อกพอร์ตที่มีกระแสข้อมูล)
  • ICMP ท่วมท้น - ท่วมเหยื่อด้วยคำขอบริการ echo โดยใช้เครือข่ายซอมบี้หรือส่งคำขอ "ในนามของ" โหนดที่ถูกโจมตีเพื่อให้สมาชิกทุกคนของ botnet ส่งการตอบสนอง echo ไปพร้อม ๆ กัน (การโจมตี Smurf) กรณีพิเศษของ ICMP Flood คือการ Ping Flood (การส่งคำขอ Ping ไปยังเซิร์ฟเวอร์)
  • SYN ฟลัด - ส่งคำขอ SYN จำนวนมากไปยังเหยื่อ ล้นคิวการเชื่อมต่อ TCP โดยการสร้างการเชื่อมต่อแบบเปิดครึ่งหนึ่งจำนวนมาก (รอการยืนยันจากไคลเอ็นต์)
  • UDP ฟลัด - ทำงานตามรูปแบบการโจมตี Smurf โดยที่ดาตาแกรม UDP จะถูกส่งแทนแพ็กเก็ต ICMP
  • HTTP ฟลัด - ฟลัดเซิร์ฟเวอร์ด้วยข้อความ HTTP จำนวนมาก ตัวเลือกที่ซับซ้อนกว่าคือการฟลัด HTTPS ซึ่งข้อมูลที่ส่งจะได้รับการเข้ารหัสล่วงหน้า และก่อนที่โหนดที่ถูกโจมตีจะประมวลผลโหนดนั้น จะต้องถอดรหัสก่อน


วิธีป้องกันตนเองจากน้ำท่วม

  • กำหนดค่าสวิตช์เครือข่ายเพื่อตรวจสอบความถูกต้องและกรองที่อยู่ MAC
  • จำกัดหรือปิดใช้งานการประมวลผลคำขอ ICMP echo
  • บล็อกแพ็กเก็ตที่มาจากที่อยู่หรือโดเมนเฉพาะที่ให้เหตุผลที่สงสัยว่าไม่น่าเชื่อถือ
  • กำหนดขีดจำกัดจำนวนการเชื่อมต่อที่เปิดเพียงครึ่งเดียวด้วยที่อยู่เดียว ลดเวลาการระงับ และเพิ่มความยาวของคิวของการเชื่อมต่อ TCP
  • ปิดใช้งานบริการ UDP ไม่ให้รับการรับส่งข้อมูลจากภายนอกหรือจำกัดจำนวนการเชื่อมต่อ UDP
  • ใช้ CAPTCHA ความล่าช้า และเทคนิคการป้องกันบอทอื่นๆ
  • เพิ่มจำนวนการเชื่อมต่อ HTTP สูงสุด กำหนดค่าการแคชคำขอโดยใช้ nginx
  • ขยาย ปริมาณงานช่องทางเครือข่าย
  • หากเป็นไปได้ ให้จัดสรรเซิร์ฟเวอร์แยกต่างหากเพื่อจัดการการเข้ารหัส (หากใช้)
  • สร้างช่องทางสำรองสำหรับการเข้าถึงเซิร์ฟเวอร์ของผู้ดูแลระบบในสถานการณ์ฉุกเฉิน

ทรัพยากรฮาร์ดแวร์โอเวอร์โหลด

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

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


วิธีป้องกันตนเองจากการโอเวอร์โหลดทรัพยากรฮาร์ดแวร์

  • เพิ่มประสิทธิภาพฮาร์ดแวร์และพื้นที่ดิสก์ เมื่อเซิร์ฟเวอร์ทำงานตามปกติ ทรัพยากรอย่างน้อย 25-30% ควรยังคงว่าง
  • ใช้ระบบวิเคราะห์และกรองการรับส่งข้อมูลก่อนที่จะส่งไปยังเซิร์ฟเวอร์
  • จำกัดการใช้ทรัพยากรฮาร์ดแวร์ตามส่วนประกอบของระบบ (กำหนดโควต้า)
  • จัดเก็บไฟล์บันทึกของเซิร์ฟเวอร์ไว้ในไดรฟ์แยกต่างหาก
  • กระจายทรัพยากรไปยังเซิร์ฟเวอร์ต่างๆ โดยไม่แยกจากกัน ดังนั้นหากส่วนหนึ่งล้มเหลว ส่วนอื่นๆ ก็ยังคงใช้งานได้

ช่องโหว่ในระบบปฏิบัติการ ซอฟต์แวร์ เฟิร์มแวร์ของอุปกรณ์

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

หลังจากที่แฮกเกอร์ค้นพบช่องโหว่ (ข้อผิดพลาดใน ซอฟต์แวร์ซึ่งสามารถใช้เพื่อขัดขวางการทำงานของระบบ) เขาจะต้องสร้างและเรียกใช้ช่องโหว่เท่านั้น - โปรแกรมที่ใช้ประโยชน์จากช่องโหว่นี้

การใช้ประโยชน์จากจุดอ่อนไม่ได้มีจุดมุ่งหมายเพื่อทำให้เกิดการปฏิเสธการให้บริการเสมอไป หากแฮ็กเกอร์โชคดี เขาจะสามารถควบคุมทรัพยากรและใช้ "ของขวัญแห่งโชคชะตา" นี้ได้ตามดุลยพินิจของเขาเอง เช่น ใช้เพื่อจำหน่าย มัลแวร์, ขโมยและทำลายข้อมูล ฯลฯ

วิธีการตอบโต้การใช้ประโยชน์จากช่องโหว่ของซอฟต์แวร์

  • ติดตั้งการอัปเดตที่ครอบคลุมช่องโหว่ของระบบปฏิบัติการและแอปพลิเคชันทันเวลา
  • แยกบริการทั้งหมดที่มีไว้เพื่อแก้ไขปัญหาด้านการดูแลระบบจากการเข้าถึงของบุคคลที่สาม
  • ใช้วิธีการตรวจสอบการทำงานของระบบปฏิบัติการเซิร์ฟเวอร์และโปรแกรมอย่างต่อเนื่อง (การวิเคราะห์พฤติกรรม ฯลฯ )
  • ปฏิเสธโปรแกรมที่อาจมีความเสี่ยง (ฟรี เขียนเอง ไม่ค่อยอัปเดต) หันไปใช้โปรแกรมที่ได้รับการพิสูจน์แล้วและได้รับการป้องกันอย่างดี
  • ใช้วิธีการสำเร็จรูปในการปกป้องระบบจากการโจมตี DoS และ DDoS ซึ่งมีอยู่ทั้งในรูปแบบของระบบฮาร์ดแวร์และซอฟต์แวร์

จะทราบได้อย่างไรว่าทรัพยากรถูกโจมตีโดยแฮกเกอร์

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

  • พฤติกรรมที่ผิดปกติของแอปพลิเคชันเซิร์ฟเวอร์หรือ ระบบปฏิบัติการ(ค้าง ปิดเครื่องโดยมีข้อผิดพลาด ฯลฯ)
  • โหลดของโปรเซสเซอร์ RAM และพื้นที่เก็บข้อมูลเพิ่มขึ้นอย่างรวดเร็วเมื่อเทียบกับระดับเดิม
  • ปริมาณการรับส่งข้อมูลบนพอร์ตตั้งแต่หนึ่งพอร์ตขึ้นไปเพิ่มขึ้นอย่างมาก
  • มีคำขอหลายรายการจากไคลเอนต์ไปยังแหล่งข้อมูลเดียวกัน (เปิดหน้าเว็บไซต์เดียวกัน ดาวน์โหลดไฟล์เดียวกัน)
  • การวิเคราะห์บันทึกเซิร์ฟเวอร์ ไฟร์วอลล์ และอุปกรณ์เครือข่ายจะแสดงคำขอที่ซ้ำซากจำเจจำนวนมากจากที่อยู่ต่างๆ ซึ่งมักจะส่งไปยังพอร์ตหรือบริการเฉพาะ โดยเฉพาะอย่างยิ่งหากไซต์นั้นกำหนดเป้าหมายไปที่ผู้ชมกลุ่มแคบ (เช่น ผู้ที่พูดภาษารัสเซีย) และมีคำขอมาจากทั่วทุกมุมโลก การวิเคราะห์ปริมาณการใช้งานเชิงคุณภาพแสดงให้เห็นว่าคำขอไม่มีความหมายในทางปฏิบัติสำหรับลูกค้า

ทั้งหมดข้างต้นไม่ใช่สัญญาณของการโจมตี 100% แต่เป็นเหตุผลที่ควรใส่ใจกับปัญหาและใช้มาตรการป้องกันที่เหมาะสมเสมอ

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


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

ฉันสงสัยว่าปลั๊กอินอาจเป็นปัญหาเช่นกัน การสำรองข้อมูล WordPress ไปยัง Dropboxซึ่งสำรองข้อมูลไซต์ของคุณไปที่ DropBox โดยทั่วไปปลั๊กอินมีประโยชน์ แต่ฉันไม่ต้องการมันอีกต่อไปแล้ว เนื่องจากฉันทำการสำรองข้อมูลเซิร์ฟเวอร์ทั้งหมดอยู่ตลอดเวลา หากคุณมีโฮสติ้งธรรมดา ฉันแนะนำให้ติดตั้งมัน

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

การโจมตี DDoS คืออะไร?

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

ตัวอย่างเช่น ร้านค้าออนไลน์ธรรมดาๆ อาจมีราคาแพงมาก และผู้แข่งขันพยายามเคลียร์สถานที่กลางแดดด้วยวิธีที่ไม่ซื่อสัตย์ หรือแฮกเกอร์เพียงแค่ปิดการใช้งานเซิร์ฟเวอร์ด้วยวิธีนี้ ดังนั้น ในขณะนี้ . หรืออาจจะเป็นแค่เด็กนักเรียนเล่นๆ ทดสอบโปรแกรมสำหรับ ddos ​​​​ :)

ในบทความนี้ ฉันต้องการพูดคุยเกี่ยวกับวิธีป้องกันเซิร์ฟเวอร์จากการโจมตี DDoS (แน่นอนว่าไม่ใช่การโจมตีที่ใหญ่โตมาก แต่ยังคง) จะทำทั้งหมดนี้ให้สำเร็จได้อย่างไร?

จะป้องกันเซิร์ฟเวอร์จากการโจมตี DDOS ได้อย่างไร?

ทุกอย่างทำได้ในระดับเว็บเซิร์ฟเวอร์ Apache โดยการติดตั้งโมดูลเพิ่มเติม เชื่อมต่อกับเซิร์ฟเวอร์ผ่าน SSH และติดตั้งโมดูล:

Sudo apt-get ติดตั้ง libapache2-mod-evasive

ติดตั้งโมดูลแล้ว ตอนนี้คุณต้องสร้างไฟล์ mod-evasive.confในโฟลเดอร์ /etc/apache2/mods-available/และป้อนรหัสต่อไปนี้ลงไป:

DOSHashTableSize 4096 DOSPageCount 5 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10

ที่นี่คุณสามารถตั้งค่าพารามิเตอร์ตามดุลยพินิจของคุณได้ และนี่คือความหมาย:

DOSHashTableSize: นี่คือขนาดของตารางแฮชที่ประมวลผลคำขอไปยังเซิร์ฟเวอร์ WWW

DOSPageCount: จำนวนคำขอไปยังเพจเดียวกันจาก IP เดียวกันในช่วงเวลาที่กำหนด

ดอสไซต์นับ: จำนวนคำขอไปยังทุกหน้าของโดเมน หากได้รับคำขอมากกว่า 50 รายการจาก IP หนึ่งไปยังหน้าต่างๆ ของโดเมน IP ดังกล่าวจะถูกบล็อก

DOSPageInterval: ช่วงเวลาสำหรับคำสั่ง DOSPageCount (เป็นวินาที)

DOSsiteInterval: ช่วงเวลาสำหรับคำสั่ง DOSSiteCount (เป็นวินาที)

DOSBlockingPeriod: ระยะเวลาในการบล็อก IP (เป็นวินาที)

DOSEmailแจ้งเตือน: ใช้แจ้งได้ จะส่งข้อความทาง อีเมล IP ดังกล่าวและดังกล่าวถูกบล็อก คำสั่งระบบ DOS: คำสั่งนี้ใช้เพื่อรันคำสั่งบางคำสั่งของคุณเมื่อ IP ถูกบล็อก

ดอสไวท์ลิสต์: รายการที่อยู่ IP สีขาว รวมถึงมาสก์ด้วย (เช่น 127.0.0.*)

หลังจากนี้ ให้รีสตาร์ทเซิร์ฟเวอร์ apache:

บริการ Sudo apache2 รีสตาร์ท

ตอนนี้คุณสามารถตรวจสอบการทำงานของโมดูลได้โดยพยายามจัดการโจมตีแบบ mini ddos ​​จากคอมพิวเตอร์ของคุณ คุณมี Linux บนคอมพิวเตอร์ใช่ไหม? ถ้าอย่างนั้นก็แค่เรียกใช้จากแฟลชไดรฟ์ :) อ่านวิธีติดตั้ง Linux บนแฟลชไดรฟ์

การโจมตี DDOS แบบ DIY อย่างง่าย

สร้างไฟล์ประเภท ดีดอส.plในโฟลเดอร์บ้านของคุณและป้อนรหัสต่อไปนี้:

#!/usr/bin/perl # test.pl: สคริปต์ขนาดเล็กเพื่อทดสอบประสิทธิภาพของ mod_dosevasive"s ใช้ IO::Socket; use strict; for(0..100) ( my($response); my($SOCKET) = ใหม่ IO::Socket::INET(Proto => "tcp", PeerAddr=> "saitowed.ru:80"); if (! กำหนด $SOCKET) ( die $!; ) พิมพ์ $SOCKET "GET /?$_ HTTP/1.0nn"; $ตอบกลับ =<$SOCKET>- พิมพ์ $ ตอบกลับ; ปิด($ซ็อกเก็ต); -

ตอนนี้เราทำให้ไฟล์ปฏิบัติการได้:

Chmod 777 ddos.pl

ในโค้ดของไฟล์นี้ฉันได้รวมบล็อกที่คุ้นเคยไว้ - saitowed.ru เพื่อทดสอบสคริปต์ เราเปิดใช้งานด้วยคำสั่ง:

./ddos.pl

เราเห็นอะไร?

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

การต่อสู้กับการโจมตี DDoS ไม่ใช่แค่งานยากเท่านั้น แต่ยังน่าตื่นเต้นอีกด้วย ไม่น่าแปลกใจเลยที่ผู้ดูแลระบบทุกคนพยายามจัดระเบียบการป้องกันด้วยตัวเองก่อนอื่น โดยเฉพาะอย่างยิ่งเมื่อยังเป็นไปได้

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

ส่วนผสมที่เหมาะสม

ความจริงอันโหดร้ายก็คือใครๆ ก็สามารถทำลายไซต์จำนวนมากได้โดยใช้การโจมตีของ Slowloris ซึ่งสังหาร Apache โดยสิ้นเชิง หรือโดยการจัดการที่เรียกว่า SYN Flood โดยใช้ฟาร์ม เซิร์ฟเวอร์เสมือนสร้างขึ้นในหนึ่งนาทีในระบบคลาวด์ Amazon EC2 คำแนะนำเพิ่มเติมทั้งหมดของเราเกี่ยวกับการป้องกัน DDoS ที่ต้องทำด้วยตัวเองนั้นขึ้นอยู่กับเงื่อนไขที่สำคัญดังต่อไปนี้

1. หยุดใช้ Windows Server

แนวทางปฏิบัติแนะนำว่าไซต์ที่ทำงานบน Windows (ปี 2003 หรือ 2008 - ไม่สำคัญ) จะถึงวาระในกรณีของ DDoS สาเหตุของความล้มเหลวนั้นอยู่ที่สแต็กเครือข่าย Windows: เมื่อมีการเชื่อมต่อมากเกินไป เซิร์ฟเวอร์จะเริ่มตอบสนองได้ไม่ดีอย่างแน่นอน เราไม่รู้ว่าทำไม วินโดวส์เซิร์ฟเวอร์ในสถานการณ์เช่นนี้มันดูน่าขยะแขยงมาก แต่เราพบสิ่งนี้มากกว่าหนึ่งครั้งหรือสองครั้ง ด้วยเหตุนี้ บทความนี้จะเน้นไปที่วิธีการป้องกันการโจมตี DDoS เมื่อเซิร์ฟเวอร์ทำงานบน Linux หากคุณเป็นเจ้าของเคอร์เนลที่ค่อนข้างทันสมัย ​​(เริ่มจาก 2.6) ผู้โชคดี เครื่องมือหลักจะเป็นยูทิลิตี้ iptables และ ipset (สำหรับการเพิ่มที่อยู่ IP อย่างรวดเร็ว) ซึ่งคุณสามารถแบนบอทได้อย่างรวดเร็ว กุญแจสู่ความสำเร็จอีกประการหนึ่งคือสแต็กเครือข่ายที่เตรียมไว้อย่างเหมาะสม ซึ่งเราจะพูดถึงในภายหลัง

2. เลิกกับอาปาเช่

เงื่อนไขสำคัญประการที่สองคือการละทิ้ง Apache หากคุณใช้ Apache อย่างน้อยก็ติดตั้งพร็อกซีแคชไว้ข้างหน้า - nginx หรือ lighttpd Apache นั้นให้บริการไฟล์ได้ยากมาก และที่แย่กว่านั้นคือมันอยู่ในระดับพื้นฐาน (นั่นคือ แก้ไขไม่ได้) ซึ่งเสี่ยงต่อการโจมตี Slowloris ที่อันตรายที่สุด ซึ่งช่วยให้คุณทำให้เซิร์ฟเวอร์เสียหายได้เกือบ โทรศัพท์มือถือ- เพื่อต่อสู้ ประเภทต่างๆผู้ใช้ Slowloris Apache มาพร้อมกับแพตช์ Anti-slowloris.diff ก่อน จากนั้นจึง mod_noloris จากนั้น mod_antiloris, mod_limitipconn, mod_reqtimeout... แต่ถ้าคุณต้องการนอนหลับอย่างสงบสุขในเวลากลางคืน มันจะง่ายกว่าที่จะใช้เซิร์ฟเวอร์ HTTP ที่จะคงกระพันกับ Slowloris ที่ ระดับสถาปัตยกรรมโค้ด ดังนั้นสูตรเพิ่มเติมทั้งหมดของเราจึงอิงตามสมมติฐานว่ามีการใช้ nginx ในส่วนหน้า

การต่อสู้กับ DDoS

จะทำอย่างไรถ้า DDoS มาถึง? เทคนิคการป้องกันตัวเองแบบดั้งเดิมคือการอ่านไฟล์บันทึกของเซิร์ฟเวอร์ HTTP เขียนรูปแบบ grep (จับคำขอของบอท) และแบนทุกคนที่ตกอยู่ภายใต้รูปแบบนั้น เทคนิคนี้จะได้ผล...ถ้าคุณโชคดี บอตเน็ตมีอยู่สองประเภท ทั้งคู่เป็นอันตราย แต่ในรูปแบบที่แตกต่างกัน คนหนึ่งมาที่ไซต์ทันทีโดยสมบูรณ์ ส่วนอีกคนก็ค่อยๆ เข้ามา อันแรกจะฆ่าทุกอย่างในคราวเดียว แต่สิ่งทั้งหมดนั้นปรากฏในบันทึก และหากคุณอุ่นเครื่องและแบนที่อยู่ IP ทั้งหมด แสดงว่าคุณเป็นผู้ชนะ บ็อตเน็ตตัวที่สองโจมตีไซต์อย่างนุ่มนวลและระมัดระวัง แต่คุณอาจต้องแบนเป็นเวลา 24 ชั่วโมง เป็นสิ่งสำคัญที่ผู้ดูแลระบบจะต้องเข้าใจ: หากคุณวางแผนที่จะต่อสู้กับ grep คุณจะต้องเตรียมพร้อมที่จะสละเวลาสองสามวันเพื่อต่อสู้กับการโจมตี ต่อไปนี้เป็นคำแนะนำเกี่ยวกับตำแหน่งที่คุณสามารถวางหลอดไว้ล่วงหน้าเพื่อให้การล้มเจ็บปวดน้อยลง

3. ใช้โมดูล testcookie

บางทีสูตรที่สำคัญที่สุดมีประสิทธิภาพและประสิทธิผลในบทความนี้ หาก DDoS มายังไซต์ของคุณ วิธีที่มีประสิทธิภาพที่สุดในการต่อสู้กลับคือโมดูล testcookie-nginx ซึ่งพัฒนาโดย habrauser @kyprizel ความคิดนั้นง่าย โดยส่วนใหญ่ บอทที่ใช้ HTTP Flooding ค่อนข้างโง่และไม่มีคุกกี้ HTTP และกลไกการเปลี่ยนเส้นทาง บางครั้งคุณเจออันที่ล้ำหน้ากว่านี้ - พวกเขาสามารถใช้คุกกี้และกระบวนการเปลี่ยนเส้นทางได้ แต่แทบไม่เคยบอต DoS ใดที่มีเอ็นจิ้น JavaScript ที่มีคุณสมบัติครบถ้วน (แม้ว่าสิ่งนี้จะมีมากขึ้นเรื่อย ๆ ก็ตาม) Testcookie-nginx ทำงานเป็นตัวกรองที่รวดเร็วระหว่างบอทและแบ็กเอนด์ระหว่างการโจมตี L7 DDoS ช่วยให้คุณสามารถกรองคำขอขยะออกได้ เช็คเหล่านี้รวมอะไรบ้าง? ลูกค้าทราบวิธีการเปลี่ยนเส้นทาง HTTP หรือไม่ รองรับ JavaScript หรือไม่ เป็นเบราว์เซอร์ที่อ้างว่าเป็นหรือไม่ (เนื่องจาก JavaScript นั้นแตกต่างกันทุกที่ และหากลูกค้าบอกว่าเป็น Firefox เราก็สามารถตรวจสอบสิ่งนี้ได้) การตรวจสอบจะดำเนินการโดยใช้คุกกี้โดยใช้วิธีการต่างๆ:

  • “Set-Cookie” + เปลี่ยนเส้นทางโดยใช้ตำแหน่ง HTTP 301;
  • “ Set-Cookie” + เปลี่ยนเส้นทางโดยใช้การรีเฟรชเมตา HTML;
  • เทมเพลตใดก็ได้ และคุณสามารถใช้ JavaScript ได้

เพื่อหลีกเลี่ยงการแยกวิเคราะห์อัตโนมัติ คุกกี้การตรวจสอบความถูกต้องสามารถเข้ารหัสด้วย AES-128 และถอดรหัสในภายหลังบนฝั่งไคลเอ็นต์ JavaScript ใน เวอร์ชันใหม่โมดูล เป็นไปได้ที่จะตั้งค่าคุกกี้ผ่าน Flash ซึ่งช่วยให้คุณสามารถกำจัดบอทได้อย่างมีประสิทธิภาพ (ซึ่งตามกฎแล้ว Flash ไม่รองรับ) แต่ยังบล็อกการเข้าถึงสำหรับผู้ใช้ที่ถูกกฎหมายจำนวนมาก (อันที่จริงมือถือทั้งหมด อุปกรณ์) เป็นที่น่าสังเกตว่าการเริ่มใช้ testcookie-nginx นั้นง่ายมาก โดยเฉพาะอย่างยิ่งนักพัฒนาได้จัดเตรียมตัวอย่างการใช้งานที่ชัดเจนหลายตัวอย่าง (สำหรับกรณีการโจมตีที่แตกต่างกัน) พร้อมตัวอย่างการกำหนดค่าสำหรับ nginx

นอกจากข้อดีแล้ว testcookie ยังมีข้อเสีย:

  • ตัดบอททั้งหมด รวมถึง Googlebot ด้วย หากคุณวางแผนที่จะเก็บ testcookie ไว้เป็นการถาวร ตรวจสอบให้แน่ใจว่าคุณจะไม่หายไปจากผลการค้นหา
  • สร้างปัญหาให้กับผู้ใช้ที่มีลิงก์, w3m และเบราว์เซอร์ที่คล้ายกัน
  • ไม่ได้ป้องกันบอทที่ติดตั้งเอ็นจิ้นเบราว์เซอร์ที่มีคุณสมบัติครบถ้วนพร้อม JavaScript

กล่าวโดยสรุป testcookie_module ไม่เป็นสากล แต่มันช่วยได้หลายอย่าง เช่น เครื่องมือพื้นฐานใน Java และ C# ด้วยวิธีนี้ คุณจะตัดส่วนหนึ่งของภัยคุกคามออกไป

4. รหัส 444

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

ตำแหน่ง /การค้นหา ( กลับ 444; )

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

Ipset -N ห้าม iphash tail -f access.log | ขณะอ่าน LINE; ทำเสียงสะท้อน "$LINE" | \ cut -d""" -f3 | cut -d" " -f2 | grep -q 444 && ipset -A ห้าม "$(L%% *)"; เสร็จแล้ว

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

5. เราแบนตามตำแหน่งทางภูมิศาสตร์

รหัสตอบกลับที่ไม่เป็นมาตรฐาน 444 ยังมีประโยชน์สำหรับการแบนไคลเอนต์อย่างรวดเร็วตามลักษณะทางภูมิศาสตร์ คุณสามารถจำกัดบางประเทศที่ทำให้คุณรู้สึกไม่สบายใจอย่างเคร่งครัด ตัวอย่างเช่น ไม่น่าเป็นไปได้ที่ร้านขายกล้องออนไลน์จาก Rostov-on-Don จะมีผู้ใช้จำนวนมากในอียิปต์ มันไม่มาก วิธีที่ดี(พูดตรงๆ น่าขยะแขยง) เนื่องจากข้อมูล GeoIP ไม่ถูกต้อง และบางครั้ง Rostovites ก็บินไปอียิปต์ในช่วงพักร้อน แต่ถ้าคุณไม่มีอะไรจะเสีย ให้ทำตามคำแนะนำ:

  1. เชื่อมต่อโมดูล GeoIP กับ nginx (wiki.nginx.org/HttpGeoipModule)
  2. แสดงข้อมูลการอ้างอิงทางภูมิศาสตร์ในบันทึกการเข้าถึง
  3. ถัดไป โดยการแก้ไขเชลล์สคริปต์ข้างต้น ให้เรียกใช้ accesslog ของ nginx และเพิ่มไคลเอนต์ที่ยกเว้นทางภูมิศาสตร์ในการแบน

ตัวอย่างเช่น หากบอทส่วนใหญ่มาจากประเทศจีน สิ่งนี้อาจช่วยได้

6. โครงข่ายประสาทเทียม (PoC)

ในที่สุดคุณสามารถทำซ้ำประสบการณ์ของผู้ใช้ habra @SaveTheRbtz ซึ่งใช้เครือข่ายประสาทเทียม PyBrain ยัดบันทึกลงไปและวิเคราะห์ข้อความค้นหา (habrahabr.ru/post/136237) วิธีนี้ใช้ได้ผลแม้ว่าจะไม่ใช่สากลก็ตาม :) แต่ถ้าคุณรู้ข้อมูลภายในไซต์ของคุณจริงๆ และรู้ได้อย่างไร ผู้ดูแลระบบควร จากนั้นคุณมีโอกาสที่ในสถานการณ์ที่น่าเศร้าที่สุดเช่นชุดเครื่องมือที่ใช้โครงข่ายประสาทเทียม การฝึกอบรมและข้อมูลที่รวบรวมล่วงหน้าจะช่วยคุณได้ ในกรณีนี้ จะมีประโยชน์มากที่จะมี access.log ก่อนเริ่ม DDoS เนื่องจากอธิบายลูกค้าที่ถูกต้องตามกฎหมายเกือบ 100% ดังนั้นจึงเป็นชุดข้อมูลที่ยอดเยี่ยมสำหรับการฝึกอบรมโครงข่ายประสาทเทียม ยิ่งไปกว่านั้น บอทจะไม่ปรากฏในบันทึกเสมอไป .

การวินิจฉัยปัญหา

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

7. ใช้โปรไฟล์และดีบักเกอร์

สำหรับแพลตฟอร์มการสร้างเว็บไซต์ที่พบบ่อยที่สุด - PHP + MySQL - คอขวดสามารถพบได้โดยใช้เครื่องมือต่อไปนี้:

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

หากไซต์ล่มและคุณไม่สูญเสียสิ่งใดเลย ให้ตัดการเชื่อมต่อจากเครือข่าย ดูบันทึก แล้วลองเล่นดู หากไม่มี ให้อ่านหน้าต่างๆ และดูที่ฐาน

ตัวอย่างนี้ใช้สำหรับ PHP แต่แนวคิดนี้ใช้ได้กับทุกแพลตฟอร์ม นักพัฒนาที่เขียนผลิตภัณฑ์ซอฟต์แวร์ในภาษาการเขียนโปรแกรมใดๆ จะต้องสามารถใช้ทั้งดีบักเกอร์และตัวสร้างโปรไฟล์ได้อย่างรวดเร็ว ฝึกฝนล่วงหน้า!

8. วิเคราะห์ข้อผิดพลาด

วิเคราะห์ปริมาณการรับส่งข้อมูล เวลาตอบสนองของเซิร์ฟเวอร์ และจำนวนข้อผิดพลาด เมื่อต้องการทำเช่นนี้ ให้ดูที่บันทึก ใน nginx เวลาตอบสนองของเซิร์ฟเวอร์จะถูกบันทึกในบันทึกโดยตัวแปรสองตัว: request_time และ upstream_response_time ประการแรกคือเวลาดำเนินการคำขอทั้งหมด รวมถึงความล่าช้าของเครือข่ายระหว่างผู้ใช้และเซิร์ฟเวอร์ ส่วนที่สองจะบอกระยะเวลาที่แบ็กเอนด์ (Apache, php_fpm, uwsgi...) ดำเนินการตามคำขอ ค่า upstream_response_time มีความสำคัญอย่างยิ่งสำหรับไซต์ที่มีเนื้อหาแบบไดนามิกจำนวนมากและ การสื่อสารที่ใช้งานอยู่ส่วนหน้าด้วยฐานข้อมูลก็ไม่สามารถละเลยได้ คุณสามารถใช้การกำหนดค่าต่อไปนี้เป็นรูปแบบบันทึก:

Log_format xakep_log "$remote_addr - $remote_user [$time_local] " ""$request" $status $body_bytes_sent " ""$http_referer" "$http_user_agent" $request_time \ $upstream_response_time";

นี่คือรูปแบบรวมที่มีช่องกำหนดเวลาเพิ่มเติม

9. ติดตามคำขอต่อวินาที

ดูจำนวนคำขอต่อวินาทีด้วย ในกรณีของ nginx คุณสามารถประมาณค่านี้โดยประมาณด้วยคำสั่งเชลล์ต่อไปนี้ (ตัวแปร ACCESS_LOG มีเส้นทางไปยังบันทึกคำขอ nginx ในรูปแบบรวม):

เสียงสะท้อน $(($(fgrep -c "$(env LC_ALL=C date --date=@$(($(date \ +%s)-60)) +%d/%b/%Y:%H: %M)" "$ACCESS_LOG")/60))

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

10. อย่าลืมเกี่ยวกับ tcpdump

หลายๆ คนลืมไปว่า tcpdump เป็นเครื่องมือวินิจฉัยที่ยอดเยี่ยม ฉันจะยกตัวอย่างให้คุณสองสามตัวอย่าง ในเดือนธันวาคม 2554 มีการค้นพบจุดบกพร่องในเคอร์เนล Linux เมื่อเปิดการเชื่อมต่อ TCP เมื่อตั้งค่าแฟล็ก TCP SYN และ RST รายงานข้อผิดพลาดฉบับแรกถูกส่งโดยผู้ดูแลระบบจากรัสเซียซึ่งทรัพยากรถูกโจมตีด้วยวิธีนี้ - ผู้โจมตีได้เรียนรู้เกี่ยวกับช่องโหว่ต่อหน้าคนทั้งโลก เห็นได้ชัดว่าการวินิจฉัยนี้ช่วยเขาได้ อีกตัวอย่างหนึ่ง: nginx มีคุณสมบัติที่ไม่น่าพอใจอย่างหนึ่ง - จะเขียนลงในบันทึกหลังจากประมวลผลคำขอเสร็จสมบูรณ์แล้วเท่านั้น มีบางสถานการณ์ที่ไซต์ล่ม ไม่มีอะไรทำงาน และไม่มีสิ่งใดในบันทึก ทั้งนี้ก็เพราะว่าการร้องขอทั้งหมดนั้น ในขณะนี้กำลังโหลดเซิร์ฟเวอร์ ยังไม่เสร็จสิ้น Tcpdump จะช่วยที่นี่ด้วย

เป็นเรื่องดีที่ฉันแนะนำผู้คนไม่ให้ใช้โปรโตคอลไบนารี่จนกว่าพวกเขาจะแน่ใจว่าทุกอย่างเป็นไปตามลำดับ - ท้ายที่สุดแล้วโปรโตคอลข้อความนั้นง่ายต่อการแก้ไขด้วย tcpdump แต่โปรโตคอลไบนารี่นั้นไม่ใช่วิธีการวินิจฉัยที่ดี เครื่องมือ - เป็นวิธีการรักษาการผลิต" และเขาก็น่ากลัว มันสามารถสูญเสียแพ็กเก็ตหลาย ๆ อันได้อย่างง่ายดายและทำลายประวัติผู้ใช้ของคุณ การดูผลลัพธ์ของมันนั้นสะดวก และมีประโยชน์สำหรับการวินิจฉัยและการแบนด้วยตนเอง แต่พยายามอย่ายึดสิ่งที่สำคัญไว้เป็นหลัก เครื่องมือยอดนิยมอีกอย่างหนึ่งสำหรับ "การฝังคำขอ" - ngrep - โดยทั่วไปโดยค่าเริ่มต้นจะพยายามขอหน่วยความจำที่ไม่สามารถถอดเปลี่ยนได้ประมาณสองกิกะไบต์ จากนั้นจึงเริ่มลดข้อกำหนดลง

11. โจมตีหรือไม่?

จะแยกการโจมตี DDoS ออกจากผลกระทบของแคมเปญโฆษณาได้อย่างไร คำถามนี้อาจดูตลก แต่หัวข้อก็ไม่ซับซ้อนไม่น้อย มีกรณีที่ตลกมาก ผู้ชายดีๆ บางคนเมื่อพวกเขาเครียดและทำให้แคชเสียหาย เว็บไซต์ก็ล่มไปสองสามวัน ปรากฎว่าเป็นเวลาหลายเดือนที่ไซต์นี้ถูกชาวเยอรมันบางคนขุดข้อมูลอย่างเงียบ ๆ และก่อนที่จะเพิ่มประสิทธิภาพแคช หน้าไซต์ของชาวเยอรมันเหล่านี้พร้อมรูปภาพทั้งหมดใช้เวลาโหลดค่อนข้างนาน เมื่อเพจเริ่มให้บริการจากแคชทันที บอทซึ่งไม่มีการหมดเวลาใด ๆ ก็เริ่มรวบรวมพวกมันทันที มันเป็นเรื่องยาก กรณีนี้ยากเป็นพิเศษเนื่องจากหากคุณเปลี่ยนการตั้งค่า (เปิดแคช) และไซต์หยุดทำงานหลังจากนั้น แล้วใครในความเห็นของคุณและเจ้านายของคุณที่จะถูกตำหนิ? แค่นั้นแหละ. หากคุณเห็นจำนวนคำขอเพิ่มขึ้นอย่างมาก ให้ลองดูเช่น Google Analyticsใครมาหน้าไหน..

การปรับแต่งเว็บเซิร์ฟเวอร์

มีอันไหนอีกบ้างคะ? ประเด็นสำคัญ- แน่นอนคุณสามารถติดตั้ง nginx เริ่มต้นได้และหวังว่าทุกอย่างจะเรียบร้อยดี อย่างไรก็ตาม สิ่งต่าง ๆ ไม่ได้เป็นไปด้วยดีเสมอไป ดังนั้นผู้ดูแลระบบเซิร์ฟเวอร์ใด ๆ จะต้องทุ่มเทเวลาอย่างมากในการปรับแต่งและปรับแต่ง nginx

12. จำกัดทรัพยากร (ขนาดบัฟเฟอร์) ใน nginx

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

  • ลูกค้า_ส่วนหัว_บัฟเฟอร์_ขนาด_ _ ตั้งค่าขนาดบัฟเฟอร์สำหรับการอ่านส่วนหัวคำขอของไคลเอ็นต์ หากบรรทัดคำขอหรือฟิลด์ส่วนหัวคำขอไม่พอดีกับบัฟเฟอร์นี้ทั้งหมด บัฟเฟอร์ที่มีขนาดใหญ่กว่าจะถูกจัดสรร ซึ่งระบุโดยคำสั่ง large_client_header_buffers
  • large_client_header_buffersตั้งค่าจำนวนและขนาดสูงสุดของบัฟเฟอร์สำหรับการอ่านส่วนหัวคำขอของไคลเอ็นต์ขนาดใหญ่
  • ลูกค้า_body_buffer_sizeตั้งค่าขนาดบัฟเฟอร์สำหรับการอ่านเนื้อหาคำขอของไคลเอ็นต์ หากเนื้อหาของคำขอมีขนาดใหญ่กว่าบัฟเฟอร์ที่ระบุ เนื้อหาคำขอทั้งหมดหรือเพียงบางส่วนเท่านั้นจะถูกเขียนลงในไฟล์ชั่วคราว
  • ลูกค้า_max_body_sizeตั้งค่าขนาดเนื้อหาคำขอไคลเอ็นต์สูงสุดที่อนุญาต ซึ่งระบุในฟิลด์ "Content-Length" ของส่วนหัวคำขอ หากขนาดใหญ่กว่าขนาดที่ระบุ ข้อผิดพลาด 413 (เอนทิตีคำขอมีขนาดใหญ่เกินไป) จะถูกส่งกลับไปยังไคลเอ็นต์

13. การตั้งค่าการหมดเวลาใน nginx

เวลายังเป็นทรัพยากร ดังนั้นขั้นตอนสำคัญถัดไปควรตั้งค่าการหมดเวลาทั้งหมด ซึ่งมีความสำคัญอย่างยิ่งอีกครั้งที่จะต้องระบุอย่างระมัดระวังในการตั้งค่า nginx

  • รีเซ็ต_หมดเวลา_การเชื่อมต่อเปิด;ช่วยจัดการกับซอคเก็ตที่ติดอยู่ในระยะ FIN-WAIT
  • client_header_timeoutตั้งค่าการหมดเวลาเมื่ออ่านส่วนหัวคำขอของไคลเอ็นต์
  • client_body_timeoutตั้งค่าการหมดเวลาเมื่ออ่านเนื้อความของคำขอไคลเอ็นต์
  • Keepalive_timeoutตั้งค่าการหมดเวลาระหว่างที่การเชื่อมต่อแบบ Keep-alive กับไคลเอ็นต์จะไม่ถูกปิดจากฝั่งเซิร์ฟเวอร์ หลายคนกลัวที่จะกำหนดค่านิยมขนาดใหญ่ที่นี่ แต่เราไม่แน่ใจว่าความกลัวนี้เป็นสิ่งที่สมเหตุสมผล หรือคุณสามารถตั้งค่าการหมดเวลาในส่วนหัว Keep-Alive HTTP ได้ อินเทอร์เน็ตเอ็กซ์พลอเรอร์มีชื่อเสียงจากการละเลยความหมายนี้
  • send_timeoutตั้งค่าการหมดเวลาเมื่อส่งการตอบกลับไปยังไคลเอนต์ หากหลังจากเวลานี้ไคลเอนต์ไม่ยอมรับสิ่งใด ๆ การเชื่อมต่อจะถูกปิด

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

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

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

14. จำกัดการเชื่อมต่อใน nginx (limit_conn และ Limit_req)

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

สมมติว่าไซต์มีส่วนที่มีชื่อที่สื่อความหมาย /download และ /search ในเวลาเดียวกันเรา:

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

เพื่อวัตถุประสงค์เหล่านี้ การกำหนดค่าต่อไปนี้จะทำงาน:

Http ( Limit_conn_zone $binary_remote_addr Zone=download_c:10m; Limit_req_zone $binary_remote_addr Zone=search_r:10m \ Rate=1r/s; เซิร์ฟเวอร์ ( ตำแหน่ง /download/ ( Limit_conn download_c 1; # ตำแหน่งการกำหนดค่าอื่น ๆ ) ตำแหน่ง /ค้นหา/ ( Limit_req Zone= search_r burst=5; # ตำแหน่งการกำหนดค่าอื่นๆ ) ) )

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

สังเกตพารามิเตอร์ 10m ในตัวอย่าง หมายความว่าพจนานุกรมที่มีบัฟเฟอร์ 10 เมกะไบต์และไม่เกินเมกะไบต์จะได้รับการจัดสรรเพื่อคำนวณขีดจำกัดนี้ ในการกำหนดค่านี้ จะช่วยให้สามารถตรวจสอบเซสชัน TCP ได้ 320,000 รายการ เพื่อเพิ่มประสิทธิภาพพื้นที่หน่วยความจำ ตัวแปร $binary_remote_addr จะถูกใช้เป็นคีย์ในพจนานุกรม ซึ่งมีที่อยู่ IP ของผู้ใช้ในรูปแบบไบนารี่ และใช้หน่วยความจำน้อยกว่าตัวแปรสตริง $remote_addr ปกติ ควรสังเกตว่าพารามิเตอร์ตัวที่สองของคำสั่ง Limit_req_zone ไม่เพียงแต่เป็น IP เท่านั้น แต่ยังรวมถึงตัวแปร nginx อื่น ๆ ที่มีอยู่ในบริบทนี้ด้วย - ตัวอย่างเช่นในกรณีที่คุณไม่ต้องการจัดเตรียมโหมดที่นุ่มนวลกว่านี้สำหรับพร็อกซี คุณสามารถใช้ $binary_remote_addr$http_user_agent หรือ $binary_remote_addr$http_cookie_myc00kiez ได้ แต่คุณจำเป็นต้องใช้โครงสร้างดังกล่าวด้วยความระมัดระวัง เนื่องจากตัวแปรเหล่านี้แตกต่างจาก $binary_remote_addr แบบ 32 บิตตรงที่ตัวแปรเหล่านี้อาจมีความยาวได้นานกว่ามาก และ “10m” ที่คุณประกาศสามารถสิ้นสุดกะทันหันได้

แนวโน้ม DDoS

  1. พลังของการโจมตีเครือข่ายและเลเยอร์การขนส่งมีการเติบโตอย่างต่อเนื่อง ศักยภาพของการโจมตี SYN ฟลัดโดยเฉลี่ยนั้นสูงถึง 10 ล้านแพ็กเก็ตต่อวินาทีแล้ว
  2. การโจมตี DNS เป็นที่ต้องการเป็นพิเศษในช่วงนี้ UDP ท่วมท้นด้วยการสืบค้น DNS ที่ถูกต้องพร้อมที่อยู่ IP ต้นทางที่ถูกปลอมแปลงเป็นหนึ่งในการโจมตีที่ง่ายที่สุดในการใช้งานและยากที่จะตอบโต้ บริษัทรัสเซียขนาดใหญ่หลายแห่ง (รวมถึงบริษัทโฮสติ้ง) เพิ่งประสบปัญหาอันเป็นผลมาจากการโจมตีเซิร์ฟเวอร์ DNS ของตน ยิ่งคุณไปไกลเท่าไร การโจมตีก็จะยิ่งมีมากขึ้นเท่านั้น และพลังของพวกมันก็จะเพิ่มมากขึ้น
  3. เมื่อพิจารณาจากสัญญาณภายนอก บ็อตเน็ตส่วนใหญ่ไม่ได้ถูกควบคุมจากส่วนกลาง แต่ผ่านเครือข่ายแบบเพียร์ทูเพียร์ สิ่งนี้ทำให้ผู้โจมตีมีโอกาสที่จะซิงโครไนซ์การกระทำของบ็อตเน็ตเมื่อเวลาผ่านไป - หากก่อนหน้านี้คำสั่งควบคุมถูกกระจายไปยังบ็อตเน็ตที่มีเครื่อง 5,000 เครื่องในเวลาหลายสิบนาที ตอนนี้นับวินาที และไซต์ของคุณอาจพบกับจำนวนคำขอเพิ่มขึ้นร้อยเท่าโดยไม่คาดคิดในทันที .
  4. ส่วนแบ่งของบอทที่ติดตั้งเอ็นจิ้นเบราว์เซอร์เต็มรูปแบบพร้อม JavaScript ยังมีน้อย แต่มีการเติบโตอย่างต่อเนื่อง การโจมตีดังกล่าวยากกว่าที่จะขับไล่ด้วยวิธีการชั่วคราว ดังนั้น DIYers จึงควรจับตาดูแนวโน้มนี้ด้วยความระมัดระวัง

การเตรียมระบบปฏิบัติการ

นอกจากการปรับแต่ง nginx อย่างละเอียดแล้ว คุณต้องดูแลการตั้งค่าสแต็กเครือข่ายของระบบด้วย อย่างน้อยที่สุด ให้เปิดใช้งาน net.ipv4.tcp_syncookies ใน sysctl ทันทีเพื่อป้องกันตัวเองจากการโจมตี SYN-flood ขนาดเล็กทันที

15. ปรับแกนกลาง

ให้ความสนใจกับการตั้งค่าขั้นสูงของส่วนเครือข่าย (เคอร์เนล) อีกครั้งเกี่ยวกับการหมดเวลาและหน่วยความจำ มีความสำคัญมากกว่าและสำคัญน้อยกว่า ก่อนอื่นคุณต้องใส่ใจกับ:

  • net.ipv4.tcp_fin_timeoutเวลาที่ซ็อกเก็ตจะใช้ในเฟส TCP FIN-WAIT-2 (รอเซ็กเมนต์ FIN/ACK)
  • net.ipv4.tcp_(,r,w)บันทึกซ็อกเก็ต TCP ได้รับขนาดบัฟเฟอร์ สามค่า: ขั้นต่ำ ค่าเริ่มต้น และสูงสุด
  • net.core.(r,w)mem_maxเช่นเดียวกับบัฟเฟอร์ที่ไม่ใช่ TCP

ด้วยช่องสัญญาณ 100 Mbit/s ค่าเริ่มต้นยังคงเหมาะสม แต่ถ้าคุณมีอย่างน้อยกิกะบิตต่อวินาที ก็ควรใช้บางอย่างเช่น:

Sysctl -w net.core.rmem_max=8388608 sysctl -w net.core.wmem_max=8388608 sysctl -w net.ipv4.tcp_rmem = "4096 87380 8388608" sysctl -w net.ipv4.tcp_wmem = "4096 65536 838860 8" ระบบ - ด้วย net.ipv4.tcp_fin_timeout=10

16. การแก้ไข /proc/sys/net/**

เหมาะอย่างยิ่งที่จะสำรวจพารามิเตอร์ทั้งหมดใน /proc/sys/net/** เราจำเป็นต้องดูว่าพวกมันแตกต่างจากค่าเริ่มต้นอย่างไร และเข้าใจว่าพวกมันได้รับการตั้งค่าไว้เพียงพอเพียงใด นักพัฒนา Linux (หรือผู้ดูแลระบบ) ที่เข้าใจการทำงานของบริการอินเทอร์เน็ตภายใต้การควบคุมของเขาและต้องการเพิ่มประสิทธิภาพควรอ่านเอกสารประกอบของพารามิเตอร์ทั้งหมดของสแต็กเครือข่ายเคอร์เนลด้วยความสนใจ บางทีเขาอาจจะพบว่าตัวแปรเฉพาะของไซต์นั้นไม่เพียงแต่ช่วยปกป้องไซต์จากผู้บุกรุกเท่านั้น แต่ยังช่วยเร่งการทำงานของไซต์อีกด้วย

ไม่ต้องกลัว!

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



 


อ่าน:


ใหม่

วิธีฟื้นฟูรอบประจำเดือนหลังคลอดบุตร:

ไวรัสแรนซัมแวร์ที่เป็นอันตรายกำลังแพร่กระจายอย่างหนาแน่นบนอินเทอร์เน็ต

ไวรัสแรนซัมแวร์ที่เป็นอันตรายกำลังแพร่กระจายอย่างหนาแน่นบนอินเทอร์เน็ต

ไวรัส Anna Kournikova ได้ชื่อมาด้วยเหตุผล - ผู้รับคิดว่าพวกเขากำลังดาวน์โหลดรูปถ่ายของนักเทนนิสสุดเซ็กซี่ ความเสียหายทางการเงิน...

การติดตั้ง RAM เพิ่มเติม

การติดตั้ง RAM เพิ่มเติม

“หลักการของการท่องจำตามธรรมชาตินั้นขึ้นอยู่กับการเชื่อมต่อของเส้นประสาทที่สร้างขึ้นในสมอง” Olga Zimnyakova นักประสาทวิทยากล่าว...

จะทำอย่างไรถ้าหูฟังไม่สร้างเสียงบนแล็ปท็อป

จะทำอย่างไรถ้าหูฟังไม่สร้างเสียงบนแล็ปท็อป

ปัญหาในการเชื่อมต่อและใช้งานหูฟังเป็นเรื่องปกติ ในบทความนี้เราจะดูสาเหตุที่เป็นไปได้มากที่สุดหลายประการ...

ไดเรกทอรีไดโอด ไดโอดเรียงกระแสกำลังสูง 220V

ไดเรกทอรีไดโอด ไดโอดเรียงกระแสกำลังสูง 220V

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

ฟีดรูปภาพ อาร์เอสเอส