क्या प्रमाणीकरण में उपयोग की जाने वाली सार्वजनिक कुंजी को लॉग करने के लिए ओपनएसएसएच प्राप्त करना संभव है?


27

मेरे पास एक उत्पादन प्रणाली है जहां कई अलग-अलग लोगों को एक खाते में लॉग इन करने की अनुमति है - खाता आवेदन के लिए है और उस व्यक्ति के लिए नहीं है, क्योंकि हमारे पास उत्पादन सर्वर पर व्यक्तिगत खाते नहीं हैं।

ऑडिटिंग प्रयोजनों के लिए, मैं यह बताना चाहता हूं कि किसने किस समय लॉग इन किया था, और जैसे ही हम इसमें लॉग इन करने के लिए SSH कुंजियों का उपयोग करते हैं, उसे ट्रैक करना तर्कसंगत लगता है (क्योंकि ट्रैक करने के लिए कोई अन्य पहचानकर्ता नहीं है)।

जब SSH किसी उपयोगकर्ता को प्रमाणित करता है, तो यह उपयोगकर्ता के नाम को सिस्टम की सुरक्षा लॉग में लॉग करता है, लेकिन यह लॉग नहीं करता है कि लॉग इन करने के लिए अधिकृत सार्वजनिक कुंजियों का उपयोग किया गया था। क्या ओपनएसएसएच को यह रिपोर्ट करना भी संभव है कि किस सार्वजनिक कुंजी का उपयोग किया गया था। या हो सकता है कि बस उस कुंजी के साथ जुड़ी टिप्पणी?

ऑपरेटिंग सिस्टम का उपयोग किया जा रहा है CentOS 5.6, लेकिन मैं यह भी सुनना चाहूंगा कि क्या अन्य ऑपरेटिंग सिस्टम पर संभव है।

जवाबों:


33

यदि आप LogLevel को VERBOSE / etc / sshd / sshd_config में बढ़ाते हैं तो यह उपयोगकर्ता को प्रमाणित करने के लिए उपयोग की जाने वाली सार्वजनिक कुंजी के फिंगरप्रिंट को लॉग करेगा।

LogLevel VERBOSE

तब आपको इस तरह के संदेश मिलते हैं

Jul 19 11:23:13 centos sshd[13431]: Connection from 192.168.1.104 port 63529
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13432]: Postponed publickey for user from 192.168.1.104 port 63529 ssh2
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13431]: Accepted publickey for user from 192.168.1.104 port 63529 ssh2

आप उपयोग कर सकते हैं

 ssh-keygen -lf /path/to/public_key_file

किसी विशेष सार्वजनिक कुंजी का फिंगरप्रिंट प्राप्त करने के लिए।


2
धन्यवाद! मुझे authorized_keysफ़ाइल के खिलाफ महत्वपूर्ण उंगलियों के निशान की पुष्टि करने की आवश्यकता है , इसलिए मैंने अधिकृत कुंजी की उंगलियों के निशान को प्रिंट करने के लिए यह छोटी स्क्रिप्ट बनाई:(p="$(mktemp)";cat ~/.ssh/authorized_keys|while IFS="$(printf "\n")" read key; do echo $key > $p; ssh-keygen -lf $p; done; rm -f $p)
Guss

मैंने देखा कि SSH अब प्रत्येक लॉगिन के लिए दो बार कुंजी लॉग करता है - कोई भी विचार क्यों और / या इसे एक बार लॉग करने के लिए कैसे प्राप्त करें?
Guss

क्यों, यह विस्तार का एक स्तर है जिससे मैं परिचित नहीं हूँ। क्या आप इसे रोक सकते हैं, शायद स्रोत कोड के साथ चारों ओर घूमने के बिना नहीं।
user9517

2
यह धागा प्रासंगिक लगता है। यह मिलान कुंजी को दो बार पाता है: एक बार यह निर्धारित करने के लिए कि कुंजी स्वीकार्य होगी या नहीं, फिर ग्राहक द्वारा प्रदान किए गए हस्ताक्षर की जांच करने के लिए दूसरी बार।
mpontillo

3

यदि आपके लोग ssh-Agent का उपयोग कर रहे हैं, तो आप इसे अपने .bashrc में डाल सकते हैं:

SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo `/bin/date` $SSH_KEY_NAME >> ~/.login.log

यह एक अच्छा विचार है, दुर्भाग्य से मैं इसे लॉग इन करना चाहता हूं, इसका एक कारण यह है कि मैं उन उपयोगकर्ताओं के लिए अधिकृत_कीप कमांड का उपयोग कर रहा हूं जिन्हें मैं लॉग इन करना चाहता हूं, और उन्हें आम तौर पर बैश शेल नहीं मिलता है।
गस

0

में LogLevelपैरामीटर के साथ खेलने की कोशिश करें sshd_config। जानकारी के लिए, देखें man sshd_config


0

एक अच्छा ब्लॉग पोस्ट आपके प्रश्न का उत्तर देता है: http://www.screenage.de/blog/2012/02/10/how-to-log-history-and-logins-from-multiple-ssh-keys-under-one- उपयोगकर्ता के खाते-साथ-कठपुतली /


3
सर्वर दोष में आपका स्वागत है! आमतौर पर हम साइट पर उत्तर पसंद करते हैं जो अपने दम पर खड़े होने में सक्षम हैं - लिंक महान हैं, लेकिन अगर उस लिंक ने कभी भी उत्तर को तोड़ दिया तो अभी भी उपयोगी होने के लिए पर्याप्त जानकारी होनी चाहिए। अधिक विवरण शामिल करने के लिए कृपया अपने उत्तर को संपादित करने पर विचार करें। अधिक जानकारी के लिए FAQ देखें ।
SLM
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.