हर linux कमांड को logserver में कैसे लॉग करें


13

मैं चाहता हूं कि हर एक कमांड एक लॉजर्वर के पास जाए। पहले से ही कॉन्फ़िगर किया गया है सभी लॉग में भेजने वाले के लिए syslog- एनजी है।

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

जवाबों:


29

यह नहीं है कि आप समस्या से कैसे संपर्क करें। एक बार जब आप किसी उपयोगकर्ता को शेल एक्सेस देते हैं, तो आप उस उपयोगकर्ता को कुछ भी करने के लिए सौंप रहे हैं, जिसके पास उसकी उचित अनुमति है। कमांड लॉगिंग को भूल जाइए, किसी भी यूनिक्स सिस्टम में कमांड को निष्पादित करने के कई तरीके हैं।

उदाहरण के लिए, उपयोगकर्ता एक मेल क्लाइंट शुरू कर सकता है ( pineउदाहरण के लिए केवल लॉग इन किया गया है ), इसमें वह "कंपोज़" का चयन करता है जो VI शुरू होता है, और VI से वह किसी भी कमांड को लॉन्च करता है जिसे वह चाहता है :!cmd। यह आदेश कहीं भी लॉग इन नहीं किया गया है, और सिस्टम के दृष्टिकोण से, यह किसी भी सहायक एप्लिकेशन की तरह है जिसे VI द्वारा बुलाया गया है, जैसे grep या सॉर्ट। शेल द्वारा लॉग किया गया एकमात्र कमांड था pine

ऐसा लगता है कि जो आप वास्तव में चाहते हैं उसे ऑडिटिंग कहा जाता है । ऑडिटिंग सबसिस्टम को सक्षम करें auditctlऔर ऑडिट पैकेज auditdसे कमांड और डेमॉन का उपयोग करें ताकि लॉग इन किया जा सके। अधिक जानकारी ऑडिटैक्टल (8) मैनुअल पेज में है।

ध्यान दें कि हर प्रक्रिया को तुरंत लॉग इन करना भी इष्टतम नहीं हो सकता है। उदाहरण के लिए, ./configureएक सॉफ्टवेयर पैकेज के लिए सरल (ऑटोटूल का उपयोग करके बनाया गया) हजारों प्रोसेस इंस्टेंटिएशन बनाने के लिए उल्लेखनीय है। यह ऑडिटिंग लॉग को इतने शोर से भर देगा कि बाद में इसका विश्लेषण करना बहुत कठिन हो जाता है।


13

acctपैकेज स्थापित करें (पैकेज का नाम डिस्ट्रो द्वारा भिन्न होता है, जिसे प्रक्रिया लेखांकन के रूप में भी जाना जाता है) और उपयोग lastcomm <username>:

[mithrandir]-[/home/sernin]-[1951] % lastcomm sernin
tr                     sernin   pts/2      0.00 secs Fri Nov 12 12:02
zsh               F    sernin   pts/2      0.00 secs Fri Nov 12 12:02
tr                     sernin   pts/2      0.02 secs Fri Nov 12 12:02
zsh               F    sernin   pts/2      0.00 secs Fri Nov 12 12:02
fortune                sernin   pts/2      0.00 secs Fri Nov 12 12:02
xmodmap                sernin   pts/2      0.00 secs Fri Nov 12 12:02
xrdb                   sernin   pts/2      0.00 secs Fri Nov 12 12:02
sh                     sernin   pts/2      0.00 secs Fri Nov 12 12:02
cpp                    sernin   pts/2      0.00 secs Fri Nov 12 12:02

आप tty या कमांड नाम से भी खोज सकते हैं। हमेशा की तरह, man lastcommअधिक जानकारी के लिए।


11

यदि आप थोड़ी सी प्रोग्रामिंग करने के लिए तैयार हैं, तो आप एक लाइब्रेरी लिखकर ऐसा कर सकते हैं, जो निष्पादित करता है, syslog में लॉग करता है, फिर dlopen की लाइब्रेरी जिसमें वास्तविक एग्जिट syscall है। फिर / etc / वातावरण में, आपके द्वारा बनाए गए लाइब्रेरी के लिए पथ पर LD_PRELOAD सेट करें।

आप यहां एक लूप दर्ज करने के बारे में सावधान रहना चाहते हैं, इसलिए आप या तो केवल कुछ बायनेरिज़ के निष्पादन को लॉग इन कर सकते हैं, या दूसरों (जैसे सिसलॉग) को लॉग होने से बाहर कर सकते हैं।


दरअसल, यह काफी मददगार है। आवरण को निष्पादित करने वाली पहली खोज स्नूपॉपी ( sourceforge.net/projects/snoopylogger ) लाती है । यह वही दिख रहा है जो मैं देख रहा था, हालांकि थोड़ी सी क्रिया। परीक्षण के बाद मैं देख रहा हूं कि मुझे इसे उत्पादन परिवेश में रखने के लिए प्रबंधन की मंजूरी की आवश्यकता है। (आप सभी नापाक टाइपों के लिए चेतावनी)
सिंह

@Leo संस्करण 2.0.0 के बाद से Snoopy करते समय कस्टम लॉग प्रारूप विनिर्देश का समर्थन करता है। इसलिए, ओवर-वर्बोसिटी अब कोई समस्या नहीं होनी चाहिए। प्रकटीकरण: यहाँ स्नूपी अनुरक्षक।
बोस्जान स्कुफ्का

7

मुझे लगता है जैसे आप मूल ( मैन पेज ) जैसी किसी चीज़ की तलाश में हैं । मैन पेज को उद्धृत करने के लिए:

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

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


2

आप शायद इस बात से बेहतर हैं कि उपयोगकर्ता आपकी देखभाल करने के लिए sudo (या समान) का उपयोग करें, और कुछ स्तर पर उपयोगकर्ताओं पर भरोसा करने के लिए। जब आप चीजों को "पूरी तरह से नियंत्रित" करने के करीब पहुंच जाते हैं, तो यह मुश्किल होता है कि वे क्या कर रहे हैं। मैं हाल ही में इस तरह के उपकरण देख रहा हूं, उदाहरण के लिए। ज्यादातर वे केवल लॉग बनाते हैं जो प्रबंधित करना मुश्किल है यदि आपके पास पर्याप्त उपयोगकर्ता हैं और ऐसी चीज को सार्थक करने के लिए मशीनें हैं। :)

आपके द्वारा बनाई जा रही सभी जानकारी पर विचार करें। आप इसकी कितनी परवाह करते हैं? शायद बहुत कम - इसलिए आप ऐसे लॉग उत्पन्न कर रहे हैं जो ज्यादातर बेकार हैं। जिन चीजों की आप वास्तव में परवाह करते हैं, उनका ऑडिट करना, जैसे कि अन्य लोग सुझाव दे रहे हैं, शायद आपको बेहतर अंत की स्थिति में पहुंचा दे।


1

बैश को 4.1 के बाद से syslog समर्थन के साथ संकलित किया जा सकता है।

यह मूर्खतापूर्ण नहीं है (प्रक्रिया लेखांकन उस के लिए बेहतर हो सकता है), लेकिन यह ज्यादातर उपयोगकर्ता बातचीत है; वॉल्यूम अधिक प्रबंधनीय होना चाहिए और यदि आपको किसी असामान्य चीज़ पर संदेह हो तो आप अधिक विस्तृत चीज़ पर स्विच करने में सक्षम होंगे।

उस ने कहा, यह एक तरह से दखलअंदाजी है और एक उपयोगकर्ता के रूप में मैं आपके द्वारा ऐसा करने से पहले एक बहुत विशिष्ट गोपनीयता चेतावनी की उम्मीद करूंगा।


0

वहाँ भी sudosh ( http://sudosh.sourceforge.net ) है जो सत्र लॉगिंग करेगा। आपके पास उपयोगकर्ता के लिए या sudo के माध्यम से इसे परिभाषित शेल के रूप में चलाने का विकल्प है। यह प्रत्येक सत्र के लिए टाइमिंग को ट्रैक करता है और आप सत्र को फिर से देख सकते हैं और इसे संपादित कर सकते हैं (सत्र और व्हाट्सएप संपादित करें सहित)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.