ฉันจะป้องกันการโจมตี DDOS ใน Amazon EC2 ได้อย่างไร


46

หนึ่งในเซิร์ฟเวอร์ที่ฉันใช้นั้นโฮสต์บนคลาวด์ Amazon EC2 ทุก ๆ สองสามเดือนเราดูเหมือนจะมีการโจมตี DDOS ในเซิร์ฟเวอร์นี้ ทำให้เซิร์ฟเวอร์ช้าลงอย่างไม่น่าเชื่อ หลังจากประมาณ 30 นาทีและบางครั้งการรีบูตในภายหลังทุกอย่างกลับสู่ปกติ

Amazon มีกลุ่มความปลอดภัยและไฟร์วอลล์ แต่มีอะไรอีกที่ฉันควรทำบนเซิร์ฟเวอร์ EC2 เพื่อลดหรือป้องกันการโจมตี

จากคำถามที่คล้ายกันฉันได้เรียนรู้:

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

มีอะไรอีกบ้างที่ขาดหายไป? ฉันจะรักข้อมูลเกี่ยวกับเครื่องมือเฉพาะและตัวเลือกการกำหนดค่า (อีกครั้งโดยใช้ Linux ที่นี่) และ / หรืออะไรก็ตามที่เฉพาะเจาะจงกับ Amazon EC2

ปล.: หมายเหตุเกี่ยวกับการเฝ้าติดตาม DDOS ก็น่ายินดีเช่นกันบางทีอาจจะเป็นด้วย nagios? ;)


การป้องกันเป็นไปไม่ได้เกือบ แต่คุณสามารถลดความเสี่ยงได้อย่างแน่นอน
Belmin Fernandez

1
จริงแท้แน่นอน. และฉันจะมีความสุขกับคำตอบที่กล่าวถึงการลดช่องโหว่ :)
CWD

เพื่อที่จะทราบวิธีการป้องกันมันจะต้องรู้เพิ่มเติมเกี่ยวกับลักษณะของการโจมตี มันเป็นน้ำท่วม syn หรือไม่? มีหน้าเว็บที่มีราคาแพงหรือไม่ มีบริการอื่นอีกไหม?
ตุ๋น

ฉันคิดว่ามันเป็นหน้าเว็บ แต่ไม่แน่ใจ ฉันยินดีต้อนรับเคล็ดลับในการตรวจสอบและตรวจสอบสิ่งเหล่านี้ บันทึกการเข้าถึงบางส่วนได้ถูกลบไปแล้วฉันควรมองหาอะไรอีก
cwd

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

คำตอบ:


36

DDOS (หรือแม้แต่ DOS) ในสาระสำคัญของมันคือความอ่อนล้าของทรัพยากร คุณจะไม่สามารถกำจัดปัญหาคอขวดได้เนื่องจากคุณสามารถผลักมันออกไปได้

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

วิธีที่ดีที่สุดในการดำเนินการคือการเริ่มการตรวจสอบบางอย่าง (ในพื้นที่เช่น SAR, ระยะไกลด้วย Nagios และ / หรือ ScoutApp) และเครื่องมืออำนวยความสะดวกการบันทึกระยะไกล (Syslog-ng) ด้วยการตั้งค่าเช่นนี้คุณจะสามารถระบุทรัพยากรที่ได้รับอิ่มตัว (ซ็อกเก็ตเครือข่ายเนื่องจากน้ำท่วม Syn; CPU เนื่องจากแบบสอบถาม SQL หรือซอฟต์แวร์รวบรวมข้อมูลที่ไม่ดี; RAM เนื่องจาก ... ) อย่าลืมที่จะมีพาร์ทิชันบันทึกของคุณ (ถ้าคุณไม่ได้เปิดใช้งานการบันทึกระยะไกล) ในปริมาณ EBS (เพื่อศึกษาบันทึกในภายหลัง)

หากการโจมตีผ่านหน้าเว็บเข้าสู่ระบบการเข้าถึง (หรือเทียบเท่า) จะมีประโยชน์มาก


คุณอาจต้องการดูส่วน "โหลดตาม" ของserverfault.com/a/531942/87017
Pacerier

24

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

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

ฉันจะพูดถึง fail2ban ซึ่งสามารถตรวจสอบบันทึกและแก้ไขตาราง ip ของคุณชั่วคราวเพื่อบล็อก IP เฉพาะ (ตัวอย่างเช่นหากมีความพยายามล้มเหลว 6 ครั้งที่จะ SSH เป็นโฮสต์ของคุณจากที่อยู่ IP เดียวก็สามารถบล็อก IP นั้นเป็นเวลา 30 นาทีหรือดังนั้น) โปรดทราบว่า (ตามที่จอร์แดนแสดงความคิดเห็นอย่างชาญฉลาด) fail2ban อาจไม่เหมาะสมสำหรับการปิดกั้นการรับส่งข้อมูลพร็อกซี (เช่นจาก ELB) เนื่องจากจะบล็อก IP ของพร็อกซีไม่จำเป็นต้องเป็น IP ระยะไกลดั้งเดิม

ฉันไม่ได้ใช้ แต่ Apache mod_evasive อาจคุ้มค่าที่จะตรวจสอบเช่นกัน อย่างไรก็ตามอาจมีจุดอ่อนเดียวกับ fail2ban เมื่อพูดถึงการบล็อกด้วย IP


+1 ขอบคุณ จริง ๆ แล้วฉันมี ssh ปิดตัวลง;)
cwd

1
โปรดทราบว่าถ้าคุณอยู่หลัง ELB, fail2ban จะไม่ทำงาน - เพราะโดยทั่วไปแล้วจะทำงานโดยการบล็อก IP ใน iptables แต่ IP จะเป็นของ ELB ของคุณเสมอ ฉันรู้ว่าหลังจากพยายามเพิ่ม fail2ban ในการตั้งค่าของฉัน มันไม่ทำงานหากผู้ใช้เข้าถึงผ่านทาง ELB เท่านั้น
Jordan Reiter

5

หากคุณกำลังใช้ Apache ผมขอแนะนำให้ใช้mod_security จัดทำโดยผู้จำหน่ายส่วนใหญ่ชุดกฎหลักทำหน้าที่ได้อย่างยอดเยี่ยม

ขั้นตอนการชุบแข็งอีกประการหนึ่งคือการ จำกัด คำขอในระดับเว็บเซิร์ฟเวอร์ Nginx ., Apacheสามารถเร่งความเร็วและ จำกัด การร้องขอขาเข้า


ยอดเยี่ยม - ดูเหมือนตัวเลือกที่ยอดเยี่ยมขอบคุณ!
cwd

2

โซลูชันที่ฉันใช้สำหรับบล็อกกิจกรรมที่ไม่ดีแบบเรียลไทม์ IP ออกมาจาก AWS และอื่น ๆ คือ ... ในไฟร์วอลล์ CSF ของฉันในการกำหนดค่าสำหรับรายการบล็อก LFD ฉันใช้รายการที่พบที่นี่ - http://myip.ms/browse/blacklist/ Blacklist_IP_Blacklist_IP_Addresses_Live_Database_Real เวลา

ดาวน์โหลด Blacklist สำหรับ CSF Firewall » http://myip.ms/files/blacklist/csf/latest_blacklist.txt

ไม่มีการรับส่งข้อมูล AWS ที่น่ารังเกียจอย่างน่ารังเกียจอีกต่อไป


1
นี่ไม่ได้ตอบคำถาม
kasperd

2

ฉันลำเอียงเพราะฉันทำงานให้กับเครือข่ายการส่งเนื้อหาในฐานะวิศวกรฝ่ายรักษาความปลอดภัย

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

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

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

cdn ที่ดียังสามารถทำการตรวจสอบสุขภาพและการรับส่งข้อมูลที่ล้มเหลวไปยังสถานที่อื่น ๆ เช่นอาตมาอื่นในตูด, Azure, แร็คพื้นที่, เลเยอร์นุ่ม, ฟิสิคัล dc เป็นต้นและควรมี WAF เพื่อให้แน่ใจว่า RUDY, slowpost, slowloris และ sqli, xss, rfi, lfi เป็นต้น

โดยค่าเริ่มต้น cdn ยังบล็อกการโจมตีเลเยอร์เครือข่ายเช่นน้ำตา, การโจมตี icmp, synfloods เป็นต้น cdn สามารถลดการโจมตีของ Ddos ได้เนื่องจากแต้มมีความจุจำนวนมากที่จะยอมรับการร้องขอกรองการรับส่งข้อมูลที่ไม่ดีและผ่านการรับส่งข้อมูลที่ดี ดังนั้นการโจมตีแบบขยายเช่น ntp, DNS, ssdp, chargen และการโจมตีเชิงปริมาตร snmp จึงสามารถปิดกั้นได้

การโจมตีที่ใหญ่ที่สุดที่ฉันเคยเห็นมีอยู่ 321gbps ในเดือนกรกฎาคม 2014 ในระหว่างการโจมตีนี้ยังมีการโจมตีโปรโตคอล DNS ที่ 20gbps ดังนั้นคุณจะต้องมั่นใจว่าโครงสร้างพื้นฐาน DNS ของคุณนั้นทนทานต่อการร้องขอจำนวนมาก

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

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


1

นี่คือเครื่องมือที่ฉันสร้างขึ้นสำหรับผู้ที่ต้องการใช้ Fail2Ban ใน aws ด้วย apache, ELB และ ACL: https://github.com/anthonymartin/aws-acl-fail2ban

มันมีประโยชน์สำหรับการตรวจจับและป้องกันการโจมตี DoS และการใช้อินสแตนซ์ ec2 ในทางที่ผิด


0

ไฟร์วอลล์ของเซิร์ฟเวอร์การกำหนดค่าเป็นวิธีที่ดีที่สุดที่ฉันเคยเห็นสำหรับการลด DDoS ในซอฟต์แวร์ที่ใช้ VM ใน EC2 หากคุณรวมคุณสมบัติ syslog มันสามารถป้องกันสภาพแวดล้อมที่สมดุลโหลด

http://configserver.com/cp/csf.html


ยินดีต้อนรับสู่ Server Fault! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Scott Pack
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.