यूनिक्स क्लाइंट और सर्वर के बीच tty / pts ssh सत्र की तुलना करें


1

क्या tsh / pts की जानकारी और क्लाइंट पर लॉगिन और लॉगआउट की तारीख के साथ ssh सत्र को सूचीबद्ध करना संभव है? एक सर्वर पर अंतिम कमांड के बराबर।

मेरे उपयोगकर्ता किसी सर्वर से कनेक्ट करने के लिए प्रॉक्सी ssh का उपयोग करते हैं, लेकिन प्रॉक्सी सर्वर से वे सर्वर से कनेक्ट करने के लिए एक जेनेरिक खाते का उपयोग करते हैं। मैं क्लाइंट और सर्वर के बीच tty / pts id की तुलना करना चाहूंगा। सर्वर पर मैं इस स्क्रिप्ट को वर्तमान दिन के लिए इस जानकारी को प्राप्त करने के लिए उपयोग करता हूं:

#!/bin/bash
today="$(date '+%a %b %e')"
last | awk -v pattern="$today" '$0 ~ pattern && /pts/ {print $0 "#line#"}'
exit 0

धन्यवाद


अगर मैं इस मामले में क्लाइंट को अच्छी तरह से समझता हूं तो प्रॉक्सी सर्वर है। और आपके पास इसकी पहुंच है। क्या आप इसकी पुष्टि कर सकते हैं? (यदि आप क्लाइंट पर एक ही स्क्रिप्ट चला सकते हैं)। BTW यह मुझे लगता है कि आप किसी तरह अपने ग्राहकों की गतिविधि को नियंत्रित करना चाहते हैं क्योंकि वे सभी प्रॉक्सी पर एक ही खाते में लॉग इन करते हैं। यदि ऐसा है तो आपको इसे सीधे पूछना चाहिए। Ps> SuperUser पर आपका स्वागत है।
Hastur

धन्यवाद, हाँ मेरा प्रॉक्सी मेरा क्लाइंट है और मुझे इसकी पहुँच प्राप्त है। यदि मैं उसी स्क्रिप्ट को प्रॉक्सी (क्लाइंट) पर चलाता हूं, तो मेरे पास उपयोगकर्ता कंप्यूटर के कनेक्शन का प्रॉक्सी से इतिहास है, लेकिन सर्वर से प्रॉक्सी का नहीं। लेकिन क्या मुझे कुछ याद आ सकता है। उपयोगकर्ता कंप्यूटर से लेकर प्रॉक्सी तक वे अपने स्वयं के SSH खाते का उपयोग करते हैं, लेकिन प्रॉक्सी से सर्वर तक, वे एक जेनेरिक खाते (उदा: oracle) का उपयोग करते हैं।
निकोलस

आपका स्वागत है। फिर से आपका वास्तविक (अंतिम) प्रश्न क्या है? ;)? यदि आप सर्वर पर किसी प्रोग्राम की पहुँच को नियंत्रित करना चाहते हैं, तो प्रोग्राम के लिए अलग-अलग उपयोगकर्ता बनाएँ। यदि संभव न हो तो सर्वर पर अलग-अलग उपयोगकर्ता बनाएँ और उन्हें अनुमत उपयोगकर्ता को पहचान बदलने के लिए, या उस उपयोगकर्ता के रूप में उस प्रोग्राम को निष्पादित करने की अनुमति दें ( पवित्र देखें sudo)। जिस पथ के लिए आप इमेजिंग कर रहे हैं, आपको दो सूचियों से मेल खाने की आवश्यकता है, या ssh लॉगिंग को सक्षम करने के लिए और उस दो सूचियों से मेल खाने के लिए बेहतर है। लेकिन आपके पास 100% अद्वितीय मैच नहीं होंगे।
हस्त्तूर

संदर्भ यह है: मैं एक ग्राहक के लिए डीबी सर्वर पर पहुंच का ऑडिट करने के लिए काम करता हूं। मैं एक डेटाबेस गतिविधि निगरानी समाधान का उपयोग करता हूं, लेकिन इसके अलावा मैं ओएस स्तर पर उपयोगकर्ता को लॉग इन करना चाहूंगा। आज, यह ग्राहक DB सर्वर को जेनेरिक खाते से जोड़ने के लिए ssh प्रॉक्सी का उपयोग करता है। मैं उनकी कार्य प्रक्रिया को नहीं बदल सकता, मैं सुरक्षा के दृष्टिकोण से सहमत हूँ, यह बहुत बुरा व्यवहार है। मेरा असली सवाल यह है: मैं क्लाइंट साइड से tty / pts की तुलना सर्वर साइड से करूंगा और टाइमस्टैम्प को सहसंबंधित करूंगा।
निकोलस

आपके पास एक उत्तर है ... मुझे नहीं पता कि आप पसंद करेंगे लेकिन यह एक उत्तर है :-)
हस्तूर

जवाबों:


0

कुछ शब्दों में

दोनों मशीनों पर ssh के लॉग का उपयोग करें: यह आपको शेल की PID देता है। यह आपको कार्यक्रम के निष्पादन के साथ शेल के पीआईडी ​​को जोड़ने और ट्टी के साथ एक निश्चित मैच करने की अनुमति देनी चाहिए। एक गहन ऑडिट के लिए आप एक ऑडिट टूल का उपयोग कर सकते हैं।

अधिक शब्दों में

last

सरल के साथ lastआपके पास उपयोग किए गए ट्टी से संबंधित कनेक्शनों की सूची हो सकती है।
आपके पास अपने प्रॉक्सी मशीन से दो सूची एक हो सकती हैं (मैं इसे गेटवे, जीडब्ल्यू) कहना चाहूंगा, और दूसरा आपके सर्वर सेlastडिफ़ॉल्ट रूप से कमांड आपको उपयोगकर्ता नाम, pts / tty, IP / hostname देता है। लॉग-इन डेट-टाइम, लॉग-आउट डेट-टाइम। आप प्रारूप आदि में संशोधन कर सकते हैं।

फिर आपको अवधि की ओवरले पर काम करना होगा और अनुमान लगाना होगा कि कौन था।

मुझे जो समस्या दिखाई देती है, वह यह है कि इस तरह से आपको एक टूल (स्क्रिप्ट) बनानी होगी, जो आपको सभी संभावित मैच प्रदान करे, और उन्हें शुद्ध करें, इस बीच आप अच्छे मैच पाते हैं। बहरहाल, आपके पास अजीब स्थिति हो सकती है।

केस स्टडी करते हैं। एक पहला उपयोगकर्ता, हम निकोलस कहते हैं, GW पर लॉग इन कर सकते हैं। फिर वह कॉफ़ी लेने जाता है या कॉल का जवाब देता है। इस बीच एक दूसरा उपयोगकर्ता, हम हस्तूर कहते हैं, GW में लॉग-इन करें और तेज़ी से 1 सेंट उपयोगकर्ता सर्वर पर लॉग इन करें। बस इस क्षण में आपका डबल लॉग जटिल है। अब हस्तूर को एक कॉफी की जरूरत महसूस हुई और निकोलस ने सर्वर से लॉग इन किया। कौन पहले व्यक्ति होगा जो कॉफी खत्म करेगा और जो पहले कार्यक्रम के साथ जुड़ेगा?

/var/log/auth(या ssh की अन्य लॉग फ़ाइल) [ 1 ] ।।

प्रत्येक सिस्टम पर लॉगिन और लॉगआउट की निगरानी के लिए लॉग फाइल का उपयोग किया जाता है। सही पथ और नाम के लिए खोज, उन ca प्रणाली के आधार पर। साथ में

sudo grep TheUsername /var/log/auth.log

आप के समान लाइनें प्राप्त करेंगे

May  1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May  1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)

जहां आपके पास सही लॉगिन समय है, और यहां तक ​​कि पीआईडी ​​( [9024]), और आईपी। इस बार आप इस फ़ाइल के डेटा lastको tty जानने के लिए कमांड के एक के साथ मेल कर सकते हैं, या आप किसी तरह प्रोग्राम के अंदर लॉग इन कर सकते हैं शेल के PID जो प्रोग्राम को ही कहते हैं (यह सिस्टम कॉल के साथ करना संभव है) खोल)।

उन फ़ाइलों पर काम करना आपके पास प्रत्येक सत्र के लिए एक अनूठा मेल हो सकता है। गेटवे पर अनुरूप लॉग फ़ाइल के लिए आपके पास मूल आईपी और उपयोगकर्ता नाम होगा।

audit tools[ ], [ ]

यदि आपके पास करने के लिए प्राधिकरण है और यह कानूनी है, तो आप ऑडिट टूल का उपयोग कर सकते हैं और होस्ट मशीन पर शेल का पूर्ण लॉग कर सकते हैं।

संदर्भ

  • [ ] एसएसएच पहुंच प्रयासों में प्रवेश करना
  • [ ] शेल / ssh / tty सत्र लकड़हारा
  • [ ] रिमोट होस्ट पर BASH शेल सत्र लॉगिंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.