एक्सपायर पासवर्ड के साथ एक्सपायर्ड पासवर्ड और SSH कुंजी आधारित लॉगिन


12

एक SLES 11 मशीन है। उपयोगकर्ता SSH और pubkey के माध्यम से लॉग इन करते हैं (मिश्रित, कुछ उपयोगकर्ता पासवर्ड का उपयोग करते हैं, कुछ ssh कुंजी का उपयोग करते हैं)

Sshd_config में है:

UsePAM yes
PasswordAuthentication yes
PubkeyAuthentication yes

समस्या: यदि पासवर्ड उस उपयोगकर्ता के लिए समाप्त हो जाता है जो पबकी लॉगिन का उपयोग करता है, तो उपयोगकर्ता को पासवर्ड बदलने के लिए प्रेरित किया जाएगा।

प्रश्न: हम उपयोगकर्ताओं को लॉग इन करने की अनुमति देने के लिए PAM या sshd कॉन्फिग्रेशन कैसे सेट कर सकते हैं यदि उनके पास एक वैध SSH कुंजी है और वे पासवर्ड समाप्त हो गए हैं? - पॉप अप के बिना "अपना पासवर्ड बदलें"।

अद्यतन # 1: समाधान नहीं हो सकता है: "UsePAM नहीं"

SERVER:~ # cat /etc/pam.d/sshd 
#%PAM-1.0
auth        requisite   pam_nologin.so
auth        include     common-auth
account     requisite   pam_nologin.so
account     include     common-account
password    include     common-password
session     required    pam_loginuid.so
session     include     common-session
SERVER:~ # 

अद्यतन # 2: समाधान नहीं हो सकता है: कभी समाप्त न होने के लिए उपयोगकर्ता पासवर्ड सेट करें

अद्यतन # 3:

SERVER:/etc/pam.d # cat common-account
#%PAM-1.0
...
account required    pam_unix2.so    
account required    pam_tally.so
SERVER:/etc/pam.d # 

आप इसे pam_unix.soके sessionअनुभाग से हटाकर इसे पूरा करने में सक्षम हो सकते हैं /etc/pam.d/sshd( pam_lastlog.soअगर यह नहीं है तो इसे बदल दें । मुझे यकीन नहीं है कि pam_unix.so/sessionकोई ऐसा कर रहा है या नहीं, लेकिन यह सही जगह जैसा लगता है।
पैट्रिक

1
उपयोगकर्ता के खाते को कभी भी समाप्त न होने देने के लिए सेट करें :)
रजा

@ रज़ा: धन्यवाद :) महान विचार है, लेकिन एक समाधान नहीं हो सकता है :(
thequestionthequestion

ForcedPasswdChange Noयह कोशिश SSH1 के लिए है
रज़ा

1
मुझे एहसास हुआ कि ForcedPasswdChange Noसमाप्ति के बाद काम नहीं करेगा। आप एक समाधान की तलाश कर रहे हैं जो कि समाप्त उपयोगकर्ता को लॉगिन करने की अनुमति देगा
रज़ा

जवाबों:


10

समाप्त पासवर्ड संकेत का कारण बनने वाले संचालन का क्रम निम्नानुसार है:

  • SSH PAM चलाता है account चरण , जो सत्यापित करता है कि खाता मौजूद है और मान्य है। accountचरण नोटिस पासवर्ड समाप्त हो गया है, और की सुविधा देता है SSH पता है कि।
  • SSH कुंजी-आधारित प्रमाणीकरण करता है। इसके लिए PAM की आवश्यकता नहीं है, इसलिए यह चलता नहीं हैauth चरण । यह तब SSH लॉगिन सत्र सेट करता है और PAM sessionचरण चलाता है ।
  • इसके बाद, SSH याद करता है कि PAM ने बताया कि पासवर्ड समाप्त हो गया था, चेतावनी संदेश प्रिंट करता है, और PAM से उपयोगकर्ता को पासवर्ड बदलने के लिए कहता है। SSH फिर डिस्कनेक्ट करता है।

यह सब SSH कर रहा है, और मुझे इस व्यवहार को कॉन्फ़िगर करने के लिए कोई SSH विकल्प दिखाई नहीं देता है। इसलिए जब तक आप SSH और / या PAM के कस्टम संस्करण का निर्माण नहीं करना चाहते, तब तक मेरे पास एकमात्र विकल्प है कि PAM को SSH को समाप्त पासवर्ड की सूचना देने से रोका जाए। अगर तुम यह करते हो, यह पूरी तरह से SSH पर समाप्त हो चुके पासवर्ड चेक को निष्क्रिय कर देगा , भले ही उपयोगकर्ता पासवर्ड के साथ SSH के ऊपर लॉग इन कर रहा हो। लॉगिन के अन्य (गैर-एसएसएच) तरीके अभी भी पासवर्ड समाप्ति की जांच करेंगे।

आपकी वर्तमान pam.d/sshdफ़ाइल में एक account include common-accountप्रविष्टि है। मुझे लगता है कि वहाँ एक हैcommon-account फाइल है जिसमें एक संदर्भ है pam_unix.so। यह वह रेखा है जो एक समाप्त पासवर्ड की जांच करती है।

आप शायद common-accountफ़ाइल को स्वयं छूना नहीं चाहते , क्योंकि इसका उपयोग अन्य लॉगिन विधियों के लिए किया जाता है। इसके बजाय, आप includeअपनी pam.d/sshdफ़ाइल से निकालना चाहते हैं । यदि common-accountइसके अलावा अन्य कार्य हैंpam_unix.so , तो आप शायद उन्हें सीधे रखना चाहते हैं pam.d/sshd

अंत में, याद रखें कि यह आपके सिस्टम की सुरक्षा के लिए एक संशोधन है और आपको अच्छी सलाह देने के लिए मुझ पर आंख बंद करके भरोसा नहीं करना चाहिए। यदि आप इससे अपरिचित हैं तो PAM कैसे काम करता है, इस पर पढ़ें। कुछ शुरू करने स्थानों हो सकता है man 7 PAM, man 5 pam.confऔर man 8 pam_unix


संचालन के क्रम की अच्छी व्याख्या, धन्यवाद।
M_dk

3

Pam_unix.so (फरवरी 2016 के आसपास) में एक विकल्प जोड़ा गया जिसे no_pass_expiry कहा जाता है ( स्रोत कोड यहां या मैन पेज में परिवर्तन )। मूल रूप से यह pam_unix को एक समाप्त हो चुके पासवर्ड को अनदेखा करने के लिए कहता है अगर pam_unix के अलावा किसी चीज़ का उपयोग ऑर्टिकल के लिए किया जाता है, उदाहरण के लिए अगर sshd ने परफॉर्म किया है।

परिणामस्वरूप, यदि आपके पास pam_unix.so का एक संस्करण है, जिसमें वह विकल्प है, तो आपको PAM को कॉन्फ़िगर करने में सक्षम होना चाहिए:

  1. यदि SSH कुंजी को ssh के माध्यम से प्रमाणित करने के लिए उपयोग किया जाता है, तब भी चेतावनी दी जाती है, लेकिन एक समाप्त पासवर्ड को बदलने की आवश्यकता नहीं है
  2. यदि एक ssh के माध्यम से प्रमाणित करने के लिए pam_unix.so के माध्यम से लॉगिन / पासवर्ड का उपयोग किया गया था, तो एक समयसीमा समाप्त पासवर्ड के पासवर्ड की आवश्यकता होती है
  3. किसी भी अन्य अनुक्रम (जैसे लॉगिन सेवा के माध्यम से) को प्रभावित न करें।

उदाहरण के लिए, मैंने एक RHEL 7 सर्वर को केवल /etc/pam.d/sshd को अपडेट करके और खाता और पासवर्ड दोनों प्रकारों के लिए pam_unix.so no_pass_expiry जोड़कर ऊपर कॉन्फ़िगर किया, जैसे।

account    required    pam_nologin.so
account    sufficient  pam_unix.so no_pass_expiry
account    include     password-auth
password   sufficient  pam_unix.so no_pass_expiry
password   include     password-auth

1
बस यह कोशिश की और यह काम करता है। आप जाँच सकते हैं कि क्या आपका PAM इस विकल्प का समर्थन करता है या नहीं "no_pass_expiry" खोज कर या नहीं "man 8 pam_unix" मैन पेज के अंदर।
टॉमोफूमी

2016 से कोड परिवर्तन अभी भी उबंटू 18.04 में मौजूद नहीं है ...:
कॉलिनम

0
  • आप अनुपालन कारणों से अपने PAM या sshd_config को बदलना नहीं चाह सकते हैं।
  • आप PasswordAuthentication नंबर का उपयोग कर रहे होंगे sshd_config में
  • आपके पास रैंडमाइज्ड पासवर्ड हो सकते हैं।
  • आपने सीआईएस अनुपालन भी लागू किया होगा।
  • फिर भी आपके उपयोगकर्ताओं को संकेत मिलता है

फिर रूट पासवर्ड परिवर्तित तिथि को ट्विक कर सकता है:

for user in `grep ":x:[0-9]\{4\}" /etc/passwd|cut -d: -f1`; do chage -d today $user; done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.