होस्ट कुंजियों पर रोल कैसे करें?


17

मैं अपने ssh सर्वर को 2048-बिट RSA कुंजियों से बड़ी कुंजियों में अपग्रेड करने का प्रयास कर रहा हूं, क्योंकि सिफारिशें जल्द ही 2048-बिट कुंजियों को चरणबद्ध करने की हैं।

मैंने एक नई कुंजी उत्पन्न की, फिर इसे sshd config में जोड़ा, जैसे:

HostKey / etc / ssh / ssh_host_rsa_key (पुरानी 2k-             बिट कुंजी पहले) 
HostKey / etc / ssh / ssh_host_rsa4096_key         (नई बड़ी कुंजी 2 )

पुनः आरंभ sshdकरने के बाद, मैं होस्ट को ssh'd करता हूं, मुझे पहचान में बदलाव की चेतावनी नहीं मिलती है, हालांकि नए को भी कैश नहीं किया जाता है ~/.ssh/known_hosts। अगर मैं लाइनों को विपरीत क्रम में रखता हूं, तो मुझे पहचान बदल गई चेतावनी मिलती है। इसी तरह, जब मैं एक ed25519 कुंजी जोड़ता हूं, तो कोई बात नहीं कि मैं इसे किस क्रम में रखता हूं, क्लाइंट ज्ञात होस्ट फ़ाइल में नई कुंजी नहीं जोड़ता है।

ऐसा लगता है कि SSH होस्ट कुंजी रोलओवर को असंभव बनाता है — यह विश्वास करना मुश्किल है कि वास्तव में मामला है, हालांकि, सुरक्षा को देखते हुए नियमित रूप से उन्नयन कुंजी की आवश्यकता होती है।

मुझे पता है कि आप बस कुंजी को स्वैप कर सकते हैं, फिर प्रत्येक ग्राहक ssh-keygen -Rको पुरानी कुंजी को हटाने के लिए चलाने की आवश्यकता है , फिर मैन्युअल रूप से सत्यापित करें और नई कुंजी को स्वीकार करें- लेकिन यह एक वास्तविक दर्द है, खासकर यदि आपके पास बहुत सारे क्लाइंट हैं जो कनेक्ट करते हैं या प्रशासन नहीं करते हैं सभी ग्राहक। उल्लेख नहीं करने के लिए, यदि आप ग्राहकों को प्रशासित नहीं करते हैं, तो एक बहुत अच्छा मौका है कि वे वास्तव में मेजबान कुंजी की जांच नहीं करेंगे और इसके बजाय केवल वाई मारा- इसलिए सुरक्षा में सुधार करने का प्रयास वास्तव में आपको मानव-में खोल देगा। इसके बजाय मध्य-हमला।

क्या SSH होस्ट कुंजी उन्नयन कार्य करने का कोई तरीका है? यही है, ग्राहकों को नई अधिक सुरक्षित कुंजी सीखनी चाहिए (और उम्मीद की अप्रचलित कुंजी को भी सीखना चाहिए)। और मेजबान कुंजी दिए बिना मैन-इन-द-बीच की चेतावनी को बदल दिया।


कृपया पर एक नजर है इस । हालांकि यह अभी जो आप चाहते हैं उसके लिए कोई समाधान प्रदान नहीं करता है, यह आपको भविष्य में अपने अंतिम लक्ष्यों को प्राप्त करने में मदद कर सकता है।
रदा

जवाबों:


14

होस्ट कुंजी रोटेशन OpenSSH 6.8 (क्लाइंट और सर्वर दोनों इस संस्करण में समर्थन जोड़ता है) के बाद से समर्थित है।

तो प्रक्रिया को इस तरह काम करना चाहिए:

  • HostKey newkey(मौजूदा वाले के बाद) विकल्प के साथ नई कुंजी उत्पन्न करें और जोड़ें/etc/ssh/sshd_config
  • पुनर्प्रारंभ करें sshd
  • ग्राहकों को UpdateHostKeys yesअपने विन्यास में स्थापित करना होगा (या तो विश्व स्तर पर, या प्रति-होस्ट)
  • कनेक्ट करने वाले क्लाइंट सभी नई चाबियां लेंगे
  • कुछ समय (महीनों) के बाद आप पुरानी कुंजियों को sshd_configफिर से शुरू और हटा सकते हैंsshd
  • क्लाइंट (जो संक्रमण अवधि के दौरान जुड़े हुए हैं) पहले से ही नई चाबियाँ होंगी (पुराने को हटाया नहीं जाएगा, जो कि यहां एकमात्र समस्या है) और वे मिटम हमले की चेतावनी नहीं दिखाएंगे।

नए पर्याप्त-ग्राहक नई कुंजी लेने में सक्षम होंगे। यह सुविधा डिफ़ॉल्ट रूप से सक्षम नहीं है, शायद इसलिए कि यह काफी नया है और जल्द ही कुछ सुरक्षा पर विचार करता है। लेकिन इन दिनों, इसका उपयोग करना ठीक होना चाहिए।


-4

sshd हमेशा पहली लाइन का उपयोग करें, इसलिए इसे हटाएं, फिर sshd को पुनरारंभ करें।


1
... कि डरावनी मेजबान कुंजी में परिणाम चेतावनी बदल गया है। इससे बचने की कोशिश करते हुए, क्लाइंट नई कुंजी सीखते हैं (और पुराने को चरणबद्ध करते हैं)।
derobert

तुम सही हो। आप एक समय में 2 विभिन्न कुंजियों का उपयोग नहीं कर सकते। ssl tls नहीं है। सिर्फ बदलने के लिए कोई कुंजी जोड़ने की सुविधा नहीं है।

4
यह न तो एसएसएल है और न ही टीएलएस। प्रोटोकॉल कई मेजबान कुंजी का समर्थन करता है - उदाहरण के लिए, यह सभी के लिए आरएसए और डीएसए कुंजी दोनों का उपयोग करता था। अब यह आम तौर पर ED25519, ECDSA और RSA कुंजी है।
derobert
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.