2010-06-03 5 views
13

मैं हमारी वेबसाइट पर एक आरएसटीएफ एपीआई लागू करने जा रहा हूं (डब्ल्यूसीएफ डेटा सेवाओं के आधार पर, लेकिन शायद इससे कोई फर्क नहीं पड़ता)।रीस्टफुल डेटा सेवाओं पर ब्रूट फोर्स हमलों को कैसे रोकें

इस API के माध्यम से पेश किए गए सभी डेटा मेरे सर्वर के कुछ उपयोगकर्ताओं से संबंधित हैं, इसलिए मुझे यह सुनिश्चित करना होगा कि केवल उन उपयोगकर्ताओं को मेरे संसाधनों तक पहुंच हो। इस कारण से, अनुरोध के हिस्से के रूप में सभी अनुरोधों को लॉगिन/पासवर्ड संयोजन के साथ किया जाना है।

इस परिदृश्य में ब्रूट फोर्स हमलों को रोकने के लिए अनुशंसित दृष्टिकोण क्या है?

मैं गलत प्रमाण-पत्रों के कारण विफल अनुरोधों से इनकार कर रहा था और असफल अनुरोधों की एक निश्चित सीमा पार होने के बाद उसी आईपी से उत्पन्न अनुरोधों को अनदेखा करने के बारे में सोच रहा था। क्या यह मानक दृष्टिकोण है, या क्या मुझे कुछ याद आ रही है?

उत्तर

8

आईपी-आधारित अवरोधन स्वयं एनएटी गेटवे की संख्या के कारण जोखिम भरा है।

यदि आप बहुत से अनुरोध तुरंत करते हैं तो आप क्लाइंट को धीमा कर सकते हैं (टैर पिट); यानी जानबूझकर जवाब देने से पहले कुछ सेकंड की देरी डालें। मनुष्य शिकायत करने की संभावना नहीं है, लेकिन आप बॉट धीमा कर दिया है।

+7

एचएम, आप कैप्चा को रीस्टफुल एपीआई में कैसे रखना चाहते हैं? AFAIU सभी ग्राहकों को मनुष्यों के रूप में नहीं माना जाता है। – SergGr

+0

अच्छा बिंदु, मुझे रीस्टफुल बिट पर झपकी होनी चाहिए। मुश्किल। – crazyscot

+0

एक कैप्चा वह है जिसे मैं अभी अपनी नियमित वेबसाइट के लिए उपयोग कर रहा हूं। लेकिन जैसा कि आईफोन शुरुआती ने बताया, यह एक आरामदायक एपीआई के लिए एक विकल्प नहीं है। हालांकि Tarpitting एक अच्छा विचार हो सकता है। –

3

मैं उसी वेबसाइट का उपयोग करता हूं जैसा मैं एक वेबसाइट के साथ करता हूं। किसी निश्चित विंडो में असफल लॉगिन प्रयासों की संख्या का ट्रैक रखें - कुछ उचित अवधि के भीतर 3 (या 5 या 15) की अनुमति दें, 15 मिनट कहें। यदि थ्रेसहोल्ड पार हो गया है तो खाते को लॉक कर दें और लॉक आउट होने के समय को चिह्नित करें। आप इस घटना को भी लॉग कर सकते हैं। एक और उपयुक्त अवधि बीत जाने के बाद, एक घंटा कहें, खाता अनलॉक करें (अगले लॉगिन प्रयास पर)। सफल लॉगिन काउंटर और अंतिम लॉकआउट समय को रीसेट करते हैं। ध्यान दें कि आप वास्तव में लॉक आउट खाते पर लॉगिन का प्रयास नहीं करते हैं, आप बस लॉगिन विफल कर देते हैं।

यह किसी भी ब्रूट फोर्स अटैक को प्रभावी ढंग से रेट-सीमित कर देगा, जो एक उचित पासवर्ड के खिलाफ हमले को सफल करने की संभावना नहीं है। उपरोक्त मेरी संख्याओं का उपयोग करके एक हमलावर केवल 1.25hrs प्रति 3 (या 5 या 15) बार कोशिश करने में सक्षम होगा। अपने लॉग का उपयोग करके आप यह पता लगा सकते हैं कि उसी दिन एक ही खाते से एकाधिक लॉकआउट की तलाश करके ऐसा हमला संभवतः हो रहा था। चूंकि आपकी सेवा का उपयोग कार्यक्रमों द्वारा किया जाना है, एक बार सेवा तक पहुंचने वाले कार्यक्रम में इसके क्रेडेंशियल्स ठीक से सेट हो जाते हैं, फिर भी जब तक हमले में कोई हमला नहीं होता है तब तक यह लॉगिन विफलता का अनुभव नहीं करेगा। यह एक और संकेत होगा कि एक हमला हो सकता है। एक बार जब आप जानते हैं कि हमला प्रक्रिया में है, तो आप अपमानजनक आईपी तक पहुंच सीमित करने के लिए और यदि उचित हो, तो अधिकारियों को शामिल करने के लिए और उपाय बंद कर सकते हैं।

+2

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

+0

@ एड्रियन - हाँ, लेकिन यह एक अलग तरह की समस्या है। इसे हल करने के लिए आईपी-आधारित दृष्टिकोण का उपयोग करके आपकी सेवा वास्तव में अविश्वसनीय हो सकती है क्योंकि यह हो सकता है कि कोई उपयोगकर्ता पासवर्ड बदलने के बाद ही अपनी स्क्रिप्ट को अपडेट करना भूल गया हो।उस स्थिति में, उपयोगकर्ता बस समय बीतने तक प्रतीक्षा कर सकता है और आपको शामिल किए बिना पुनः प्रयास कर सकता है। लॉगिंग का उपयोग करके, आप अभी भी एक डॉस हमले का पता लगाने में सक्षम होंगे और नरभक्षी साइट से आईपी ब्लॉक डाल देंगे और इस तरह के मामले में, अधिकारियों को निश्चित रूप से कॉल करें। – tvanfosson