2009-01-13 16 views
6

के लिए एसएसएच "लॉगिन मॉनिटर" मैं एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो उपयोगकर्ता को सूचित करता है जब किसी ने मशीन पर ssh के माध्यम से लॉग इन किया है।लिनक्स

मेरा वर्तमान विचार अंतराल में grep का उपयोग करके "डब्ल्यू" के आउटपुट को पार्स करना है।

लेकिन यह न तो सुरुचिपूर्ण और न ही कलाकार है। क्या किसी को इस तरह के एक कार्यक्रम को कार्यान्वित करने का बेहतर विचार है?

किसी भी मदद की वास्तव में सराहना की जाएगी!

उत्तर

9

उबंटू पर (और मैं अन्य सभी डेबियन distros लगता था, नहीं तो सब Linuces), फ़ाइल /var/log/auth.log रिकॉर्ड सफल (और असफल) लॉगिन प्रयास:

sshd[XXX]: pam_unix(sshd:session): session opened for user XXX 

आप इस आदेश का उपयोग (नोट आप रूट होना जरूरी है कि प्रमाणन लॉग देखने के लिए) एक बहुत ही सरल मॉनिटर सेट कर सकते हैं:

sudo tail -F /var/log/auth.log | grep sshd 
+0

या आप "पूंछ-एफ" का उपयोग कर सकते हैं। –

+0

उत्कृष्ट बिंदु - मुझे उस विकल्प के बारे में पता नहीं था – kdgregory

+1

मुझे यूनिक्स व्यवस्थापक हैं जो लॉग इन को अपने बॉक्सन के रूट के रूप में पहचानने के लिए करते हैं। अगर कोई रूट के रूप में लॉग इन करता है, तो उनके पेजर पर एक ई-मेल भेजा जाता है। बहुत उपयोगी, लेकिन हर बार जब वे गंभीर रखरखाव में आते थे और एक रूट खोल खोलते थे, तो वे कभी-कभी मनोरंजक होते थे, उन्हें एक पृष्ठ मिल जाएगा ... –

4

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

लॉग फ़ाइल को पुनर्निर्देशित करना एक कॉन्फ़िगरेशन फ़ाइल में/etc/में किया गया है जिसका नाम अभी मुझे बच निकला है। /etc/syslog.conf, मुझे लगता है।

13

पॉल Tomblin सही सुझाव है।

किसी syslog सुविधा है कि आप अलग से प्रवेश कर सकते हैं भेजने के लिए अपना sshd_config में प्रवेश सेट करें:

=> अधिक सुविधाओं के लिए देख आदमी 3 syslog। उदाहरण के लिए एक चुनें

# Logging 
SyslogFacility local5 
LogLevel INFO 

तो इस तरह से अपनी syslog.conf की स्थापना:

local5.info |/var/run/mysshwatcher.pipe 

स्क्रिप्ट आप के लिए/etc/inittab तो यह चलता रहे लिखने के लिए जा रहे हैं जोड़ें:

sw0:2345:respawn:/usr/local/bin/mysshwatcher.sh 

फिर अपनी स्क्रिप्ट लिखें:

#!/bin/sh 

P=/var/run/mysshwatcher.pipe 
test -p $P || mkfifo $P 

while read x <$P; do 
    # ... whatever, e.g.: 
    echo "ssh info: $x" | wall 
done; 

फिना lly, अपने syslogd को पुनरारंभ करें और अपने inittab पुनः लोड (init q) प्राप्त करें और यह काम करना चाहिए। यदि इन सेवाओं के अन्य प्रकारों का उपयोग किया जाता है, तो आपको तदनुसार चीजों को कॉन्फ़िगर करने की आवश्यकता होती है (जैसे newsyslogd => /etc/newsyslog.conf; उबंटू: /etc/event.d inittab का isntead)

यह बहुत प्राथमिक और कमी है, लेकिन आपको शुरू करने के लिए पर्याप्त होना चाहिए ...

अधिक जानकारी: अधिक लॉगिंग विकल्प/verbosity के लिए man sshd_config।

+0

हां, यह वही है जो मैंने अपने आखिरी काम में किया था, सिवाय इसके कि मैंने देखने के लिए पर्ल इस्तेमाल किया वह पाइप। मेरे स्रोत कोड को छोड़कर मैं अधिक जानकारी पोस्ट करता। –

5

यदि आपको परवाह नहीं है कि वे कैसे लॉग इन करते हैं (टेलनेट/एसएसएच), 'अंतिम' यूनिक्स कमांड लाइन उपयोगिता आपको मशीन में अंतिम कुछ लॉगिन दिखाती है। रिमोट उपयोगकर्ताओं आईपी पते

[जड़ @ ex02 www] # पिछले foo अंक/1 81.31.xy सूर्य जनवरी दिखाएगा 18 07:25 अभी भी
foo अंक में लॉग इन/0 81.31.xy सूर्य जनवरी 18 01: 51 अभी भी
foo pts/0 81.31.x में लॉग इन है।वाई शनि जनवरी 17 03:51 - 07:52 (04:00)
बार अंक/5 199.146.xy शुक्र जनवरी 16 08:57 - 13:29 (04:32

2

मैंने एक कार्यक्रम बनाया है (जो मैं प्रमाणीकरण मॉनिटर कहते हैं) प्रश्न में वर्णित कार्य को हल करती है कि।

आप करना चाहते थे, तो आप कैसे मैं इस समस्या को हल जांच करने के लिए (लॉग-फ़ाइलों का उपयोग कर) इसे डाउनलोड करने के लिए स्वागत से अधिक हैं।

आप प्रमाणीकरण मॉनीटर यहां आसानी से उपलब्ध हो सकता है: http://bwyan.dk/?p=1744

+1

कृपया ध्यान दें कि आपकी वेबसाइट/उत्पाद के नंगे लिंक यहां दो कारणों से प्रोत्साहित नहीं किए गए हैं; सबसे पहले, एक उत्तर स्वयं निहित उत्तर के रूप में पोस्ट किया जाना चाहिए, न कि बाहरी साइट के लिए एक लिंक। दूसरा, आत्म-प्रचार यहां पर फंस जाता है, और अक्सर स्पैम के रूप में फ़्लैग किया जाता है (विशेष रूप से यदि कोई प्रकटीकरण नहीं है कि आप अपनी साइट/उत्पाद से जुड़ रहे हैं)। –

+2

एंड्रयू, लड़के को एक ब्रेक काट दिया, यह एक ओपन सोर्स प्रोजेक्ट है। –

0

हमें एक ही समस्या थी, इसलिए हमने अपनी खुद की लिपि लिखी। इसे github से डाउनलोड किया जा सकता है।

उम्मीद है कि यह मदद करता है :)

चीयर्स! इवान

+1

यह एक सुंदर बैश स्क्रिप्ट है। – bobef

+0

@ बोबेफ थक्स, आपने मेरा दिन बनाया :) – Sabo