PAM डिबगिंग पर Syslog पर स्विच करें


34

मुझे पीएएम से नफरत है क्योंकि यह आया था।

मैं व्यवस्थापक स्तर पर डेबियन स्क्वीज़ में PAM डिबगिंग पर कैसे स्विच करूं?

मैंने हर उस संसाधन की जाँच की है जिसे मैं खोजने में सक्षम था। Google, manpages, जो भी हो। केवल एक चीज जिसे मैंने अभी तक आज़माया नहीं है (मुझे बस हिम्मत नहीं हुई, क्या मैंने उल्लेख किया है कि मुझे PAM से नफरत है?) PAM के पुस्तकालय स्रोत में खुदाई कर रहा है।

मैंने एक समाधान के लिए Google की कोशिश की, कुछ भी नहीं। मुझे अब तक क्या मिला:

http://www.bitbull.ch/wiki/index.php/Pam_debugging_funktion ( /etc/pam_debug) और http://nixdoc.net/man-pages/HP-UX/man4/pam.conf.4.html ( debugPAM प्रविष्टियों पर विकल्प ) में /etc/pam.d/)।

नहीं, काम नहीं करता है। कोई पैम आउटपुट, कुछ भी नहीं, पूर्ण मौन।

एक समाधान के लिए खोज करते समय मैंने भी पाम के लिंक का अनुसरण किया था, जो जर्मनी में गैस स्टेशन हैं। ठीक है, हाँ, शायद उन सभी हिट फिल्मों में एक क्लू छुपा हो सकता है, लेकिन मुझे पता चलने से पहले मुझे गोली मार देनी चाहिए।

बाकी FYI है:

मुझे क्या समस्या थी?

डेबियन स्क्वीज़ में अपग्रेड करने के बाद कुछ अजीब हो गया (ठीक है, अरे, यह एक बार था, उह, जो एच पर सही था .. आह, हाँ, वुडी)। तो यह शायद डेबियन की गलती नहीं है, बस एक लंबे समय तक खराब रहने वाला सेटअप है। मुझे तुरंत यह आभास हो गया था कि PAM के साथ कुछ करना है, लेकिन मुझे वास्तव में नहीं पता था कि क्या हो रहा है। मैं पूरी तरह से अंधेरे में था, अकेले छोड़ दिया, एक बच्चे के रूप में असहाय, YKWIM। कुछ ssh लॉगिन काम किया, कुछ नहीं। यह एक तरह से मजाकिया था। कोई सुराग नहीं ssh -v, कोई सुराग /var/log/*नहीं, कुछ नहीं। बस "ऑक्टोर सफ़ल" या "ऑस्ट्रल फेल", कभी-कभी समान रूप से लॉग इन करने वाला उपयोगकर्ता एक सत्र में सफल हो जाता है और दूसरे के साथ विफल हो जाता है। और कुछ भी नहीं तुम सच में पकड़ कर सकते हैं।

अन्य विकल्पों के ट्रेनलोड को खोदने के बाद मैं यह पता लगाने में सक्षम था। वहाँ nullokऔर nullok_secure, एक डेबियन विशेष है। कुछ के साथ /etc/securettyऔर tty(जो कुछ यादृच्छिक है) के आधार पर एक लॉगिन को खारिज कर दिया गया था या नहीं, इसके आधार पर कुछ पेंच। वास्तव में नीस, काश!

फिक्स आसान था और सब कुछ अब फिर से ठीक है।

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

आह, बीटीडब्ल्यू, इसने मेरे विश्वास को फिर से मजबूत कर दिया कि पीएएम से नफरत करने के लिए अच्छा है क्योंकि यह ऊपर आया था। क्या मैंने उल्लेख किया है कि मैं करता हूं?


यहां बताया गया है कि यह समस्या खुद डेबियन पर कैसे बनाई जाए: passwd -d userऔर फिर इस रूप में बॉक्स में जाने की कोशिश करें user। Syslog में आउटपुट "विफल पासवर्ड" का PAM डिबगिंग से कोई लेना-देना नहीं है, इसलिए PAM चुप रहता है।
टीनो

मुझे लगता है कि आप सेट करना होगा उल्लेख करना भूल गया PermitEmptyPasswords yesमें /etc/ssh/sshd_configज़ाहिर है, तो जैसे पीएएम आउटपुट कुछ pam_unix(sshd:auth): authentication failureडिबग चैनल और न ही कोई संकेत जो पीएएम मॉड्यूल के लिए है, लेकिन अभी भी कुछ नहीं विफलता का कारण बना।
टीनो

क्या डेबियन के पास /var/log/auth.logफाइल है? मुझे हाल ही में पता चला है कि उबंटू में यह है, और वहां से संबंधित पैम के सभी सामानों को लॉग करता है। यहां किसी भी जवाब ने मेरी मदद नहीं की, लेकिन /var/log/auth.logमेरी मदद करने से मेरी समस्या ठीक हो गई।
लॉर्डऑफइग्स

/var/log/auth.logहै syslog। समस्या लॉगिंग नहीं बल्कि डीबगिंग है। यदि उदाहरण के लिए PAM स्टैक जल्दी विफल हो जाता है, तो आपको कुछ भी दिखाई नहीं देगा, क्योंकि जो आउटपुट आउटपुट syslogबिल्कुल नहीं लगाए जाते हैं। या कुछ विफल रहता है और कुछ नहीं, लेकिन दोनों बिल्कुल एक ही रेखा से लॉग इन करते हैं। यह सही है कि, मेरा अनुमान है कि सभी मामलों में से ९ ५% मामलों को सामान्य लॉग में देख कर हल किया जा सकता है, लेकिन ५% नहीं हो सकता है, जैसा कि वास्तव में पर्दे के पीछे होता है।
तिनो

4
पीएएम से नफरत करने के लिए +1। ;)
ज़ायेन एस हल्सल

जवाबों:


24

आप कोशिश करने के लिए चीजों की एक जोड़ी:

क्या आपने syslog में डिबग संदेशों को लॉग करना सक्षम किया है?

cp /etc/syslog.conf /etc/syslog.conf.original
vi /etc/syslog.conf

निम्नलिखित पंक्ति जोड़ें:

*.debug     /var/log/debug.log

के साथ बाहर निकलें :wq!

touch /var/log/debug.log
service syslog restart

आप सभी मॉड्यूल के लिए डिबगिंग सक्षम कर सकते हैं जैसे:

touch /etc/pam_debug

या आप केवल उन मॉड्यूल के लिए डिबगिंग सक्षम कर सकते हैं जिन्हें आप "डीबग" में प्रासंगिक लाइनों के अंत में /etc/pam.d/system-authया अन्य /etc/pam.d/*फाइलों में जोड़कर रुचि रखते हैं :

login   auth    required    pam_unix.so debug

तब डिबगिंग संदेश दिखाई देना शुरू हो जाना चाहिए /var/log/debug.log। इससे आपको मदद मिलने की आशा है!


अच्छा जवाब है, लेकिन मुझे लगता है कि मुझे डिबगिंग पर सिसलॉग था। मैं इसकी जांच करुँगा।
टीनो

मैंने इसकी जाँच की, क्षमा करें, आपका उत्तर समाधान नहीं है। PAM अभी भी चुप है। शायद यह एक nullokविशेष है कि बस इस मॉड्यूल में डिबगिंग की कमी है। मुझे इस शब्द के साथ कहना चाहिए: कोड के ऐसे महत्वपूर्ण केंद्रीय टुकड़े पर डिबगिंग केवल फ्रेडी क्रूगर द्वारा प्रेतवाधित होने की तुलना में एक बुरा सपना है।
टीनो

ठीक है, ठीक है, मुझे लगता है कि आप उत्तर देते हैं कि गलती सही है! यह उत्तर की गलती नहीं है जो PAMमूक है। इसलिए समय के लिए मैं इसे "समाधान" के रूप में स्वीकार करता हूं जब तक कि PAMकैपिटलाइज़ न हो जाए। धन्यवाद।
तिनो

मैं अभी भी डिबग आउटपुट नहीं देख रहा हूं, लेकिन वैसे भी, Ubuntu 16.04 पर, syslog डीबग देखने के लिए, do:'cho '* .debug /var/log/debug.log'> /etc/rsyslog.d90/debug देखें। conf; systemctl पुनरारंभ rsyslog.service
Noam

ध्यान दें कि आपको उचित अनुमतियों की आवश्यकता है और debug.log पर स्वामित्व दर्ज करें - इसे syslog के समान सेट करें। (यह सरल और भूलना आसान है।)
mgarey

10

कम से कम CentOS 6.4 पर, /etc/pam_debugइसका उपयोग नहीं किया जाता है।

यदि pam_warn.so मॉड्यूल स्थापित है, तो आप कुछ लॉगिंग आउटपुट इस प्रकार प्राप्त कर सकते हैं:

auth required pam_warn.so

success required pam_warn.so

आदि। यह मॉड्यूल यह सुनिश्चित करता है कि यह किसी भी बिंदु पर प्रमाणीकरण प्रक्रिया में हस्तक्षेप नहीं करेगा, लेकिन यह syslog के माध्यम से सार्थक सामग्री को लॉग करता है।

अद्यतन करें

कोड की जांच करने और कुछ संकलन करने के बाद, मैंने पाया कि (1) स्रोत के माध्यम से इस डिबग मोड को सक्षम करना संभव है, और (2) आरएचईएल पैच सुविधा को लगभग अनुपयोगी बनाता है (कम से कम pam_unix मॉड्यूल) और (3) शायद वैसे भी कोड को पैच करने के लिए बेहतर है।

आरएचईएल के लिए यह काम करने के लिए, आप लिनक्स-पीएएम ... src.rpm (किसी भी 1.1 संस्करण के लिए) प्राप्त कर सकते हैं और कल्पना फ़ाइल को निम्नानुसार बदल सकते हैं:

  • शुरुआत रेखा से करें

    % कॉन्फिग \ _

और इसके बाद, जोड़ने योग्य-डिबग \

  • लाइन को हटा दें या% पैच 2 से शुरू होने वाली लाइन (पिछले वाले से ऊपर) को हटा दें

फिर आरपीएम का निर्माण करें और स्थापित करें (बल के साथ, मौजूदा पैकेजों को अधिलेखित करने के लिए)। अब फ़ाइल /var/run/pam-debug.log बनाएँ:

install -m 622 /dev/null /var/run/pam-debug.log

यदि फ़ाइल मौजूद नहीं है, तो डिबग आउटपुट को stderr पर भेजा जाएगा।

  • यह भेजने वाले को मेरी राय में, बेवकूफ, और पैच संघर्ष का कारण बनता है। आप उस व्यवहार को फ़ाइल libpam में जाकर बदल सकते हैं / शामिल कर सकते हैं / सुरक्षा / _pam_macros.h और 4 लाइनों की जगह

    logfile = stderr;

साथ में

return;

निर्माण पर, आपको अगम्य कथनों के बारे में चेतावनी मिल जाएगी, लेकिन उन्हें अनदेखा किया जा सकता है। आप इस बदलाव को एक सीड स्क्रिप्ट में कर सकते हैं (और इसे पैच के बाद RPM के% प्रीप सेक्शन में डाल सकते हैं) ...

sed -i 's/logfile = stderr;$/return;/' libpam/include/security/_pam_macros.h

यदि आप इस छोटे से पैच को करते हैं, तो आप% पैच 2 को पुनर्स्थापित कर सकते हैं, क्योंकि इसे फिर से ठीक से काम करना चाहिए।


धन्यवाद। अच्छा संकेत। मैं कोशिश करूँगा अगर मुझे कभी भी फिर से समस्या हो। तो उम्मीद है कि कभी भी नहीं;)
टीनो

यह मेरे लिए काम करता है, लेकिन ध्यान दें कि यदि आप SELinux चला रहे हैं, तो आपको /var/run/pam-debug.log (system_u: object_r: var_log_t अधिकांश संदेशों को पकड़ा) पर उपयुक्त संदर्भ सेट करने की आवश्यकता होगी। अन्यथा डिबगिंग आउटपुट का एक बहुत मानक त्रुटि के लिए लिखा जाएगा (या यदि आपने रेडहैट के मानक त्रुटि व्यवहार को बाहर निकाल दिया है तो चुपचाप त्याग दिया गया है)।
jgibson

6

मैं बस कई घंटे बिताने की कोशिश कर रहा था, यह पता लगाने की कोशिश कर रहा था कि CentOS 6.4 पर PAM में डिबग लॉग को कैसे सक्षम किया जाए। यद्यपि यह प्रश्न डेबियन के लिए है, फिर भी मैं यह लिखूंगा कि इसे सेंटोस पर कैसे किया जाए, इस उम्मीद में कि अन्य लोगों को उस समय में नहीं रखना पड़ेगा जो मेरे पास पहले से है।

जैसा कि यह अंततः निकला, pamCentOS पैकेज में डीबग लॉग को सक्षम करना सीधा है। कठिनाई इस तथ्य से उपजी है कि इसमें पैकेज का पुनर्मूल्यांकन शामिल है। तो, पहले यहांpam-1.1.1-13.el6.src.rpm से SRPM (जैसे ) खोजें । जो लोग SRPMs से संकुल संकलित करने के बारे में नहीं जानते हैं, वे RPM बिल्ड वातावरण सेट करने के चरणों का उल्लेख कर सकते हैं ।

यहाँ मुख्य कदम है। कल्पना फ़ाइल खोलें और जोड़ने --enable-debugके लिए %buildमें खंड configureमंगलाचरण। पुन: संयोजित! नए बनाए गए पैकेज को पुनर्स्थापित करें। अंत में, फाइल बनाएं जहां डिबग लॉग लिखा मिलेगा।

$ sudo touch /var/run/pam-debug.log

यदि आप फ़ाइल नहीं बनाते हैं तो टर्मिनल पर बहुत सारे लॉग उड़ जाएंगे, जो बहुत उपयोगी नहीं हो सकते हैं।


यूनिक्स के अन्य जायके या कुछ भी जो PAM का उपयोग करने की हिम्मत करता है, बहुत स्वागत है;)
Tino

5

डेबियन और उबंटू (और शायद अन्य डिस्ट्रोस) में एक विशेष लॉग फ़ाइल होती है जिसमें सभी पैम आउटपुट लॉग होते हैं:

/var/log/auth.log

मैं एक डेढ़ दिन से पैम संबंधी समस्या से जूझ रहा हूं, आखिरकार इस लॉग फाइल के बारे में पता चला, और खुद को पागलपन से बचाया।

यहां इस फ़ाइल की सामग्री का एक नमूना है जब चीजें नियोजित नहीं होती हैं।

Jul 10 09:31:14 vagrant-ubuntu-trusty-64 pamtester: pam_userdb(vsftpd:auth): user_lookup: could not open database `/etc/vsftpd_users.db': No such file or directory
Jul 10 09:36:20 vagrant-ubuntu-trusty-64 sudo:  vagrant : TTY=pts/1 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/cat /var/log/auth.log

जब यह काम करता है तो यह कैसा दिखता है:

Jul 10 09:47:00 vagrant-ubuntu-trusty-64 sshd[5222]: pam_unix(sshd:session): session closed for user vagrant
Jul 10 09:50:58 vagrant-ubuntu-trusty-64 sshd[5584]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Jul 10 09:50:58 vagrant-ubuntu-trusty-64 sshd[5584]: Accepted publickey for vagrant from 10.0.2.2 port 54652 ssh2: RSA dd:3b:b8:2e:85:04:06:e9:ab:ff:a8:0a:c0:04:6e:d6
Jul 10 09:50:58 vagrant-ubuntu-trusty-64 sshd[5584]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Jul 10 09:51:13 vagrant-ubuntu-trusty-64 sudo:  vagrant : TTY=pts/1 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/cat /var/log/auth.log
Jul 10 09:51:13 vagrant-ubuntu-trusty-64 sudo: pam_unix(sudo:session): session opened for user root by vagrant(uid=0)
Jul 10 09:51:13 vagrant-ubuntu-trusty-64 sudo: pam_unix(sudo:session): session closed for user root
Jul 10 09:51:41 vagrant-ubuntu-trusty-64 pamtester: pam_userdb(vsftpd:auth): user 'foo' granted access
Jul 10 09:51:44 vagrant-ubuntu-trusty-64 sudo:  vagrant : TTY=pts/1 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/cat /var/log/auth.log
Jul 10 09:51:44 vagrant-ubuntu-trusty-64 sudo: pam_unix(sudo:session): session opened for user root by vagrant(uid=0)

ध्यान दें कि पैम डिबग लॉगिंग को सक्षम करने के लिए किसी भी अन्य संभावनाओं ने मेरे लिए काम नहीं किया।


1
कृपया ध्यान दें कि pam_*वास्तव में पीएएम की तरह सभी लाइनें वास्तविक हैं। अन्य लाइनें वैसे भी टूल द्वारा आउटपुट हैं, भले ही वे PAM का उपयोग करें या नहीं। इसका मतलब है: यदि PAM किसी भी कारण से इनकार करता है, तो वास्तविक कारण को खोजना बहुत मुश्किल है, अगर यह PAM में है। गैर-पीएएम लाइनें सहायक नहीं होती हैं (जैसा कि समस्या पीएएम में बैठती है) और पीएएम लाइनें अक्सर सहायक नहीं होती हैं, साथ ही, वे अक्सर चुप भी होती हैं। कई पीएएम मॉड्यूल की उपस्थिति से आपको वास्तव में यह अनुमान लगाने में मुश्किल समय होता है कि कौन सा मॉड्यूल अपराधी हो सकता है, अकेले यह पता लगाने के लिए कि डिबगिंग को कैसे सक्षम किया जाए, क्योंकि यह हर एक के लिए अलग है।
तिनो

0

कुछ के साथ / etc / safetty और tty पर निर्भर करता है (जो कुछ यादृच्छिक है) एक लॉगिन को अस्वीकार कर दिया गया था या नहीं। वास्तव में नीस, काश!

क्या आप उस पर थोड़ा विस्तार कर सकते हैं?

प्रति सुरक्षित शख्सियत का पन्ना :

the file contains the device names of terminal lines (one per line, without leading /dev/) on which root is allowed to login.

आप जिस व्यवहार का वर्णन करते हैं, वह काफी हद तक सिक्योरिटी की तरह लगता है, सामान्य रूप से काम कर रहा है (यह मानते हुए कि आप वास्तव में रूट के रूप में लॉग इन कर रहे हैं)।

कुछ ssh लॉगिन काम किया, कुछ नहीं।

यहां भी, गैर-पीएएम प्रतिबंध हो सकते हैं, इसलिए यह आपके अंतर्दृष्टि /etc/ssh/sshd_configकी तरह कुछ अंतर्दृष्टि प्रदान करने में मदद कर सकता है ।

विशेष रूप से, आपके विवरण से:

  • यदि आप रूट के रूप में लॉग इन करने की कोशिश कर रहे थे, और असफल हो रहे हैं, तो यह इस लाइन के मौजूद होने के कारण हो सकता है sshd_config:PermitRootLogin no
  • कुछ उपयोगकर्ता / समूह काम करते हैं, और दूसरों को नहीं है, एक कारण में उपयोग किया जा सकता है sshd_configकी AllowGroupsया AllowUsers। एक नमूना लाइन की तरह लग सकता है: AllowGroups users admins

यह निश्चित रूप से पूरी तरह से संभव है कि PAM इस मुद्दे का हिस्सा है, लेकिन आपके मुख्य 'लक्षण' मेरे लिए ध्वनि हैं जैसे कि उन्हें अन्य तरीकों से समझाया जा सकता है।


-1

आस्केट ... मैं वास्तव में आपकी पोस्ट से प्यार करता था :) मैं पिछले 15 घंटों से इस तरह से सामान के साथ लड़ रहा था ... (मेरे पास 30 दिनों का ब्रेक हो सकता था)

किसी तरह मैंने इसे आपके द्वारा किए गए सभी सामानों को काम करके प्राप्त किया, जिसका मतलब है कि मेरे पास एक / etc / pam_debug और pam प्रविष्टियों पर डीबग है। लेकिन जैसा कि मेरे मामले में मैं संघर्ष कर pam_mysqlरहा था, मुझे अपने पैम प्रविष्टियों के verbose=1बाद एक और रखना पड़ा debug:

mailsystem:~# cat /etc/pam.d/smtp

auth required pam_mysql.so debug sqllog=1 verbose=1 user=mail passwd=imverysecret host=127.0.0.1 db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1 logtable=log_auth logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logtimecolumn=time

account sufficient pam_mysql.so debug sqllog=1 verbose=1 user=mail passwd=imverysecret host=127.0.0.1 db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1 logtable=log_auth logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logtimecolumn=times

यह "sqllog" सिर्फ DB में लॉग लिखने के लिए है।

तो शायद इससे आपको थोड़ी मदद मिलेगी।

हम सभी PAM से नफरत करते हैं। सौभाग्य!


1
संकेत के लिए धन्यवाद, लेकिन दुर्भाग्य से यह मदद नहीं करता है:pam_unix(sshd:auth): unrecognized option [verbose=1]
Tino
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.