जब भी कोई एप्ट-गेट स्थापित करता है या फ़ाइलों को / etc / में बदलता है, तो हर बार सूचना प्राप्त करें


0

मैं कुछ सर्वरों का प्रबंधन करता हूं जहां कई उपयोगकर्ताओं के पास सूडो अधिकार हैं।

यह डिजाइन द्वारा इस तरह काम करता है। ये विकास सर्वर हैं और उपयोगकर्ताओं को सॉफ़्टवेयर को अपडेट / इंस्टॉल करने और इसे कॉन्फ़िगर करने में सक्षम होना चाहिए। इसके लिए सख्त नियम हैं लेकिन यह पर्याप्त नहीं है।

यह सर्वर प्रबंधन टीम के लिए एक समस्या है क्योंकि जब भी कुछ गलत होता है तो उसे साफ करना पड़ता है और फिर से काम करना पड़ता है।

क्या हर बार किसी को पैकेज और / या परिवर्तन / आदि / फाइलों को स्थापित करने के लिए अधिसूचित किए जाने का एक तरीका है?

मैं गुगली कर रहा था, लेकिन इस खोज से बाहर निकलने वाली एकमात्र चीज एनेट्र्रोन है, जो कि वास्तव में वह नहीं है जिसकी मुझे तलाश है।

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

किसी भी अन्य सुझाव जो इसे संभालने में मदद कर सकते हैं वे स्वागत योग्य हैं।


आप चारों ओर एक आवरण लिपि बना सकते हैं apt, apt-getऔर dpkgअपने अधिकांश लक्ष्यों को पूरा करने के लिए।
विनयुनुच्स 2 यूनिक्स

शायद उपयोगकर्ताओं को डिस्पोजेबल कंटेनर या वीएम में काम किया जा सकता है जब मानक से बदलाव की आवश्यकता होती है ..
user535733

@ WinEunuuchs2Unix धन्यवाद, यह एक संभावना है। मैं कुछ पहले से निर्मित समाधान खोजने की कोशिश कर रहा था।
एनएस

@ user535733 कुछ हद तक जो पहले से ही होता है, लेकिन दुर्भाग्य से यह पर्याप्त नहीं है।
एनएस

जवाबों:


1

"वेनिला" (कोई अतिरिक्त सॉफ़्टवेयर डाउनलोड नहीं किया गया) में आपको एक स्क्रिप्ट लिखनी होगी जो /var/log/auth.log फ़ाइल पर नज़र रखती है। जब भी कोई उपयोगकर्ता रूट या किसी अन्य उपयोगकर्ता बनने के लिए "सु" का उपयोग करता है, तो उनके यूआईडी के साथ एक प्रविष्टि यहां की जाती है:

Apr 24 04:32:57 Hostname sudo: pam_unix(sudo:session): session opened for user root by (uid=0)

इससे आपको पता चल जाएगा कि कौन रूट हुआ और कब बना। तब आप प्रत्येक व्यक्तिगत उपयोगकर्ताओं के बैश इतिहास (/home/user/.bash_history पर होम डायरेक्टरी में संग्रहीत) के माध्यम से पार्स करने में सक्षम होंगे। अंत में आपकी स्क्रिप्ट कुछ इस तरह दिखाई देगी।

for name in $(awk --field-separator=":" '{print $1}' /etc/passwd); do echo $name >> /var/log/report; cat /home/$name/.bash_history | grep -i "apt install" >> /var/log/report; done

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

पूरे / आदि निर्देशिका की निगरानी के लिए, मेरी सिफारिश टाइमस्टैम्प पर स्पष्ट रूप से देखने के लिए होगी। जब भी किसी फ़ाइल पर संशोधन किया जाता है (कुछ वास्तव में बदल जाता है / फ़ाइल लिखी जाती है), टाइमस्टैम्प ls -lअपडेट हो जाता है:

-rw------- 1 user user 32500 Apr 24 04:25 .bash_history

इसके लिए स्क्रिप्ट थोड़ी अधिक जटिल होगी, क्योंकि इसमें निर्देशिकाओं के माध्यम से पुनरावृत्ति करने की आवश्यकता होगी, इसके लिए तर्क को शामिल करने के लिए यह निर्धारित करना भी आवश्यक है कि क्या कोई आइटम एक निर्देशिका है। एक तरफ पुनरावृत्ति, हालांकि, यह एल-एस आउटपुट के 6,7,8 क्षेत्रों को देख रहा है, आदर्श रूप से दिन के अंत में एक बार चल रहा है, और यह देख रहा है कि क्या टाइमस्टैम्प दिन की तारीख के बराबर है। यदि ऐसा है, तो यह नीचे लिखा होगा कि कौन सी फाइलें बदली गईं या बनाई गईं।

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