PAM के साथ ssh सर्वर का उपयोग कैसे करें, लेकिन पासवर्ड की स्थिति को समाप्त करें?


13

कई ट्यूटोरियल आपको अपने ssh सर्वर को इस तरह कॉन्फ़िगर करने के लिए कहते हैं:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no 

लेकिन इस सेटअप के साथ आप PAM का उपयोग नहीं कर सकते हैं, क्योंकि मैं Google प्रमाणक (OTP ऑनटाइम पासवर्ड) के साथ 2 फैक्टर ऑथेंट का उपयोग करने की योजना बना रहा हूं, मुझे PAM की आवश्यकता है।

तो एक ताज़ा डेबियन जेसी ssh deamon को कैसे कॉन्फ़िगर करें, अगर मैं सामान्य पासवर्ड के साथ लॉगिन को रोकना चाहता हूं लेकिन फिर भी PAM का उपयोग करने की अनुमति देता हूं।

शायद सटीक सवाल यह है कि पासवर्ड को अस्वीकार करने के लिए पैम को कैसे कॉन्फ़िगर किया जाए?

पीएएम प्रमाणीकरण पर विवरण

PAM- आधारित पासवर्ड प्रमाणीकरण को अक्षम करना बल्कि सहज है। यह FreeBSD के साथ बहुत सारे GNU / Linux वितरण (स्लैकवेयर के उल्लेखनीय अपवाद के साथ) पर आवश्यक है। यदि आप सावधान नहीं हैं, तो आप पासवर्ड प्रमाणीकरण को 'नहीं' पर सेट कर सकते हैं और अभी भी PAM प्रमाणीकरण के माध्यम से केवल एक पासवर्ड के साथ लॉगिन कर सकते हैं। यह पता चला है कि वास्तव में PAM प्रमाणीकरण को अक्षम करने के लिए आपको 'ChallengeResponseAuthentication' को 'नहीं' सेट करने की आवश्यकता है। FreeBSD मैन पेजों में यह कहना है, जो स्थिति को थोड़ा स्पष्ट करने में मदद कर सकता है:

ध्यान दें कि यदि ChallengeResponseAuthentication 'हाँ' है, और sshd के लिए PAM प्रमाणीकरण नीति में pam_unix (8) शामिल है, तो पासवर्ड-प्रमाणीकरण के मूल्य की परवाह किए बिना पासवर्ड प्रमाणीकरण को चुनौती-प्रतिक्रिया तंत्र के माध्यम से अनुमति दी जाएगी।

http://www.unixlore.net/articles/five-minutes-to-more-secure-ssh.html

जवाबों:


23

शायद सटीक सवाल यह है कि पासवर्ड को अस्वीकार करने के लिए पैम को कैसे कॉन्फ़िगर किया जाए?

सही बात। आप पहले से ही इस तथ्य पर ठोकर खा चुके हैं कि सेटिंग UsePAM noआमतौर पर बुरी सलाह है। न केवल यह PAM आधारित प्रमाणीकरण के किसी भी रूप को रोकता है, बल्कि यह निष्क्रिय accountऔर sessionमॉड्यूल भी करता है । अभिगम नियंत्रण और सत्र विन्यास अच्छी चीजें हैं।

सबसे पहले, आवश्यकताओं की एक सूची बनाएँ:

  • OTP के माध्यम से pam_google_authenticator.so। इसके लिए आवश्यक है UsePAM yesऔर ChallengeResponseAuthentication yes। आप उन्हें एक प्रमाणिकता के लिए प्रेरित कर रहे हैं, आखिर!
  • PAM के माध्यम से पासवर्ड प्रमाणीकरण का कोई अन्य रूप नहीं। इसका मतलब है authकि किसी भी मॉड्यूल को निष्क्रिय करना जो संभवतः पासवर्ड को keyboard-interactiveलॉगिन के माध्यम से प्रसारित करने की अनुमति दे सकता है । (जिसे हमें ओटीपी के लिए सक्षम छोड़ना होगा)
  • कुंजी आधारित प्रमाणीकरण। हमें publickeyप्रमाणीकरण की आवश्यकता है, और हो सकता है gssapi-with-micकि आपके पास केर्बरोस कॉन्फ़िगर हो।

आम तौर पर, एक मुख्य स्किम PAM आधारित प्रमाणीकरण के साथ पूरी तरह से प्रमाणीकरण। इसने हमें ओपनश के पुराने संस्करणों के साथ हमारे ट्रैक में रोक दिया होगा, लेकिन डेबियन 8 (जेसी) AuthenticationMethodsनिर्देश का समर्थन करता है । यह हमें कई प्रमाणीकरण विधियों की आवश्यकता है, लेकिन केवल SSHv2 को लागू करने वाले ग्राहकों के साथ काम करता है।


sshd config

नीचे वे पंक्तियाँ हैं, जिनके लिए मैं सुझाव देता हूँ /etc/ssh/sshd_config। सुनिश्चित करें कि आपके पास इस प्रणाली को एक्सेस करने का एक तरीका है, जब sshdआप कुछ तोड़ते हैं तो इस प्रणाली को एक्सेस करने का कोई तरीका नहीं है!

# Require local root only
PermitRootLogin no

# Needed for OTP logins
ChallengeResponseAuthentication yes
UsePAM yes

# Not needed for OTP logins
PasswordAuthentication no

# Change to to "yes" if you need Kerberos. If you're unsure, this is a very safe "no".
GSSAPIAuthentication no


# Require an OTP be provided with key based logins
AuthenticationMethods publickey,keyboard-interactive

# Use this instead for Kerberos+pubkey, both with OTP
#
#AuthenticationMethods gssapi-with-mic,keyboard-interactive publickey,keyboard-interactive

sshdएक बार इन परिवर्तनों को किए जाने के बाद पुनः लोड करना न भूलें ।

पैम विन्यास

हमें अभी भी PAM को कॉन्फ़िगर करना है। डेबियन 8 (आपके प्रश्न के अनुसार) की एक साफ स्थापना मानकर:

  • टिप्पणी @include common-authसे /etc/pam.d/sshd
  • समीक्षा करें /etc/pam.d/sshdऔर पुष्टि करें कि साथ शुरू होने वाली कोई रेखा authमौजूद नहीं है। यदि यह एक साफ स्थापित है, तो ऐसा नहीं होना चाहिए, लेकिन यह सुरक्षित होना सबसे अच्छा है।
  • के authलिए एक प्रविष्टि जोड़ें pam_google_authenticator.so

याद रखें कि स्थानीय पासवर्ड अभी भी काम करते हैं।

हमने कोई परिवर्तन नहीं किया जो स्थानीय कंसोल के माध्यम से लॉगिन को प्रभावित करेगा, या उपयोगकर्ताओं को पासवर्ड का उपयोग करने से रोकने के लिए अपने विशेषाधिकारों को अपग्रेड कर सकता है sudo.। यह प्रश्न के दायरे से बाहर था। यदि आप चीजों को आगे ले जाने का निर्णय लेते हैं, तो याद रखें कि रूट को हमेशा पासवर्ड के माध्यम से स्थानीय रूप से लॉगिन करने की अनुमति दी जानी चाहिए। आप अपने आप को गलती से अन्यथा सिस्टम से बाहर रखने का जोखिम उठाते हैं।


यह अभी तक परीक्षण नहीं किया है, लेकिन यह तार्किक लगता है और 5 upvotes के साथ मुझे लगता है कि मैं इसे स्वीकार कर सकता हूं।
c33s

मैंने खुद को परखा है। यदि आप पासवर्ड को पूरी तरह से अक्षम करना चाहते हैं, तो आपको ChallengeResponseAuthentication नंबर भी सेट करना होगा। ब्लॉग
अनाम

@ ओपी के सवाल का बेनामी संदर्भ और पहली गोली। अक्षम करने ChallengeResponseAuthenticationसे कीबोर्ड-इंटरैक्टिव प्रमाणीकरण विधि टूट जाती है, जो OAM को संभालने वाले PAM प्रमाणीकरण मॉड्यूल के लिए आवश्यक है। (ओपी द्वारा वांछित) सीआरए को अक्षम करना केवल प्रदर्शन करने के लिए सुरक्षित है यदि आपके पास स्टैक में शून्य पीएएम मॉड्यूल हैं जो authआग लगाने की आवश्यकता है। यदि PasswordAuthenticationऔर GSSAPIAuthenticationअक्षम हैं, तो एक पासवर्ड स्वीकार नहीं किया जाएगा, जब तक कि पीएएम के पास सक्षम मॉड्यूल नहीं है जो इसके लिए पूछता है।
एंड्रयू बी

(यह कहा, यह अभी भी एक महान लिंक है)
एंड्रयू बी

1

पासवर्ड अनुरोध को अस्वीकार करने के लिए

इस लाइन पर टिप्पणी करें

#auth       substack     password-auth

in /etc/pam.d/sshd

और इस पंक्ति के अंत में nullok नहीं होना सुनिश्चित करें जब तक कि OTP का उपयोग किए बिना ssh के माध्यम से प्रमाणित करना ठीक नहीं होगा

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