सब ठीक है, पर्याप्त स्टालिंग; यहाँ मैं अब तक के साथ आया हूँ
(क्षमा करें, लंबी पोस्ट आगे। बहादुर बनो, दोस्त, यात्रा इसके लायक होगी)
मूल पद से 3 और 4 के तरीकों को मिलाकर एक तरह की 'फजी' या गतिशील श्वेतसूची, और फिर - और यहाँ की चाल है - गैर-श्वेतसूची वाले आईपी को अवरुद्ध नहीं करना, बस उन्हें नरक और वापस थ्रोटलिंग करना ।
ध्यान दें कि यह उपाय केवल इस विशिष्ट प्रकार के हमले को विफल करने के लिए है। व्यवहार में, निश्चित रूप से, यह अन्य सर्वोत्तम-प्रथाओं के दृष्टिकोण के साथ संयोजन में काम करेगा: फिक्स्ड-यूज़र थ्रॉटलिंग, प्रति-आईपी थ्रॉटलिंग, कोड-लागू स्ट्रॉन्ग पासवर्ड पॉलिसी, अनट्रूट्ड कुकी लॉगिन, हैशिंग को बचाने से पहले सभी समकक्ष समकक्ष, कभी नहीं सुरक्षा प्रश्नों का उपयोग करना, आदि।
हमले के परिदृश्य के बारे में अनुमान
यदि कोई हमलावर वैरिएबल उपयोगकर्ता नामों को लक्षित कर रहा है, तो हमारा उपयोगकर्ता नाम थ्रॉटलिंग आग नहीं करता है। यदि हमलावर एक बोटनेट का उपयोग कर रहा है या एक बड़ी आईपी सीमा तक पहुंच है, तो हमारा आईपी थ्रॉटलिंग शक्तिहीन है। यदि हमलावर ने हमारे उपयोगकर्ता सूची को पूर्व-स्क्रैप किया है (आमतौर पर खुले पंजीकरण वेब सेवाओं पर संभव है), तो हम 'उपयोगकर्ता नहीं मिला' त्रुटियों की संख्या के आधार पर चल रहे हमले का पता लगा सकते हैं। और अगर हम एक प्रतिबंधात्मक प्रणाली-व्यापी (सभी उपयोगकर्ता नाम, सभी IP) थ्रॉटलिंग को लागू करते हैं, तो ऐसा कोई भी हमला हमले की अवधि और थ्रॉटलिंग की अवधि के लिए हमारी पूरी साइट पर काम करेगा।
इसलिए हमें कुछ और करने की जरूरत है।
प्रतिवाद का पहला भाग: श्वेतसूची
हम काफी हद तक निश्चित हो सकते हैं, यह है कि हमलावर हमारे उपयोगकर्ताओं (+) के कई हजार के आईपी पते का पता लगाने और गतिशील रूप से खराब करने में सक्षम नहीं है। जो श्वेत प्रदर को संभव बनाता है। दूसरे शब्दों में: प्रत्येक उपयोगकर्ता के लिए, हम उस (हैशेड) आईपी की एक सूची संग्रहीत करते हैं जहां से उपयोगकर्ता ने पहले (हाल ही में) लॉग इन किया है।
इस प्रकार, हमारी श्वेतसूची योजना एक लॉक 'फ्रंट डोर' के रूप में कार्य करेगी, जहां उपयोगकर्ता को लॉग इन करने के लिए अपने मान्यता प्राप्त 'अच्छे' आईपी में से एक से जुड़ा होना चाहिए। इस 'सामने के दरवाजे' पर एक क्रूर बल हमला व्यावहारिक रूप से असंभव (+) होगा।
(+) जब तक हमलावर 'सर्वर' का मालिक नहीं होता, तब तक हमारे सभी उपयोगकर्ता बॉक्स, या स्वयं कनेक्शन - और उन मामलों में, अब हमारे पास 'प्रमाणीकरण' समस्या नहीं है, हमारे पास एक वास्तविक फ्रैंचाइज़ी आकार का पुल है -प्लग फ्यूबर की स्थिति
प्रतिवाद का दूसरा भाग: गैर - मान्यता प्राप्त आईपी के सिस्टम-वाइड थ्रॉटलिंग
एक ओपन-रजिस्ट्रेशन वेब सेवा के लिए एक श्वेतसूची का काम करने के लिए, जहां उपयोगकर्ता कंप्यूटर को अक्सर स्विच करते हैं और / या गतिशील आईपी पते से कनेक्ट करते हैं, हमें गैर-मान्यता प्राप्त आईपी से कनेक्ट होने वाले उपयोगकर्ताओं के लिए एक 'बिल्ली का दरवाजा' खुला रखने की आवश्यकता है। चाल यह है कि दरवाजे को डिजाइन किया जाए ताकि बॉटनेट फंस जाएं, और इसलिए वैध उपयोगकर्ता यथासंभव कम परेशान होते हैं ।
मेरी योजना में, यह एक की स्थापना द्वारा हासिल की है बहुत से अधिक अननुमोदित आईपी से विफल लॉगिन प्रयास की प्रतिबंधात्मक अधिकतम संख्या, कहते हैं, एक 3 घंटे की अवधि, (यह सेवा के प्रकार के आधार कम या लंबी अवधि का उपयोग करने के लिए समझदार हो सकता है) और उस प्रतिबंध को वैश्विक बनाना , अर्थात। सभी उपयोगकर्ता खातों के लिए।
यहां तक कि एक धीमी (प्रयासों के बीच 1-2 मिनट) क्रूर बल का पता लगाया जाएगा और इस पद्धति का उपयोग करके जल्दी और प्रभावी रूप से विफल किया जाएगा। बेशक, एक बहुत ही धीमी गति से चलने वाली बल बल अभी भी किसी का ध्यान नहीं जा सकता है, लेकिन बहुत धीमी गति से जानवर बल के हमले के बहुत उद्देश्य को पराजित करता है।
इस थ्रॉटलिंग मैकेनिज्म से मैं जो उम्मीद कर रहा हूं, वह यह है कि अगर अधिकतम सीमा पूरी हो जाए, तो हमारा 'कैट डोर' स्लैम कुछ समय के लिए बंद हो जाता है, लेकिन हमारा फ्रंट डोर सामान्य तरीकों से कनेक्ट करने वाले वैध उपयोगकर्ताओं के लिए खुला रहता है:
- या तो उनके किसी मान्यता प्राप्त आईपी से जुड़कर
- या लगातार लॉगिन कुकी का उपयोग करके (कहीं से भी)
केवल वैध उपयोगकर्ता जो किसी हमले के दौरान प्रभावित होंगे - यानी। जबकि थ्रॉटलिंग सक्रिय हो गया था - बिना किसी निरंतर स्थान के लॉग इन कुकीज़ वाले उपयोगकर्ता होंगे जो किसी अज्ञात स्थान से या डायनामिक आईपी से लॉग इन कर रहे थे। उन उपयोगकर्ताओं को तब तक लॉगिन करने में असमर्थ होगा जब तक कि थ्रॉटलिंग बंद नहीं हो जाती (जो संभावित रूप से थोड़ी देर लग सकती है, अगर हमलावर ने थ्रॉटलिंग के बावजूद अपने बॉटनेट को चालू रखा)।
उपयोगकर्ताओं के इस छोटे उपसमूह को अन्यथा सील बिल्ली के दरवाजे के माध्यम से निचोड़ने की अनुमति देने के लिए, भले ही बॉट अभी भी इस पर दूर से हथौड़ा मार रहे थे, मैं कैप्चा के साथ एक 'बैकअप' लॉगिन फ़ॉर्म को नियुक्त करूंगा। ताकि, जब आप "क्षमा करें, लेकिन आप इस आईपी पते से पल में लॉग इन न कर सकें" संदेश प्रदर्शित करते हैं, तो एक लिंक शामिल करें जो कहता है कि " सुरक्षित बैकअप लॉगिन - HUMANS ONLY ( bots: no lie ) "। एक तरफ मजाक करें, जब वे उस लिंक पर क्लिक करते हैं, तो उन्हें साइट-थ्रॉटलिंग को दरकिनार करने वाले reCAPTCHA-प्रमाणीकृत लॉगिन फ़ॉर्म दें। इस तरह, यदि वे मानव हैं और सही लॉगिन + पासवर्ड जानते हैं (और कैप्चा पढ़ने में सक्षम हैं), तो उन्हें कभी भी सेवा से वंचित नहीं किया जाएगा , भले ही वे एक अज्ञात होस्ट से कनेक्ट हो रहे हों और ऑटोलॉगिन कुकी का उपयोग न कर रहे हों।
ओह, और सिर्फ स्पष्ट करने के लिए: चूंकि मैं CAPTCHAs को आम तौर पर बुरा मानता हूं, इसलिए 'बैकअप' लॉगिन विकल्प केवल तब दिखाई देगा जब थ्रॉटलिंग सक्रिय था ।
इस बात से कोई इंकार नहीं है कि इस तरह का एक निरंतर हमला अभी भी DoS के हमले का एक रूप होगा, लेकिन वर्णित प्रणाली के साथ, यह केवल यह प्रभावित करेगा कि मुझे उपयोगकर्ताओं के छोटे उपसमूह होने पर क्या संदेह है, अर्थात् ऐसे लोग जो उपयोग नहीं करते हैं "मुझे याद रखें" कुकी और हमला करते समय लॉगिंग हो सकती है और उनके किसी भी सामान्य आईपी से लॉगिंग नहीं हो रही है और जो कैप्चा नहीं पढ़ सकते हैं। केवल वे जो उन सभी मानदंडों को नहीं कह सकते हैं - विशेष रूप से बॉट और वास्तव में अशुभ विकलांग लोग - एक बॉट हमले के दौरान दूर हो जाएंगे।
संपादित करें: वास्तव में, मैंने एक तरीका सोचा था कि कैप्चा-चुनौती वाले उपयोगकर्ताओं को 'लॉकडाउन' के दौरान भी गुजरने दिया जाए: इसके बजाय, या पूरक के रूप में, बैकअप कैप्चा लॉगिन, उपयोगकर्ता को एक एकल-उपयोग करने का विकल्प प्रदान करता है। , उपयोगकर्ता-विशिष्ट लॉकडाउन कोड को उसके ईमेल पर भेजा जाता है, जिसे वह थ्रॉटलिंग को बायपास करने के लिए उपयोग कर सकता है। यह निश्चित रूप से मेरे 'झुंझलाहट' सीमा से अधिक है, लेकिन चूंकि यह केवल उपयोगकर्ताओं के एक छोटे से उपसमूह के लिए अंतिम उपाय के रूप में उपयोग किया जाता है , और चूंकि यह अभी भी आपके खाते से बाहर बंद किया जा रहा है, इसलिए यह स्वीकार्य होगा।
(इसके अलावा, ध्यान दें कि अगर हमले का वर्णन मेरे द्वारा बताए गए खराब वितरित संस्करण की तुलना में हमले से कम नहीं है, तो ऐसा कुछ नहीं है। यदि हमला केवल कुछ आईपी से हो रहा है या केवल कुछ उपयोगकर्ता नामों को मार रहा है, तो यह बहुत पहले ही विफल हो जाएगा। और कोई साइट-व्यापी परिणाम नहीं)
इसलिए, यह प्रतिवाद है जिसे मैं अपने ऑर्टिकल लाइब्रेरी में लागू करूंगा, एक बार मुझे यकीन हो जाएगा कि यह ध्वनि है और यह बहुत सरल समाधान नहीं है जिसे मैंने याद किया है। तथ्य यह है कि, सुरक्षा में चीजों को गलत करने के बहुत सारे सूक्ष्म तरीके हैं, और मैं गलत धारणाएं या निराशाजनक दोषपूर्ण तर्क देने से ऊपर नहीं हूं। तो कृपया, किसी भी और सभी प्रतिक्रिया, आलोचना और सुधार, सूक्ष्मता आदि की बहुत सराहना की जाती है।