NginX और Lighttpd Slowloris से प्रभावित क्यों नहीं हैं?


23

मैं स्लोवरिस की भेद्यता की जांच कर रहा हूं और मुझे लगता है कि मैं समझता हूं कि इस तरह का हमला कैसे और क्यों काम करता है।

मुझे समझ में नहीं आ रहा है कि क्यों लाइटटैप और एनजीनएक्स प्रभावित नहीं हैं (ऊपर दिए गए लेख के अनुसार एक ही लेख के अनुसार)। वे क्या अलग बनाते हैं?

जवाबों:


25

अपाचे में 'अधिकतम ग्राहक' का सिद्धांत है

यह एक साथ कनेक्शन की संख्या है जो इसे संभाल सकता है। IE यदि एक अपाचे सर्वर में 100 की अधिकतम ग्राहक सीमा है, और प्रत्येक अनुरोध को पूरा होने में 1 सेकंड लगता है, तो यह प्रति सेकंड अधिकतम 100 अनुरोधों को संभाल सकता है।

SlowLoris की तरह एक एप्लिकेशन कनेक्शन के साथ एक सर्वर को भर देगा, अगर हमारे उदाहरण में SlowLoris प्रति सेकंड 200 कनेक्शन भेजता है, और Apache प्रति सेकंड केवल 100 कनेक्शन संभाल सकता है कनेक्शन कतार बड़ी होती रहेगी और मशीन पर सभी मेमोरी का उपयोग करके इसे लाएगा। एक हॉल्ट। यह उसी तरह है जैसे बेनामी 'LOIC काम करता है।

NGINX और लाइटटैप (दूसरों के बीच) में अधिकतम कनेक्शन नहीं है, वे इसके बजाय कार्यकर्ता थ्रेड्स का उपयोग करते हैं, सैद्धांतिक रूप से, उन कनेक्शनों की संख्या की कोई सीमा नहीं है जिन्हें वे संभाल सकते हैं।
यदि आप अपने अपाचे कनेक्शन की निगरानी करते हैं, तो आप देखेंगे कि अधिकांश सक्रिय कनेक्शन क्लाइंट से 'भेजना' या 'प्राप्त करना' डेटा हैं। NGINX / लाइटटैप में वे सिर्फ इन अनुरोधों को अनदेखा करते हैं और सिस्टम संसाधनों का उपयोग न करते हुए उन्हें पृष्ठभूमि में चलने देते हैं, और इसे केवल कुछ के साथ कनेक्शन की प्रक्रिया करनी होती है (पार्सिंग प्रतिक्रियाएं, बैकएंड सर्वर से डेटा पढ़ना आदि)

मैंने आज दोपहर इसी तरह के सवाल का जवाब दिया, इसलिए वहां की जानकारी भी आपके लिए दिलचस्प हो सकती है अपाचे अनुरोध को कम करना


अच्छा और बहुत विस्तृत जवाब। +1
ओलडस्कूल

6
मामूली सुधार: उच्च संख्या में कनेक्शन प्राप्त करने के लिए nginx कार्यकर्ता थ्रेड्स का उपयोग नहीं करता है। से nginx.org : "Nginx संभाल अनुरोध करने के लिए सूत्र पर भरोसा नहीं है इसके बजाय यह एक बहुत अधिक स्केलेबल घटना चालित (एसिंक्रोनस) वास्तुकला का उपयोग करता है।"
डे

2
हालांकि एक संभावित दुष्प्रभाव, Slowloris का इरादा "मशीन पर सभी मेमोरी का उपयोग करना" नहीं है, बल्कि बाद में कनेक्शन को सफल होने से इनकार करते हुए अधिकतम कनेक्शन क्षमता को समाप्त करना है।
wulfgarpro

@Day Nginx एसिंक्रोनस ऑपरेशन का समर्थन करने के लिए कार्यकर्ता थ्रेड्स का उपयोग करता है। एक उपयोगी एप्लिकेशन आर्किटेक्चर योजनाबद्ध यहां प्रदान किया गया है: aosabook.org/en/nginx.html#fig.nginx.arch
टेरी बर्टन

13

Nginx वास्तव में धीमी गति से हमले की चपेट में है। दुर्लभ संसाधन एक साथ श्रमिक कनेक्शन की अधिकतम संख्या है। इस संख्या की गणना कार्यकर्ता_कनेक्ट * कार्यकर्ता_प्रोसेस के रूप में की जा सकती है और डिफ़ॉल्ट नगीन विन्यास में 512 के बराबर है। तो, गॉल्फिस जैसे उपकरणों के साथ असुरक्षित नेगीक्स को उतारना काफी आसान है ।


golorisउपकरण जैसा दिखता है मुझे यह सुनिश्चित करने की आवश्यकता है कि मेरा कार्यान्वयन / सेटअप काम करता है जैसा कि अपेक्षित है!
एलेक्सिस विलके

8

वलीला की टिप्पणी को उत्तर के रूप में स्वीकार किया जाना चाहिए।

अधिकांश नगनेक्स सर्वर डिफ़ॉल्ट कॉन्फिगर का उपयोग करते हैं और इसलिए स्लोअरलिस अटैक के लिए कमजोर होते हैं। मैंने अपने कुछ दोस्त के nginx वेबसाइटों को केवल अपने लैपटॉप का उपयोग करने के लिए धीमा करने के लिए उपयोग किया है और आमतौर पर इसमें 5 मिनट से कम समय लगता है (मेरे दोस्तों ने मुझे ऐसा करने के लिए चुनौती दी)।

जैसा कि वालियाला ने कहा है, तकनीकी रूप से, न्यंजेक्स धीमेपन के लिए कमजोर नहीं है, लेकिन डिफ़ॉल्ट कॉन्फ़िगरेशन कनेक्शन की अधिकतम संख्या को सीमित करता है, इसलिए जब कनेक्शन उस संख्या से अधिक हो जाता है, तो नगीनक्स नए अनुरोध को छोड़ देता है, जिसके परिणामस्वरूप सेवा से इनकार होता है।

निगनेक्स को स्लोक्लोरिस से बचाने के लिए ज्ञात तरीकों में समान आईपी से कनेक्शन की संख्या को सीमित करना, और वर्कर_कनेक्टिंग कॉन्फ़िगरेशन को बढ़ाना शामिल है। हमला अभी भी काम कर सकता है, लेकिन यह कठिन हो जाता है (शायद 5 मिनट से अधिक समय लग सकता है ?: डी)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.