मैं कैसे निर्धारित कर सकता हूं कि किसी की SSH कुंजी में खाली पासफ़्रेज़ शामिल है?


44

मेरे कुछ लिनक्स और फ्रीबीएसडी सिस्टम में दर्जनों उपयोगकर्ता हैं। कर्मचारी SSH के इन "ssh गेटवे" नोड्स का उपयोग अन्य आंतरिक सर्वरों में करेंगे।

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

मैं कैसे बता सकता हूं कि कोई निजी कुंजी एन्क्रिप्टेड नहीं है (जैसे पासफ़्रेज़ शामिल नहीं है)? क्या ASCII- बख़्तरबंद कुंजी बनाम गैर-ASCII- बख़्तरबंद कुंजी पर ऐसा करने के लिए एक अलग विधि है?

अपडेट करें:

स्पष्ट करने के लिए, मान लें कि मेरे पास मशीन पर सुपरयुसर पहुंच है और मैं हर किसी की निजी चाबियों को पढ़ सकता हूं।


2
गड़बड़ी ssh- एजेंट की गड़गड़ाहट गेटवे पर कोई भी निजी कुंजी नहीं होनी चाहिए।
derobert

कुछ पांडित्य नोट्स: - उपयोगकर्ता अक्सर खराब पासफ़्रेज़ रखते हैं । - उपयोगकर्ता पासफ़्रेज़ बदल सकते हैं। - उपयोगकर्ता कई स्थानों पर अपनी चाबियाँ संग्रहीत कर सकते हैं। - उपयोगकर्ताओं को ssh एजेंट का उपयोग करने की संभावना है, ताकि वे एक बार कुंजी को अनलॉक कर सकें, अपने लैपटॉप पर कह सकते हैं।
बेन हाइड

जवाबों:


59

खैर, खाली पासफ़्रेज़ वाली ओपनएसएसएच निजी कुंजी वास्तव में एन्क्रिप्टेड नहीं हैं।

निजी कुंजी फ़ाइल में एन्क्रिप्टेड निजी कुंजियाँ घोषित की जाती हैं। उदाहरण के लिए:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BD2F97F977F71FC

BT8CqbQa7nUrtrmMfK2okQLtspAsZJu0ql5LFMnLdTvTj5Sgow7rlGmee5wVuqCI
/clilpIuXtVDH4picQlMcR+pV5Qjkx7BztMscx4RCmcvuWhGeANYgPnav97Tn/zp
...
-----END RSA PRIVATE KEY-----

तो कुछ ऐसा है

# grep -L ENCRYPTED /home/*/.ssh/id_[rd]sa

चाल चलनी चाहिए।


3
@ jmanning2k: मैंने सिर्फ एक आरएसए निजी कुंजी बनाई है जिसमें कोई पासफ़्रेज़ नहीं है, और इसमें स्ट्रिंग 'एन्क्रिप्शन: कोई नहीं' नहीं है।
स्टीफन लासिवस्की

@ jmanning2k: -Lध्वज केवल फ़ाइल नामों को सूचीबद्ध करता है जो पैटर्न से मेल नहीं खाते हैं। तो यह उत्तर अपने आप ही सही है।
बहमट

मैं सही खड़ा हूँ, टिप्पणी स्पष्टता के लिए हटा दिया गया। रिकॉर्ड के लिए, मेरे पास कुछ कॉपी की गई निजी कुंजी फाइलें हैं, जो 'एन्क्रिप्शन: कोई नहीं' पढ़ती हैं।
jmanning2k

2
या स्ट्रिंग OPENSSH: tedunangst.com/flak/post/…
Jack Wasey

10

मैंने इसके लिए सब कुछ देखा और कभी भी संतोषजनक जवाब नहीं मिला, लेकिन मैं एक निर्माण करने में कामयाब रहा, इसलिए ...

ध्यान दें कि यह फ़ाइल को अपडेट करेगा यदि यह काम करता है, इसलिए यदि आप उन उपयोगकर्ताओं द्वारा ध्यान नहीं देने का प्रयास कर रहे हैं जिनकी कुंजी आप परीक्षण कर रहे हैं, तो आप पहले कुंजी की प्रतिलिपि बनाना चाह सकते हैं। OTOH, चूँकि आपने अपने उपयोगकर्ता को पासवर्ड रहित कुंजी के साथ पकड़ा है, हो सकता है कि आपको ध्यान न हो कि वे नोटिस करते हैं। : डी

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Key has comment '/home/rlpowell/.ssh/KEYTEST'
Your identification has been saved with the new passphrase.
$ echo $?
0

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Bad passphrase.
$ echo $?
1

3
-N ''इसके बजाय क्यों नहीं कि पासफ़्रेज़ को हमेशा अपरिवर्तित छोड़ दिया जाए?
अपने मॉड का अच्छी तरह से इलाज करें

facepalm यह एकदम सही है, बहुत बहुत धन्यवाद।
rlpowell

+1 क्योंकि यह समाधान SSH के नए निजी कुंजी प्रारूप के साथ भी काम करता है।
सेबेस्टियन क्रिम्समेंस्की

8

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

यदि आपके पास निजी कुंजी तक पहुंच नहीं है, तो मुझे संदेह है कि आप इसका पता लगा सकते हैं। पासफ़्रेज़ का उद्देश्य निजी कुंजी को "अनलॉक" करना है, सार्वजनिक कुंजी के संबंध में इसका कोई कार्य नहीं है।

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

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