วิธีที่ดีที่สุดในการป้องกันการจู่โจม DOS“ ช้าคลอเรส” กับเว็บเซิร์ฟเวอร์ Apache?


32

เมื่อเร็ว ๆ นี้สคริปต์ที่ชื่อว่า "slowloris" ได้รับความสนใจ แนวคิดพื้นฐานของสิ่งที่ slowloris ไม่ได้เป็นการโจมตีใหม่ แต่ได้รับความสนใจเมื่อเร็ว ๆ นี้ฉันได้เห็นการโจมตีเพิ่มขึ้นเล็กน้อยจากเว็บไซต์ Apache บางเว็บไซต์ของเรา

ในขณะนี้ดูเหมือนว่าจะไม่ได้รับการป้องกันใด ๆ 100%

ทางออกที่ดีที่สุดที่เราได้พิจารณา (จนถึงปัจจุบัน) คือการเพิ่ม MaxClients

หลักสูตรนี้ไม่ได้ทำอะไรมากไปกว่าการเพิ่มข้อกำหนดสำหรับคอมพิวเตอร์ของผู้โจมตีและไม่ได้ป้องกันเซิร์ฟเวอร์ 100%

อีกรายงานหนึ่งระบุว่าการใช้ reverse proxy (เช่น Perlbal) ด้านหน้าเซิร์ฟเวอร์ Apache สามารถช่วยป้องกันการโจมตีได้

การใช้ mod_evasive เพื่อ จำกัด จำนวนการเชื่อมต่อจากโฮสต์หนึ่งและใช้ mod_security เพื่อปฏิเสธคำขอที่ดูเหมือนว่าออกโดย slowloris ดูเหมือนจะเป็นการป้องกันที่ดีที่สุด

มีใครใน ServerFault ที่เคยประสบกับการโจมตีเช่นนี้หรือไม่ ถ้าเป็นเช่นนั้นคุณใช้มาตรการใดเพื่อปกป้อง / ป้องกัน?

หมายเหตุ: คำถามนี้สำหรับเซิร์ฟเวอร์ Apache เนื่องจากเป็นความเข้าใจของฉันว่าเซิร์ฟเวอร์ Windows IIS ไม่ได้รับผลกระทบ

คำตอบ:


22

ฉันมีประสบการณ์กับการโจมตี ... ในกลางฤดูร้อน (23 มิถุนายน) ซึ่งคุณควรจะอยู่ในชนบทและดื่มเบียร์:>

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

นอกจากนี้iptablesช่วยฉันด้วย:

iptables -I INPUT -p tcp --dport 80 \
         -m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP

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


4
+1 สำหรับกฎ iptables
ทิม

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

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

1
ปัญหาของการโจมตี sloworis นั้น จำกัด อยู่ที่มัลติเธรดมัลติเธรดของอาปาเช่ (และเว็บเซิร์ฟเวอร์อื่น ๆ ที่ใช้โมเดลเดียวกัน) สารเคลือบเงาควรอยู่รอดได้
Cian


3

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


0

ตอนนี้ดูเหมือนว่าไม่มีอะไรมากไปกว่าที่จะ จำกัด การเชื่อมโยงสูงสุดพร้อมกันต่อไอพีบนเซิร์ฟเวอร์


0

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


0

iptable ที่ใช้ไฟร์วอลล์ควรปกป้องคุณจากการเชื่อมต่อหลายจาก 1 ip


0

หากสิ่งนี้ช่วยให้คนอื่นบางครั้งคุณสามารถเอาชนะปัญหานี้ด้วย Apache 2.2.15 หรือสูงกว่าด้วยการกำหนดค่าต่อไปนี้:

LoadModule reqtimeout_module modules/mod_reqtimeout.so
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500

ข้อมูลเพิ่มเติมที่นี่: https://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html

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