ฉันทำงานกับผู้ให้บริการเว็บหลายร้อยคนที่อยู่เบื้องหลัง 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
ไชโย!