เว็บเซิร์ฟเวอร์ของฉันอยู่เบื้องหลัง ELB ฉันต้องการบล็อกการรับส่งข้อมูลจากตัวแทนผู้ใช้เฉพาะซึ่งเป็นการโจมตี DDOS Apache มักจะเห็นที่อยู่ IP ของ ELB ในฐานะผู้ใช้ปลายทาง ดังนั้นฉันจึงลองพยายามด้านล่าง:

  1. ไม่สามารถบล็อกที่อยู่ IP ที่ระดับ ELB ได้ เนื่องจากมีการจำกัดที่อยู่ IP 20 รายการและที่อยู่ IP จะเปลี่ยนทุกครั้งที่โจมตี
  2. บล็อกการเข้าถึงโดยใช้เงื่อนไขการเขียนซ้ำ วิธีนี้ใช้ได้ แต่ถ้ามี Hit จำนวนมาก เซิร์ฟเวอร์จะโหลดเกิน 100 และเธรด apache ทั้งหมดยุ่งในการให้บริการ 403 ตัน ดังนั้นไซต์จึงหยุดทำงานสำหรับคำขอที่ถูกต้อง

    RewriteCond %{HTTP_USER_AGENT} ^SomeThing
    
    RewriteRule ^(.*)$ - [F]
    
  3. บล็อกด้วย mod_sec ทำสิ่งเดียวกันกับการให้บริการ 403 ซึ่งสร้างเอฟเฟกต์เหมือนกับ #2 ด้านบน

  4. บล็อกแพ็กเก็ตด้วยโมดูลสตริง iptables: บล็อกแพ็กเก็ตที่มีตัวแทนผู้ใช้เฉพาะ ในสถานการณ์สมมตินี้ iptables ส่ง DROP/ REJECT ไปยังผู้โจมตี apache จะไม่ได้รับสัญญาณว่าการเชื่อมต่อนั้นตายแล้วและรอการหมดเวลาซึ่งทำให้เธรด apache ทั้งหมดถูกใช้หมดเวลา ดังนั้นวิธีนี้จึงไม่มีประโยชน์ที่นี่

    iptables -I INPUT -i eth0 -p tcp --dport 80 -m string --algo bm --string 'user-agent: SomeThing' -j REJECT
    

ฉันสามารถใช้ iptables ในลักษณะที่จะได้รับที่อยู่ IP จากแพ็กเก็ตแรกที่มีuser-agent: SomeThingและบล็อกแพ็กเก็ตถัดไปทั้งหมดที่มีX-Forwarded-For: someIP4-5 ชั่วโมงได้หรือไม่ ฉันไม่ต้องการให้การบล็อกที่อยู่ IP อยู่เสมอเนื่องจากที่อยู่ IP เหล่านี้สามารถกำหนดให้กับผู้ใช้ที่ถูกกฎหมายบางคนและจะถูกบล็อก

หรือมีวิธีอื่นที่ดีกว่าในการจัดการการโจมตีนี้ ?

answer

หรืออย่าใช้ ELB แต่เปิดตัวโหลดบาลานเซอร์ของคุณเองโดยใช้ HAProxy

หากคุณได้รับการปรับใช้เว็บไซต์ของคุณใช้AWS OpsWorksคุณควรทราบว่า OpsWorks AWS สนับสนุนHAProxy ตาม Balancer การโหลดเลเยอร์

ใช่ การเตรียม HAProxy Load Balancer Layer นั้นเกี่ยวข้องมากกว่าแค่การปั่นชุด ELB แต่ท้ายที่สุด จะช่วยให้คุณปรับแต่งการตั้งค่า iptables ได้อย่างเต็มที่ แม้จะใช้ fail2ban


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

URL: https://bitbucket.org/pepoluan/haproxy-autoscaling/overview

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

IP ไคลเอ็นต์ดั้งเดิมมีให้โดย ELB ในส่วนหัวX-Forwarded-For

คุณสามารถใช้ X-Forwarded-For ในของคุณเขียนกฎ