
यह पपेट मॉड्यूल सुरक्षित ssh-client और ssh-server कॉन्फ़िगरेशन प्रदान करता है।
truecbc_required = false - true यदि सिफर के लिए CBC आवश्यक है। यह आमतौर पर केवल तभी आवश्यक है, जब पुराने M2M तंत्र को SSH के साथ संचार करने की आवश्यकता हो, जिनमें कॉन्फ़िगर किए गए किसी भी सुरक्षित सिफर सक्षम नहीं हैं। CBC एक कमज़ोर विकल्प है। इससे कमज़ोर कुछ भी टाला जाना चाहिए और इसलिए उपलब्ध नहीं है।weak_hmac = false - true यदि कमज़ोर HMAC तंत्र आवश्यक हैं। यह आमतौर पर केवल तभी आवश्यक है, जब पुराने M2M तंत्र को SSH के साथ संचार करने की आवश्यकता हो, जिनमें कॉन्फ़िगर किए गए किसी भी सुरक्षित HMAC सक्षम नहीं हैं।weak_kex = false - true यदि कमज़ोर कुंजी-विनिमय (KEX) तंत्र आवश्यक हैं। यह आमतौर पर केवल तभी आवश्यक है, जब पुराने M2M तंत्र को SSH के साथ संचार करने की आवश्यकता हो, जिनमें कॉन्फ़िगर किए गए किसी भी सुरक्षित KEX सक्षम नहीं हैं।allow_root_with_key = false - रूट लॉगिन को पूरी तरह से अक्षम करने के लिए false। रूट को कुंजी-आधारित तंत्र के माध्यम से लॉगिन करने की अनुमति देने के लिए true पर सेट करें।ports = [ 22 ] - वे पोर्ट जिन पर ssh-server को सुनना चाहिए और ssh-client को कनेक्ट होना चाहिएlisten_to = [ "0.0.0.0" ] - एक या अधिक IP पते, जिन पर ssh-server को सुनना चाहिए। डिफ़ॉल्ट खाली है, लेकिन सुरक्षा कारणों से कॉन्फ़िगर किया जाना चाहिए!remote_hosts - एक या अधिक होस्ट, जिनसे ssh-client कनेक्ट हो सकता है। डिफ़ॉल्ट खाली है, लेकिन सुरक्षा कारणों से कॉन्फ़िगर किया जाना चाहिए!allow_tcp_forwarding = false - TCP फ़ॉरवर्डिंग की अनुमति देने के लिए true पर सेट करेंallow_agent_forwarding = false - एजेंट फ़ॉरवर्डिंग की अनुमति देने के लिए true पर सेट करेंuse_pam = false - PAM प्रमाणीकरण अक्षम करने के लिएclient_options = {} - मॉड्यूल की सेटिंग्स को ओवरराइड करने के लिए हैश में मान सेट करेंserver_options = {} - मॉड्यूल की सेटिंग्स को ओवरराइड करने के लिए हैश में मान सेट करेंइस मॉड्यूल को जोड़ने के बाद, आप क्लास का उपयोग कर सकते हैं:
class { 'ssh_hardening': }
यह ssh-server और ssh-client स्थापित करेगा। आप वैकल्पिक रूप से केवल एक को चुन सकते हैं:
class { 'ssh_hardening::server': }
class { 'ssh_hardening::client': }
आपको मुख्य विशेषताएँ कॉन्फ़िगर करनी चाहिए:
class { 'ssh_hardening::server':
"listen_to" : ["10.2.3.4"]
}
listen_to के लिए डिफ़ॉल्ट मान 0.0.0.0 है। मान बदलने की अत्यधिक अनुशंसा की जाती है।
डिफ़ॉल्ट विकल्पों को client_options और server_options पैरामीटर के माध्यम से पारित विकल्पों के साथ मर्ज किया जाएगा।
यदि कोई विकल्प डिफ़ॉल्ट और विकल्प पैरामीटर दोनों के रूप में सेट है, तो बाद वाला जीतेगा।
निम्नलिखित उदाहरण X11Forwarding को सक्षम करेगा, जो डिफ़ॉल्ट रूप से अक्षम है:
class { 'ssh_hardening':
server_options => {
'X11Forwarding' => 'yes',
},
}
स्थानीय परीक्षण के लिए आप vagrant और Virtualbox या VMWare का उपयोग करके परीक्षण स्थानीय रूप से चला सकते हैं। आपको अपने सिस्टम पर Virtualbox और Vagrant स्थापित करना होगा। अपने सिस्टम के लिए उपयुक्त vagrant पैकेज के लिए Vagrant Downloads देखें। हमारे सभी परीक्षणों के लिए हम test-kitchen का उपयोग करते हैं। यदि आप test-kitchen से परिचित नहीं हैं, तो कृपया उनकी मार्गदर्शिका देखें।
आगे test-kitchen स्थापित करें:
# निर्भरताएँ स्थापित करें
gem install bundler
bundle install
# परीक्षण प्राप्त करें
bundle exec thor kitchen:fetch-remote-tests
# लिंट जाँच करें
bundle exec rake lint
# स्पेक जाँच करें
bundle exec rake spec
# एक मशीन पर तेज़ परीक्षण
bundle exec kitchen test default-ubuntu-1204
# Debian-आधारित मशीनों पर परीक्षण
bundle exec kitchen test
# विकास के लिए
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
अधिक जानकारी के लिए test-kitchen देखें
मैं अपने खाते में लॉगिन नहीं कर सकता। मैंने क्लाइंट कुंजी पंजीकृत की है, लेकिन फिर भी यह मुझे अंदर नहीं जाने देता।
यदि आपने सभी सामान्य मुद्दों (फ़ायरवॉल, नेटवर्क, कुंजी गायब, गलत कुंजी, खाता अक्षम आदि) को समाप्त कर दिया है, तो संभव है कि आपका खाता लॉक हो गया है। इसका पता लगाने का सबसे तेज़ तरीका अपने उपयोगकर्ता के लिए पासवर्ड हैश देखना है:
sudo grep myuser /etc/shadow
यदि हैश में ! शामिल है, तो आपका खाता लॉक है:
myuser:!:16280:7:60:7:::
इसे हल करने का उचित तरीका खाता अनलॉक करना है (passwd -u myuser)। यदि उपयोगकर्ता के पास पासवर्ड नहीं है, तो आप इसे इसके माध्यम से अनलॉक कर सकते हैं:
usermod -p "*" myuser
वैकल्पिक रूप से, यदि आप PAM का उपयोग करने का इरादा रखते हैं, तो आपने इसे use_pam = true के माध्यम से सक्षम किया है। PAM लॉक किए गए उपयोगकर्ताओं को कुंजियों के साथ अंदर आने की अनुमति देगा।
मेरा एप्लिकेशन SSH के माध्यम से कनेक्ट क्यों नहीं हो पा रहा है?
पहले हमेशा लॉग फ़ाइलों को देखें और यदि संभव हो तो कनेक्ट करते समय क्लाइंट और सर्वर के बीच होने वाली बातचीत को देखें।
हमने कुछ एप्लिकेशनों (python और ruby पर आधारित) में समस्याएँ देखी हैं जो पुराने क्रिप्टो सेट के उपयोग के कारण होती हैं। यह इस हार्डनिंग मॉड्यूल से टकराता है, जिसने सिफर, संदेश प्रमाणीकरण कोड (MACs) और कुंजी विनिमय (KEX) एल्गोरिदम की सूची को अधिक सुरक्षित चयन तक कम कर दिया है।
यदि आप पाते हैं कि यह पर्याप्त नहीं है, तो सिफर के लिए cbc_required, MACs के लिए weak_hmac, और KEX के लिए weak_kex सक्रिय करने के लिए स्वतंत्र महसूस करें।
Apache License, Version 2.0 (the "License") के तहत लाइसेंस प्राप्त; आप इस फ़ाइल का उपयोग केवल लाइसेंस के अनुपालन में कर सकते हैं। आप लाइसेंस की एक प्रति यहाँ प्राप्त कर सकते हैं
http://www.apache.org/licenses/LICENSE-2.0
जब तक लागू कानून द्वारा आवश्यक न हो या लिखित रूप में सहमत न हो, लाइसेंस के तहत वितरित सॉफ़्टवेयर "जैसा है" (AS IS) आधार पर वितरित किया जाता है, बिना किसी प्रकार की वारंटी या शर्तों के, चाहे व्यक्त या निहित। लाइसेंस के तहत विशिष्ट भाषा नियंत्रित करने वाली अनुमतियाँ और सीमाएँ देखें।