Linux: ป้องกันการท่วม TCP ขาออก


9

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

ฉันกำลังพิจารณาทางเลือกต่อไปนี้ คุณจะแนะนำแบบไหน คุณได้ใช้สิ่งเหล่านี้และอย่างไร

  • จำกัด บนเว็บเซิร์ฟเวอร์ (iptables) แพ็กเก็ต TCP ขาออกพร้อมพอร์ตต้นทาง! = 80
  • เหมือนกัน แต่มีการเข้าคิว (tc)
  • อัตรา จำกัด ทราฟฟิกขาออกต่อผู้ใช้ต่อเซิร์ฟเวอร์ ค่อนข้างเป็นภาระของผู้ดูแลระบบเนื่องจากมีผู้ใช้มากกว่า 1,000 คนต่อแอพพลิเคชันเซิร์ฟเวอร์ อาจเป็นเช่นนี้: ฉันจะ จำกัด แบนด์วิดท์ของผู้ใช้ได้อย่างไร?
  • มีอะไรอีกไหม

โดยธรรมชาติฉันยังมองหาวิธีที่จะลดโอกาสที่แฮ็กเกอร์จะเข้ามาในเว็บไซต์ที่โฮสต์ของเรา แต่เนื่องจากกลไกดังกล่าวจะไม่กันน้ำ 100% ฉันจึงต้องการ จำกัด ผลกระทบจากการบุกรุกอย่างรุนแรง

อัปเดต: ฉันกำลังทดสอบกฎเหล่านี้ซึ่งจะป้องกันการโจมตีนี้โดยเฉพาะ คุณจะเสนอให้ทำให้เป็นเรื่องธรรมดามากขึ้นได้อย่างไร? ฉันขาดการโจมตี TCP DoS ที่เป็นที่รู้จักหรือไม่เมื่อฉันให้คะแนนเฉพาะแพ็คเก็ต SYN เท่านั้น?

iptables -A OUTPUT -p tcp --syn -m limit --limit 100/min -j ACCEPT
iptables -A OUTPUT -p tcp --syn -m limit --limit 1000/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A OUTPUT -p tcp --syn -j REJECT --reject-with tcp-reset

ไชโย!

คำตอบ:


3

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

ฉันหวังว่ามันจะช่วย :)


-3

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


ตกลงดังนั้นเว็บไซต์จะไปและดึงข้อมูล RSS จากเว็บไซต์อื่นได้อย่างไร
Michael Hampton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.