2017-07-15 15 views
18

क्या विशिष्ट है कि मदद करने के लिए एक Django चैनल सर्वर WebSocket/HTTP से कम प्रकाश या आकस्मिक DDoS हमला या सामान्य लोड वृद्धि करने के लिए अतिसंवेदनशील ग्राहकों बनाने में किया जा सकता है? चूंकि चैनल वास्तव में असीमित नहीं हैं (अभी भी दृश्यों के पीछे श्रमिक), मुझे लगता है कि चैनल-आधारित वेबसाइट को लेना बहुत आसान होगा - यहां तक ​​कि काफी सरल हार्डवेयर के साथ भी। मैं वर्तमान में Django चैनलों पर एक आवेदन बना रहा हूं और यह देखने के लिए बाद में कुछ परीक्षण चलाएगा कि यह कैसा रहता है।लोड कील संरक्षण

क्या डेफने में निर्मित थ्रॉटलिंग का कोई रूप है? क्या मुझे कुछ एप्लिकेशन-स्तर थ्रॉटलिंग लागू करना चाहिए? यह अभी भी धीमा होगा क्योंकि एक कर्मचारी अभी भी थ्रॉटल अनुरोध को संभालता है, लेकिन अनुरोध बहुत तेज हो सकता है। क्या इन हमलों को विफल करने के प्रयास में मैं कुछ और कर सकता हूं?

एक विचार मुझे हमेशा यह सुनिश्चित करना था कि विशिष्ट चैनलों के लिए नामित श्रमिक हैं - इस तरह, यदि वेबसाईट चैनल ओवरलोड हो जाता है, तो HTTP अभी भी प्रतिक्रिया देगी।

संपादित करें: मुझे अच्छी तरह पता है कि निम्न स्तर की डीडीओएस सुरक्षा एक आदर्श समाधान है, और मैं समझता हूं कि डीडीओएस हमले कैसे काम करते हैं। जो मैं खोज रहा हूं वह उन चैनलों में बनाया गया समाधान है जो इस तरह के भार को संभालने में मदद कर सकते हैं। शायद डेफने को एक चैनल को स्केल करने और क्षतिपूर्ति करने के लिए दूसरे को स्केल करने की क्षमता, या एक थ्रॉटलिंग विधि जो एक निश्चित बिंदु के बाद प्रति अनुरोध वजन कम कर सकती है। मैं के लिए क्या नहीं देख रहा हूँ रहे हैं DDoS या सामान्य लोड से निपटने के बारे में सामान्य जवाब - -

मैं एक Daphne/चैनलों विशिष्ट जवाब के लिए देख रहा हूँ वहाँ इतना है कि के बारे में पर अन्य प्रश्न के बहुत सारे हैं।

मैं लॉग इन नहीं कर रहा हूं और कौन नहीं है, इस पर आधारित थ्रॉटलिंग को भी नियंत्रित कर सकता है - लॉग इन नहीं किए गए उपयोगकर्ताओं के लिए एक थ्रॉटल मदद कर सकता है।

फिर से संपादित करें: कृपया पूरा प्रश्न पढ़ें! मैं सामान्य डीडीओएस शमन सलाह या निम्न स्तर के दृष्टिकोण की व्याख्या की तलाश नहीं कर रहा हूं। मैं सोच रहा हूँ अगर Daphne की तरह कुछ के लिए समर्थन हासिल है: कतार आकार के आधार पर थ्रॉटलिंग

  • गतिशील कार्यकर्ता काम

    • मिडिलवेयर प्रमाणीकृत अनुरोध करने के लिए प्राथमिकता प्रदान करने के लिए

    या उस प्रकृति का कुछ। मैं सीधे इस पर चैनल समुदाय तक पहुंचने जा रहा हूं क्योंकि शायद इस प्रश्न के लिए सबसे अच्छी जगह नहीं हो सकती है।

  • +0

    सॉफ्टवेयर फ़ायरवॉल के साथ डीडीओएस सुरक्षा? मेरी राय "भयभीत" विचार है! प्रत्येक अनुरोध पर पैकेट के 60 बाइट हेडर पढ़ें। अस्वीकार-ड्रॉप-फ्रीज के लिए अधिक फ़ंक्शन ट्रिगर किया गया 'सिस्टम संसाधन' मुद्दा है। विलंब 'पूर्व निष्कर्ष' है। आप कम मूल्य वाले हमलों पर सफलता प्राप्त कर सकते हैं लेकिन सिस्टम संसाधनों को कैसे संभालें? फ़ायरवॉल पर किसी भी स्टोर प्रक्रिया का उपयोग नहीं कर सकते, मतलब good_user बनाम bad_user अनुरोध। ** यदि आप एक अवांछित अनुरोध स्वीकार करते हैं तो आप स्वयं की रक्षा नहीं कर सकते हैं! ** यदि कोई पैकेट लूपबैक ('lo') तक पहुंच गया तो सस्ता नहीं है। – dsgdfg

    उत्तर

    3

    मुझे Andrew Godwin से answer प्राप्त हुआ है। वह स्टैक ओवरफ्लो का उपयोग नहीं करता है इसलिए मैं इसे यहां अपनी ओर से पोस्ट कर रहा हूं।

    हाय जेमी,

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

    अधिक उन्नत डीओएस या डीडीओएस सुरक्षा प्रदान करना शायद कुछ नहीं है जो हम चैनलों के दायरे में कर सकते हैं, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि हम उपयुक्त हुक प्रदान करें। क्या ऐसी कुछ चीजें थीं जो आपको लगता है कि हम कार्यान्वित कर सकते हैं जो आपको कुछ चीजों को लिखने में मदद करेगा?

    (यह ध्यान में रखना भी महत्वपूर्ण है कि अभी हम एक बड़े पुनर्लेख के हिस्से के रूप में कार्यकर्ता/उपभोक्ता लेआउट को काफी हद तक बदल रहे हैं, जिसका मतलब स्केलिंग के दौरान अलग-अलग विचारों का मतलब है, इसलिए मैं भी देना नहीं चाहता सटीक सलाह बस अभी तक)

    एंड्रयू

    उन्होंने अपने blog में 2.0 माइग्रेशन के बारे में लिखा है।

    0

    मैं केवल पहले प्रश्न का उत्तर दे रहा हूं। इसलिए मूल रूप से डीडीओ हमलों से 100% संरक्षित होना असंभव है, क्योंकि यह हमेशा संसाधनों की लड़ाई में आता है। यदि सर्वर-साइड संसाधन हमलावर-पक्ष संसाधनों से अधिक हैं, तो सर्वर नीचे नहीं जायेगा (हालांकि प्रदर्शन धीमा हो सकता है) लेकिन यदि नहीं, तो सर्वर नीचे चला जाता है [कोई संदर्भ आवश्यक नहीं है]। 100% संरक्षित क्यों संभव नहीं है, आप पूछ सकते हैं। तो मूल रूप से आपका सर्वर "क्रैश" होता है अगर लोग इससे कनेक्ट नहीं हो सकते हैं [https://en.wikipedia.org/wiki/Crash_(computing)#Web_server_crashes --- वेब सर्वर वाक्य को क्रैश करता है 1.]। इसलिए यदि आप अपने सर्वर को 5 मिनट के लिए बंद करके इसे हर बार 10000 कनेक्शन बनाते हैं, तो डीडीओ सफल हो जाते हैं। यह आपके सर्वर को "दुर्घटनाग्रस्त" कर दिया गया। केवल डीडीओ सुरक्षा जो मुझे पता है कि काम करना चाहिए क्लाउडफेयर (https://www.cloudflare.com/lp/ddos-b/?_bt=207028074666&_bk=%2Bddos%20%2Bprotection&_bm=b&_bn=g&gclid=EAIaIQobChMIu5qv4e-Z1QIVlyW9Ch2YGQdiEAAYASAAEgJbQ_D_BwE) है। यह अपने 10 टीबीपीएस नेटवर्क रीढ़ की हड्डी के साथ डीडीओएस हमले के प्रभाव को अवशोषित करता है। लेकिन यहां तक ​​कि यह 100% डीडीओ सुरक्षा प्रदान नहीं करता है क्योंकि एक बार इसकी 10Tbps नीचे हो जाने पर, आपका सर्वर भी नीचे जायेगा। तो, मुझे उम्मीद है कि मदद की।

    +0

    आपके उत्तर के लिए धन्यवाद, @Evgeny, लेकिन यह वास्तव में सवाल का जवाब नहीं देता है। मैं समझता हूं कि डीडीओएस कैसे काम करता है और मैं समझता हूं कि आप कभी भी सुरक्षित नहीं हो सकते हैं। मुझे यह भी पता है कि क्लाउडफ्लेयर जैसे विकल्प मौजूद हैं, लेकिन उनकी प्रभावशीलता वेबसाइकिलों पर हमलों के लिए काफी सीमित है क्योंकि वे कैप्चा जैसे उपयोगकर्ता-स्वीकार्य शमन रणनीतियां प्रदान नहीं कर सकते हैं। डेफने एएसजीआई सर्वर के साथ एक Django चैनल साइट बनाने के दौरान मैं विशेष रूप से सर्वोत्तम प्रथाओं के बारे में पूछ रहा हूं। –

    0

    DDoS = सेवा

    'वितरित' भाग से वंचित करना वितरित कुंजी है: आप, आप विशेष रूप से 'किसी' ने हमला किया जा रहा हो पता नहीं कर सकते क्योंकि अनुरोध हर जगह से आते हैं।

    आपका सर्वर केवल कुछ निश्चित कनेक्शन स्वीकार करेगा। यदि हमलावर इतने सारे कनेक्शन बनाने का प्रबंधन करता है कि कोई और कनेक्ट नहीं कर सकता है, तो आप डीडीओएस हो रहे हैं।

    तो, संक्षेप में आपको यह पता लगाने में सक्षम होना चाहिए कि कनेक्शन वैध नहीं है, या आपको कनेक्शन की संख्या में सीमा की भरपाई करने के लिए तेज़ पैमाने पर स्केल करने में सक्षम होना चाहिए।

    उस के साथ शुभकामनाएँ!

    डीडीओएस सुरक्षा लोड बैलेंसर स्तर पर वास्तव में आपके क्लाउड प्रदाता से एक सेवा होनी चाहिए।

    ओवीएच जैसी कंपनियां गैरकानूनी यातायात का पता लगाने के लिए परिष्कृत मशीन सीखने की तकनीक का उपयोग करती हैं और आईपी को अर्ध-वास्तविक समय में कार्य करने पर प्रतिबंध लगाती हैं। आपके लिए ऐसी पहचान मशीनरी बनाने के लिए एक बड़ा निवेश है जो शायद आपके समय के लायक नहीं है (जब तक कि आपकी वेबसाइट बहुत महत्वपूर्ण न हो और यदि वह थोड़ा सा हो तो लाखों डॉलर $$$ खो देंगे)

    +0

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

    +0

    एक ही वेबसाइकिल में यातायात की मात्रा वास्तव में आपके आवेदन पर निर्भर करती है, यदि आप कम ट्रैफ़िक (चैट चैनल की तरह) की अपेक्षा करते हैं तो हाँ थ्रॉटल एक अच्छा समाधान है: किसी भी व्यक्ति को बहुत अधिक संदेश भेजना या रोकना। आईओटी डेटा जैसी अन्य चीजों के लिए, आपके पास डेटा की अपेक्षित दर भी होनी चाहिए। सामान्य रूप से थ्रॉटलिंग एक अच्छा विचार की तरह लगता है। – MrE

    +0

    लेकिन अज्ञात ट्रैफ़िक को संभालने का सबसे अच्छा तरीका आपके वेबसाईट एपीआई सर्वर के साथ कुछ भी संसाधित नहीं करना होगा, बल्कि सीधे संदेश संदेश क्यू (जैसे काफ्का, खरगोश एमक्यू) को संदेश भेजना होगा जो तब स्पाइक्स को संभाल सकता है और प्रक्रिया को संदेशों को धक्का दे सकता है वास्तव में प्रसंस्करण संभाल। – MrE

    0

    बहुत कुछ है डीडीओएस के बारे में आप जो कुछ नहीं कर सकते हैं ... यहां तक ​​कि आपके निपटारे में कितने संसाधन हैं, और कितना कोई आपको ऑफ़लाइन लेना चाहता है, इस पर निर्भर करता है कि कुछ साफ-सुथरा 'चाल' हैं।

    क्या आप कुल सार्वजनिक सेवा की पेशकश कर रहे हैं जिसके लिए संसाधन की आवश्यकता है जो आप सुरक्षित करने की कोशिश कर रहे हैं?

    यदि ऐसा है, तो आपको बस अपने संसाधनों के साथ डीडीओएस को 'सोखना' होगा, ऊपर और बाहर स्केल करके ... या यहां तक ​​कि लोचदार ... किसी भी तरह से यह आपको पैसे खर्च करने जा रहा है!

    या हमलावर के लिए आपके संसाधनों का उपभोग करने के लिए कठिन बनाते हैं। ऐसा करने के लिए कई तरीके हैं।

    यदि आपको सेवा के लिए किसी प्रकार की प्रमाणीकरण की आवश्यकता है, तो अपनी प्रमाणीकरण सेवाओं को उस संसाधन से अलग करें जिसे आप सुरक्षित करने की कोशिश कर रहे हैं।

    कई अनुप्रयोग, प्रमाणीकरण और 'सेवा' एक ही हार्डवेयर पर चलती है। एक डॉस होने का इंतजार कर रहा है।

    केवल उन्हीं प्रमाणीकृत उपयोगकर्ताओं को उन संसाधनों तक पहुंचने दें जिन्हें आप गतिशील फ़ायरवॉल फ़िल्टरिंग नियमों से बचाने के लिए प्रयास कर रहे हैं। यदि आपके प्रमाणीकृत संसाधनों के द्वार खोलते हैं (स्थान पर प्रतिबंधित QOS के साथ)! यदि आपका एक प्रसिद्ध, दीर्घकालिक विश्वसनीय उपयोगकर्ता है, तो संसाधन को पूर्ण बोर पर एक्सेस करें।

    उपयोगकर्ताओं को संसाधन व्यवहार (नेटवर्क, मेमोरी, सीपीयू) का ऑडिट करने का एक तरीका है, यदि आप विचित्र राशि का उपयोग करके विशेष खाते देखते हैं, उन्हें प्रतिबंधित करते हैं, या सीमा लगाते हैं, अंत में उनके यातायात की फ़ायरवॉल ड्रॉप पॉलिसी होती है।

    एक आईएसपी के साथ काम करें जिसमें सिस्टम हो सकते हैं जो आईएसपी सीमा पर आपके विनिर्देश पर यातायात को छोड़ सकते हैं .... ओवीएच आपकी सबसे अच्छी शर्त है। एक आईएसपी जो एक एपीआई के रूप में फ़िल्टर और ट्रैफिक ड्रॉपिंग का खुलासा करता है, मेरी इच्छा है कि वे अस्तित्व में हों ... मूल रूप से आपको एएस सीमा पर फ़ायरवॉल फ़िल्टरिंग नियमों को ले जा रहे हैं ... niiiiice! (फंतासी)

    यह डीडीओएस को नहीं रोकेगा, लेकिन संसाधनों को एक प्रबंधित स्तर पर संसाधनों को खपत में रखने के लिए आपको कुछ टूल देगा। डीडीओएस को आपके प्रमाणीकरण सर्वर ... (संभव) पर जाना है, या कई उपयोगकर्ता खातों से समझौता करना है ....पहले से ही प्रमाणित उपयोगकर्ताओं के पास अभी भी पहुंच होगी :-)

    यदि आपका डीडीओएस आपकी सभी आईएसपी बैंडविड्थ का उपभोग कर रहा है, तो यह एक कठिन समस्या है, एक बड़े आईएसपी पर जाएं! या आईएसपी के स्थानांतरित करें ... :-)। आपको मुख्य संसाधन छुपाएं, इसे गतिशील रूप से स्थानांतरित करने दें, आगे बढ़ें! :-)।

    समस्या को टुकड़ों में तोड़ें ... छोटे टुकड़ों पर डीडीओएस नियंत्रण लागू करें। :-)

    मैंने सबसे सामान्य उत्तर देने की कोशिश की है, लेकिन बहुत सारे निर्भर हैं, प्रत्येक डीडीओएस शमन के लिए त्वचा की थोड़ी सी आवश्यकता होती है, न कि टिन दृष्टिकोण .. वास्तव में आपको अपनी टीम पर एंटी-डीडीओ निंजा की ज़रूरत है । ;-)

    वितरित प्रोटोकॉल पर एक नज़र डालें .... डीपी शायद डीडीओएस का जवाब है।

    मज़े करें।

    0

    चलिए आपके प्रश्न में कुछ विश्लेषण लागू करते हैं। एक डीडीओएस एक डीओएस की तरह है लेकिन दोस्तों के साथ है। यदि आप डीडीओएस स्पष्टीकरण से बचना चाहते हैं तो आपको डीओएस संभावनाओं को कम करने की आवश्यकता है। धन्यवाद कैपिटन स्पष्ट।

    पहली बात क्या आपके सिस्टम में होता है और जो संसाधन प्रभावित कर रहे हैं के साथ एक सूची बनाने करना है:

    • एक TCP हाथ मिलाना किया जाता है (SYN_COOKIES प्रभावित कर रहे हैं)
    • एक ssl हाथ मिलाना बाद में आता है (एन्ट्रापी, सीपीयू)
    • एक कनेक्शन चैनल परत लिए किया जाता है ...

    फिर प्रत्येक संसाधन monitorize और एक जवाबी उपाय लागू करने के लिए प्रयास करें:

    • अपने कर्नेल पैरामीटर और फ़ायरवॉल
    • उपयोग एन्ट्रापी जनरेटर को विन्यस्त SYN_FLOOD को सुरक्षित रखें
    • (एसएसएल हैंडशेक कम करने के लिए आसान तरीका) कम समय में खुला/बंद कनेक्शन को सीमित करने के अपने फ़ायरवॉल को कॉन्फ़िगर
    • ...

    कई सरल और आसान कार्यों में आसान अपनी बड़ी समस्या (डीडीओएस) अलग करें। कठिन हिस्सा चरणों और संसाधनों की एक विस्तृत सूची प्राप्त है।

    मेरी खराब अंग्रेजी क्षमा करें।

    +0

    कैपिटन? कप्तान? – Pang

    +0

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

    संबंधित मुद्दे