गलत पासवर्ड दर्ज करने के बाद एक बड़ी देरी क्यों है?


89

मैं पासवर्ड के बारे में एक अजीब (मेरे अनुसार, अच्छी तरह से) नोटिस करता हूं। उदाहरण के लिए, यदि मैं लॉगिन के दौरान गलत पासवर्ड टाइप करता हूं, तो सिस्टम द्वारा मुझे बताने से पहले कुछ सेकंड की देरी होगी। जब मैं sudoएक गलत पासवर्ड के साथ कोशिश करता हूं, तो मुझे शेल के "सॉरी, फिर से प्रयास करें" कहने से पहले इंतजार करना होगा।

मुझे आश्चर्य है कि एक गलत पासवर्ड को "पहचान" करने में इतना समय क्यों लगता है? यह मेरे द्वारा उपयोग किए जाने वाले कई वितरणों (और यहां तक ​​कि OSX) पर देखा गया है, इसलिए मुझे लगता है कि यह कोई वितरण विशिष्ट चीज नहीं है।


मैंने इसे न केवल टर्मिनल में देखा है, बल्कि स्टार्टअप के बाद प्रारंभिक सत्र लॉगिन पर या जब लैपटॉप स्लीप मोड में है। राइट पासवर्ड पर अनलॉक करना तात्कालिक है, हालांकि इस सवाल को देखकर खुशी हुई :)
krozaine

जवाबों:


92

यह एक सुरक्षा बात है, वास्तव में इसे महसूस करने में देर नहीं लगती। 2 भेद्यताएँ इस हल करती हैं:

  1. यह थ्रॉटल लॉगिन प्रयास करता है, जिसका अर्थ है कि कोई व्यक्ति सिस्टम को तेज़ नहीं कर सकता क्योंकि यह दरार करने की कोशिश कर सकता है (1M एक सेकंड का प्रयास करता है? मुझे नहीं पता)।

  2. यदि उसने ऐसा किया था जैसे ही यह सत्यापित किया गया था कि आपकी साख गलत है, तो आप अपनी साख को अमान्य करने के लिए अपने क्रेडेंशियल्स को अमान्य बनाने में लगने वाले समय का उपयोग कर सकते हैं यदि आपकी साख का हिस्सा सही था, तो नाटकीय रूप से अनुमान लगाने के समय को कम करना।

इन 2 चीजों को रोकने के लिए सिस्टम को इसे करने के लिए निश्चित समय लगता है, मुझे लगता है कि आप प्रतीक्षा समय को PAM ( माइकल्स जवाब देखें ) के साथ कॉन्फ़िगर कर सकते हैं ।

सिक्योरिटी इंजीनियरिंग ( 2ed , amazon | 1ed, free ) इन समस्याओं का बहुत बेहतर विवरण देता है।


4
// ऑफॉप्टिक जी
नॉट

2
आपका सहबद्ध लिंक स्वचालित रूप से SE, btw के लिए फिर से लिखा गया था।
१०:५० पर जिलेटिन

1
@ त्सेपंग: अध्याय २ देखें , विशेष रूप से and2.4 और .32.5.3.3।
गिल्स

4
पासवर्ड हैश की तुलना करते समय शुरुआती और देर से विफलता के बीच का अंतर नैनोसेकंड में मापा जाता है। उचित कोडिंग (निरंतर समय मेमोरी तुलना) के साथ बिल्कुल भी कोई अंतर नहीं है। देरी को जोड़ने का कोई औचित्य नहीं है।
कोडइन्चोस

2
मैं CodesInChaos से सहमत हूं: उत्तर का दूसरा बिंदु गलत है। वास्तव में क्या हो रहा है, निम्नलिखित है: 1. आपके इनपुट के एक हैश की गणना की जाती है; 2. उस हैश की तुलना संग्रहीत हैश (हर बाइट की तुलना में, भले ही अंतर पहले से पाया गया हो); ध्यान दें, कि ये दो चरण किसी भी तरह से तेज़ या धीमे नहीं हैं, यह इस बात पर निर्भर करता है कि आपने जो पासवर्ड डाला था वह सही था। (और जैसा कि अन्य लोग पहले ही बता चुके हैं, नींद की अवधि को जोड़ना समय पर हमले को ठीक नहीं करेगा अगर यह संभव हो)
उदाहरण

41

यह जानबूझकर किया गया है, जानवर की जबरदस्ती की कोशिश करने और सीमित करने के लिए। आप आम तौर पर FAIL_DELAYकॉन्फ़िगरेशन प्रविष्टि की तलाश में /etc/login.defsऔर इसके मूल्य को बदलकर इसे संशोधित कर सकते हैं (मेरा 3डिफ़ॉल्ट रूप से सेकंड है), हालांकि उस फ़ाइल में टिप्पणी से यह लगता है जैसे PAM कम से कम एक 2दूसरी देरी लागू करेगा चाहे कोई भी हो


9
यह केवल पाशविक बल से अधिक को रोकने के लिए है। लेकिन बोनस यह कहाँ कॉन्फ़िगर करने के लिए जानने के लिए अंक।
xenoterracide

5
मुझे लगता है कि fail_delay भी कॉन्फ़िगर करने योग्य है /etc/pam.d/login। तलाश करेंpam_faildelay.so delay=
स्टीवन डी

8
क्या आप सूदो के लिए एक आवरण लिखने से रोकते हैं जो एक नया सुडोल उदाहरण शुरू करता है एक बार एक प्रयास के भीतर काम नहीं करता है, कहते हैं, 0.1 सेकंड?
Janus Troelsen

11

आधुनिक लिनक्स सिस्टम पर, इसका कारण यह है कि pam_unix.so इतनी देरी लगाता है। जैसा कि पहले बताया गया है, इसे बदलकर दो सेकंड में कॉन्फ़िगर किया जा सकता FAIL_DELAYहै /etc/login.defs। यदि आप विलंब को और कम करना चाहते हैं, तो आपको "nodelay" विकल्प pam_unix.so देना होगा। उदाहरण के लिए, मेरे सिस्टम पर, यदि आप शामिल करना शुरू करते हैं /etc/pam.d/sudo, तो आपको लगता है कि आपको निम्नलिखित पंक्ति को संपादित करना होगा /etc/pam.d/system-auth:

auth      required  pam_unix.so     try_first_pass nullok

और इसे इसे बदल दें:

auth      required  pam_unix.so     try_first_pass nullok nodelay

दुर्भाग्य से, जिस तरह से मेरा लिनक्स डिस्ट्रो (आर्क) चीजों को कॉन्फ़िगर करता है, वही system-authफ़ाइल उसी के द्वारा शामिल हो जाती है system-remote-login, जिसका उपयोग sshd द्वारा किया जाता है।

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

व्यक्तिगत रूप से, मुझे लगता है कि सुडो पर देरी (और सिग्न्ट की अनदेखी करना) एक बड़ी गलती है। इसका मतलब है कि जिन उपयोगकर्ताओं को पता है कि उन्होंने पासवर्ड गलत किया है, वे इस प्रक्रिया को नहीं मार सकते और निराश हो सकते हैं। बेशक, आप अभी भी sudo को Ctrl-Z के साथ रोक सकते हैं, क्योंकि sudo SIGTSTP को नहीं पकड़ता है, और इसे रोकने के बाद आप इसे किल -9 (SIGKILL) से मार सकते हैं। यह सिर्फ करने के लिए कष्टप्रद है। तो इसका मतलब है कि एक स्वचालित हमला एक सुपर उच्च दर पर छद्म टर्मिनलों पर sudos से आग लगा सकता है। लेकिन देरी वैध उपयोगकर्ताओं को निराश करती है और उन्हें फिर से सूडो होने से बचने के लिए बाहर निकलने के बजाय अपने मूल गोले को निलंबित करने के लिए प्रोत्साहित करती है।


1
फेडोरा के साथ भी। बहुत बढ़िया विश्लेषण
स्वतंत्रता

शानदार जवाब। मैं यह भी सोच रहा था कि FAIL_DELAY आधुनिक डेस्कटॉप सिस्टम में अप्रचलित हो गया है। आपको विभाजन / हार्ड ड्राइव एन्क्रिप्शन पर भरोसा करना चाहिए और कुछ नहीं। आमतौर पर, कोई दूसरा उपयोगकर्ता नहीं है जो बल पासवर्ड को बल देने की कोशिश कर सकता है। हालाँकि , संभावित रूप से दुर्भावनापूर्ण प्रोग्राम एक असुरक्षित FAIL_DELAY का दुरुपयोग कर सकते हैं और इस प्रकार रूट एक्सेस प्राप्त कर सकते हैं।
दर्शन २

pam-unix को nodelayसेट करके प्रतीक्षा समय को 0 तक सेट किया जा सकता है, और FAIL_DELAY को इसके बाद नजरअंदाज कर दिया जाता है।
15:29 पर phil294

देरी को अक्षम क्यों न करें, और फिर दूरस्थ पासवर्ड लॉगिन (SSH-only) को अक्षम करें? किसी भी सुरक्षा भेद्यता शुरू किए बिना समस्या का समाधान नहीं करता है?
रेडन रोसबोरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.