सार्वजनिक ssh कुंजी का उपयोग करने का जोखिम


10

मेरे पास सर्वर ए और सर्वर बी (बैकअप) है, और मैं सोच रहा था, अगर कोई व्यक्ति सर्वर ए में टूट जाता है, तो क्या यह सर्वर बी में टूटने के लिए संभावित रूप से खतरनाक हो सकता है अगर मैंने ssh सार्वजनिक कुंजी का उपयोग करके पासवर्ड रहित लॉगिन कॉन्फ़िगर किया है?

मैं rsnapshot सेटअप करने का प्रयास कर रहा हूं।

धन्यवाद

ssh 

जवाबों:


21

हां, यह पासवर्ड रहित SSH कुंजी के साथ समस्याओं में से एक है। यदि आप सर्वर A पर एक निजी कुंजी संग्रहीत करते हैं, जो आपको सर्वर B से कनेक्ट करने की अनुमति देता है, तो सर्वर A तक पहुँच प्रभावी रूप से सर्वर B तक पहुँच प्राप्त कर रहा है (रिवर्स रिवर्स सच नहीं है - सर्वर B तक पहुँच प्राप्त करने का परिणाम नहीं होगा सर्वर ए का तत्काल समझौता, यह मानते हुए कि आपके पास उस दिशा में पासवर्ड रहित लॉगिन की अनुमति देने के लिए एसएसएच कुंजी नहीं है।

इसे कम करने के लिए आप कुछ चीजें कर सकते हैं:

  • यदि प्रक्रिया पूरी तरह से स्वचालित होने की आवश्यकता नहीं है, तो अपने SSH कुंजी में एक पासवर्ड जोड़ें। (यह शायद आपके लिए काम नहीं करेगा, क्योंकि आप ध्यान दें कि यह बैकअप के लिए है)
  • कई मशीनों के लिए अपने स्वयं के खाते के तहत पासवर्ड रहित लॉगिन के लिए, मैं अनुशंसा करता हूं कि आप प्रत्येक मशीन की भौतिक रूप से टाइप करें, और जब आप इसका उपयोग करते हैं, तो कुंजी को मेमोरी में स्टोर करने के लिए SSH एजेंट का उपयोग करें। एजेंट अग्रेषण आपको प्रत्येक दूरस्थ होस्ट पर कुंजियाँ बनाए बिना होस्ट से होस्ट करने के लिए "हॉप" करने की अनुमति देनी चाहिए।
  • स्वचालित, पासवर्ड रहित SSH कुंजियों के लिए, मैं सलाह देता हूं कि उन कमांड्स को प्रतिबंधित करें जो कुंजी चला सकती हैं। अपनी authorized_keysफ़ाइल में, अपनी प्रत्येक कुंजी के साथ उपसर्ग करें:
    command="<allowed command line here>",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty

8-9 साल पहले मैंने सैकड़ों स्थानीय उपयोगकर्ताओं के साथ साझा उपयोगकर्ता वातावरण में काम किया था, और SSH कुंजी-आधारित लॉगिन अक्षम थे क्योंकि कुंजी पर पासवर्ड नीतियों को लागू करने का कोई तरीका नहीं था। जब तक आप परिदृश्य को पूरी तरह से नियंत्रित कर रहे हैं, आजकल SSH कुंजी निश्चित रूप से केवल पासवर्ड का उपयोग करने से बेहतर है।


7

हां, इंटरनेट पर अधिकांश गाइड पासवर्डलेस ssh को काम करने के लिए रोकते हैं, बजाय इसे सुरक्षित रूप से काम करने के। यह मार्गदर्शिका यह दिखाने का अच्छा काम करती है कि जोखिमों को कम करने के लिए क्या किया जा सकता है। मूल रूप से (लेख को उद्धृत करने के लिए):

  • नौकरी के लिए एक ही उद्देश्य भूमिका खाता बनाएँ: यानी dnssyncप्रत्येक मशीन पर एक उपयोगकर्ता
  • यदि संभव हो, तो रूट होने पर निर्भर होने के बजाय, उस उपयोगकर्ता द्वारा फ़ाइलों को लिखने योग्य बनाएं
  • उन बिट्स के लिए जिन्हें वास्तव में विशेषाधिकार प्राप्त उपयोग की आवश्यकता है, इसे करने के लिए एक स्क्रिप्ट बनाएं और सुडो का उपयोग करें
  • पासफ़्रेज़-कम कुंजियों को प्रतिबंधित करने के लिए फ़ाइलों में उपयोग command=और from=विकल्पauthorized_keys
  • फाइल ट्रांसफर करने के लिए, रिसीप करने पर, रिसीविंग मशीन पर, ऐसा करने के लिए एक स्क्रिप्ट लिखें , ताकि रिमोट एक्सेस को केवल पढ़ा जा सके
  • यदि इसका अर्थ है कि रिमोट मशीन से आरंभ करने वाली मशीन तक पहुँच आवश्यक है, ssh-agentतो दूसरी पासफ़्रेज़-कम कुंजी बनाने के बजाय उपयोग करें

4

Ssh कुंजी के साथ कुछ समस्याएं हैं:

कुंजी को निरस्त करने का कोई केंद्रीकृत तरीका नहीं।

कुंजी पर पासवर्ड नीतियों को लागू करने का कोई तरीका नहीं है (क्या आपकी निजी कुंजी एन्क्रिप्ट की गई है, और यदि ऐसा है तो इसे एक अच्छे पासवर्ड के साथ एन्क्रिप्ट किया गया है?)।

ये समस्याएं हैं केर्बेरोस सॉल्व। यह दूसरों का परिचय देता है, हालांकि, इसे लागू करने के लिए अधिक जटिल है और तैनात करने और प्रबंधित करने के लिए एक वास्तविक उपयोगकर्ता प्रबंधन बुनियादी ढांचे की आवश्यकता होती है।

किसी भी मामले में, हालांकि ssh अधिकृत_कीप्स मॉरिस-वर्म प्रकार के हमलों के लिए अनुमति देते हैं , यह मील (प्रकाश-वर्ष) द्वारा अभी भी .r सेवाओं और टेलनेट से बेहतर है।


यदि आप LDAP का उपयोग कर रहे हैं, तो आप सार्वजनिक कुंजी को निर्देशिका में संग्रहीत कर सकते हैं और फिर (OpenSSH-LPK पैच) का उपयोग कर सकते हैं [ code.google.com/p/openssh-lpk/] - यह पहली समस्या को हल करने में मदद करता है, हालाँकि आप के रूप में अब नए SSH बायनेरिज़ के निर्माण और वितरण के लिए समग्र लाभ नकारात्मक हो सकता है।
ज़ेन्ची

यह दिलचस्प है, लेकिन ऐसा लगता है कि यह केर्बरोस स्थापित करने के रूप में लगभग उतना ही काम होगा।
क्रिस

2

जिस किसी भी वातावरण में मैंने नियंत्रण किया है, मैं हमेशा सेवा खातों के लिए न्यूनतम संभव विशेषाधिकार के लिए एक वास्तविक स्टिकर रहा हूं।

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

इस मामले में भी, आप अभी भी स्थानीय विशेषाधिकार वृद्धि कीड़ों के अधीन हैं, इसलिए सावधानीपूर्वक रहें और सुरक्षा बगों पर सख्ती से नज़र रखें।

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