
dawg the hallway monitor - सॉफ्टवेयर स्थापित करते समय ऑपरेटिंग सिस्टम में परिवर्तनों की निगरानी करें और उत्पन्न हुए आक्रमण सतह का विश्लेषण करें
dawgmon - Dawg द हॉलवे मॉनिटर
सारांश
इस टूल का नाम साउथ पार्क के एक एपिसोड (सीज़न 10, एपिसोड 10) पर आधारित है, जिसमें कार्टमैन अपने स्कूल के गलियारों में गश्त कर रहा Dawg द हॉलवे मॉनिटर है। यह एक ऐसा टूल है जो लिनक्स-आधारित सिस्टम में पिछली बार टूल चलाने के बाद से हुए परिवर्तनों की निगरानी करने में मदद करता है।
इसका उपयोग करने का एक तरीका है कि शामिल नमूना क्रॉनजॉब का उपयोग करके dawgmon को नियमित अंतराल पर चलाया जाए और परिणाम सिस्टम एडमिनिस्ट्रेटर को ईमेल किए जाएं। इससे उन मशीनों की पहचान करने में मदद मिल सकती है जिन पर बुरी चीजें हो रही हैं और यह निगरानी की जा सकती है कि कौन क्या और कहाँ इंस्टॉल कर रहा है। कृपया ध्यान दें कि कोई भी गंभीर कर्नेल बैकडोर इस टूल से आसानी से छिप सकता है, और इसलिए यह आपके टूलकिट में सिर्फ एक अतिरिक्त टूल है, लेकिन लिनक्स मशीनों की पूर्ण सुरक्षा निगरानी के लिए इस पर भरोसा नहीं किया जाना चाहिए। यह आपके टूलबॉक्स में बस एक अतिरिक्त विकल्प है।
दूसरा तरीका जिसमें यह उपयोगी है, वह है सॉफ्टवेयर इंस्टॉल करने से पहले एक बेसलाइन तैयार करना। फिर इस सॉफ्टवेयर को इंस्टॉल करने के बाद व्यक्ति टूल को फिर से चलाएगा और फिर यह देखना आसान होगा कि सिस्टम में कौन से बदलाव हुए हैं। एक उदाहरण: बेसलाइन स्थापित करने के बाद और फिर एक मशीन पर वर्चुअलबॉक्स इंस्टॉल करने पर कुछ इस तरह का परिणाम मिल सकता है:
1 change detected (0 warnings)
[...]
33 changes detected (0 warnings)
उपरोक्त अब वर्चुअलबॉक्स की गहन सुरक्षा समीक्षा करने में मदद करता है। इंस्टॉल किए गए suid बाइनरी प्रवेश के स्पष्ट बिंदु हैं और चल रही सेवाएँ दिलचस्प हैं।
एक और उदाहरण रन जो सही ढंग से TCP पोर्ट के खुलने और बंद होने का पता लगाता है:
0 changes detected (0 warnings)
[1] 12489
1 change detected (0 warnings)
nc -l -p 4455 ^C
1 change detected (0 warnings)
टूल पूर्ण सटीकता के लिए नहीं बनाया गया है। सामान्यतः यह गंभीर सलाह दी जाती है कि GNU कोर-यूटिल्स जैसे ls के आउटपुट पर टूल इनपुट के रूप में भरोसा न करें। दूसरे शब्दों में; किसी को शायद ही कभी इस प्रकार के आउटपुट को पार्स करने और उस पर निर्भर रहने वाले टूल बनाने चाहिए क्योंकि यह कभी भी बदल सकता है। वास्तव में इन टूल का आउटपुट अपेक्षाकृत स्थिर होता है क्योंकि बहुत से लोग और स्वचालित टूल पहले से ही विभिन्न उद्देश्यों के लिए उनके आउटपुट पर निर्भर हैं।
हालाँकि dawgmon के लिए इसका व्यापार-बंद निम्नलिखित है; हमें फ़ाइल सिस्टम मॉनिटरिंग स्वयं करने के लिए बहुत सारा तर्क लागू करना होगा, जटिल बाइनरी बनानी होंगी जिनमें ब्लॉक डिवाइसों, नेटवर्क इंटरफेसों और अन्य चीज़ों के पार्सिंग और मॉनिटरिंग के लिए लाइब्रेरी शामिल हों। इससे टूल और अधिक जटिल और कम रखरखाव योग्य हो जाएगा। अभी प्रोजेक्ट्स में कोई नया कमांड बहुत कम समय में परिवर्तन पहचान सहित जोड़ सकता है क्योंकि मुख्य dawgmon टूल पहले से ही कैशिंग, कमांड को निष्पादित करने और फिर किसी कमांड इम्प्लीमेंटेशन के साथ तुलना करते समय पिछले और वर्तमान आउटपुट प्रदान करने का ध्यान रखता है। इसका मतलब है कि समय-बद्ध परियोजनाओं पर कोई बहुत जल्दी एक नया कमांड जोड़ सकता है और उन नए कमांडों सहित विश्लेषण चला सकता है।
कमांड को Command वर्ग से विरासत में लेकर जोड़ा जा सकता है। यह वर्ग commands/init.py में परिभाषित है। उस फ़ाइल में कमांडों की मास्टर सूची (और वह क्रम जिसमें वे पूर्ण विश्लेषण करते समय निष्पादित होते हैं) भी शामिल है। फिर 'name', 'shell', 'command' और 'desc' जैसे गुणों को सेट करना होगा और दो विधियाँ 'parse()' और 'compare()' को लागू करना होगा। नए कमांडों को लागू करने और जोड़ने का अच्छा अंदाजा लगाने के लिए पर्याप्त कमांड शामिल किए गए हैं।
उपयोग
सर्वोत्तम परिणामों के लिए टूल को रूट के रूप में चलाएँ। सहायता के लिए -h/--help टाइप करें और संस्करण जानकारी के लिए -v/--version टाइप करें।
हमेशा एक मुख्य कार्रवाई निर्दिष्ट करनी होगी। ये कार्रवाइयाँ हैं: -A: सिस्टम का विश्लेषण करें -C: कैश प्रविष्टियों की तुलना करें -E: उपलब्ध कमांडों की सूची दिखाएँ -L: कैश प्रविष्टियों की सूची दिखाएँ
dawgmon -A
dawgmon -A -e list_suids -e list_tcpudp_ports
dawgmon -E
dawgmon -L
dawgmon -C 3 5
विश्लेषण में सहायता के लिए अतिरिक्त विकल्प:
-d: डीबग आउटपुट दिखाएँ -e: एक विशिष्ट कमांड निष्पादित करें (कई बार उपयोग किया जा सकता है) -f: रूट के रूप में चलाने की चेतावनी के बिना चलाएँ -g: आउटपुट को रंगीन बनाएँ -l: उपयोग करने के लिए डेटाबेस कैश का स्थान -m: कैश में अनुमत कैश प्रविष्टियों की अधिकतम संख्या (यदि कैश में इससे अधिक प्रविष्टियाँ हैं तो यह डेटाबेस को छोटा कर देगा) -t: प्रति पाई गई विसंगति पर टाइमस्टैम्प जानकारी आउटपुट न करें
अधिक उपयोग जानकारी के लिए टूल को -h के साथ चलाएँ।
सीमाएँ
टूल कमांडलाइन टूल के आउटपुट को पार्स करता है और इसके कुछ भाग के लिए GNU कोर-यूटिल्स विशिष्ट विकल्पों पर निर्भर करता है। इस टूल और कमांड इम्प्लीमेंटेशन को जल्दी से अन्य ऑपरेटिंग सिस्टम जैसे BSD पर पोर्ट करने का कोई विशेष कारण नहीं है, लेकिन अभी कोई ऑपरेटिंग सिस्टम का पता लगाना नहीं हो रहा है और न ही ऑपरेटिंग सिस्टम समर्थन के आधार पर कमांडों का वर्गीकरण किया जा रहा है। इसे पहले लागू करना होगा।