
macOS के लिए एक बाइनरी प्राधिकरण और निगरानी प्रणाली
[!NOTE] 2025 तक, Santa को Google द्वारा अब रखरखाव नहीं किया जाता। हम मौजूदा उपयोगकर्ताओं को Santa के एक सक्रिय रूप से बनाए रखा गया फ़ोर्क, जैसे कि https://github.com/northpolesec/santa, पर माइग्रेट करने के लिए प्रोत्साहित करते हैं।
Santa macOS के लिए एक बाइनरी और फ़ाइल एक्सेस प्राधिकरण प्रणाली है। इसमें एक सिस्टम एक्सटेंशन होता है जो निष्पादन की निगरानी करता है, एक डेमॉन जो स्थानीय डेटाबेस की सामग्री के आधार पर निष्पादन निर्णय लेता है, एक GUI एजेंट जो ब्लॉक निर्णय की स्थिति में उपयोगकर्ता को सूचित करता है, और सिस्टम प्रबंधन और सर्वर के साथ डेटाबेस को सिंक्रोनाइज़ करने के लिए एक कमांड-लाइन उपयोगिता है।
इसे Santa इसलिए नाम दिया गया है क्योंकि यह उन बाइनरीज़ पर नज़र रखता है जो शरारती या अच्छी हैं।
Santa के दस्तावेज़ Docs निर्देशिका में संग्रहीत हैं और https://santa.dev पर प्रकाशित हैं।
दस्तावेज़ों में परिनियोजन विकल्प, Santa के विभिन्न भागों के काम करने का विवरण और Santa को स्वयं विकसित करने के निर्देश शामिल हैं।
यदि आपके प्रश्न हैं या आरंभ करने में सहायता चाहिए, तो santa-dev समूह एक अच्छा स्थान है।
यदि आपको लगता है कि आपको एक बग मिला है, तो बेझिझक एक समस्या रिपोर्ट करें और हम जितनी जल्दी हो सके उत्तर देंगे।
यदि आपको लगता है कि आपको एक कमजोरी मिली है, तो कृपया प्रकटीकरण रिपोर्टिंग के लिए सुरक्षा नीति पढ़ें।
एकाधिक मोड: डिफ़ॉल्ट MONITOR मोड में, ब्लॉक किए गए के रूप में चिह्नित बाइनरी को छोड़कर सभी बाइनरी को चलाने की अनुमति दी जाएगी, जबकि उन्हें लॉग किया जाएगा और ईवेंट डेटाबेस में रिकॉर्ड किया जाएगा। LOCKDOWN मोड में, केवल सूचीबद्ध बाइनरी को चलाने की अनुमति है।
ईवेंट लॉगिंग: जब सिस्टम एक्सटेंशन लोड होता है, तो सभी बाइनरी लॉन्च लॉग किए जाते हैं। जब किसी भी मोड में, सभी अज्ञात या अस्वीकृत बाइनरी को बाद में एकत्रीकरण सक्षम करने के लिए डेटाबेस में संग्रहीत किया जाता है।
प्रमाणपत्र-आधारित नियम, ओवरराइड स्तरों के साथ: किसी बाइनरी के हैश (या 'फिंगरप्रिंट') पर भरोसा करने के बजाय, निष्पादन योग्य को उनके हस्ताक्षर प्रमाणपत्र द्वारा अनुमति/अवरुद्ध किया जा सकता है। इसलिए आप किसी दिए गए प्रकाशक द्वारा संस्करण अद्यतनों में उस प्रमाणपत्र के साथ हस्ताक्षरित सभी बाइनरी को अनुमति/अवरुद्ध कर सकते हैं। एक बाइनरी को केवल उसके प्रमाणपत्र द्वारा अनुमति दी जा सकती है यदि उसका हस्ताक्षर सही ढंग से मान्य हो, लेकिन किसी बाइनरी के फिंगरप्रिंट का नियम किसी प्रमाणपत्र के निर्णय को ओवरराइड कर देगा; अर्थात आप एक प्रमाणपत्र को अनुमति सूची में रख सकते हैं जबकि उस प्रमाणपत्र से हस्ताक्षरित बाइनरी को अवरुद्ध कर सकते हैं, या इसके विपरीत।
पथ-आधारित नियम (NSRegularExpression/ICU के माध्यम से): यह मैनेज्ड क्लाइंट (कॉन्फ़िगरेशन प्रोफ़ाइल का अग्रदूत, जो समान कार्यान्वयन तंत्र का उपयोग करता था), एप्लिकेशन लॉन्च प्रतिबंध mcxalr बाइनरी के माध्यम से पाए जाने वाली समान सुविधा प्रदान करता है। इस कार्यान्वयन में regex के माध्यम से कॉन्फ़िगर करने योग्य होने का अतिरिक्त लाभ है, और यह LaunchServices पर निर्भर नहीं है। जैसा कि विकी में विस्तार से बताया गया है, नियमों का मूल्यांकन करते समय इसकी सबसे कम प्राथमिकता होती है।
फेलसेफ प्रमाणपत्र नियम: आप एक अस्वीकार नियम नहीं डाल सकते जो launchd, उर्फ pid 1, और इसलिए macOS में उपयोग किए जाने वाले सभी घटकों पर हस्ताक्षर करने के लिए उपयोग किए जाने वाले प्रमाणपत्र को ब्लॉक करेगा। प्रत्येक OS अपडेट (और कुछ मामलों में पूरे नए संस्करण) में बाइनरी स्वचालित रूप से अनुमत होती हैं। यह Apple के App Store से बाइनरी को प्रभावित नहीं करता, जो सामान्य ऐप्स के लिए नियमित रूप से बदलने वाले विभिन्न प्रमाणपत्रों का उपयोग करते हैं। इसी तरह, आप Santa को स्वयं ब्लॉक नहीं कर सकते, और Santa अन्य Google ऐप्स से भिन्न एक अलग प्रमाणपत्र का उपयोग करता है।
उपयोगकर्ता स्तरीय घटक एक-दूसरे को मान्य करते हैं: प्रत्येक उपयोगकर्ता स्तरीय घटक (डेमॉन, GUI एजेंट और कमांड-लाइन उपयोगिता) XPC का उपयोग करके एक-दूसरे के साथ संचार करते हैं और जांचते हैं कि कोई भी संचार स्वीकार करने से पहले उनके हस्ताक्षर प्रमाणपत्र समान हैं।
कैशिंग: अनुमत बाइनरी को कैश किया जाता है ताकि अनुरोध करने के लिए आवश्यक प्रसंस्करण केवल तभी किया जाए जब बाइनरी पहले से कैश न हो।
कोई एकल सिस्टम या प्रक्रिया सभी हमलों को नहीं रोकेगी, या 100% सुरक्षा प्रदान नहीं करेगी। Santa को उपयोगकर्ताओं को स्वयं से बचाने में मदद करने के इरादे से लिखा गया है। लोग अक्सर मैलवेयर डाउनलोड करते हैं और उस पर भरोसा करते हैं, जिससे मैलवेयर को क्रेडेंशियल्स मिल जाते हैं, या अज्ञात सॉफ़्टवेयर को आपके सिस्टम के बारे में अधिक डेटा निकालने की अनुमति मिलती है। एक केंद्रीय रूप से प्रबंधित घटक के रूप में, Santa मशीनों के एक बड़े बेड़े में मैलवेयर के प्रसार को रोकने में मदद कर सकता है। स्वतंत्र रूप से, Santa आपके कंप्यूटर पर क्या चल रहा है, इसका विश्लेषण करने में सहायता कर सकता है।
Santa एक गहन-सुरक्षा रणनीति का हिस्सा है, और आपको जो भी उचित लगे, होस्ट की सुरक्षा के लिए अन्य तरीकों का उपयोग जारी रखना चाहिए।
Santa केवल निष्पादन (execve और वेरिएंट) को ब्लॉक करता है, यह dlopen के साथ लोड की गई डायनामिक लाइब्रेरीज़, डिस्क पर बदली गई लाइब्रेरीज़, या DYLD_INSERT_LIBRARIES का उपयोग करके लोड की गई लाइब्रेरीज़ से रक्षा नहीं करता।
स्क्रिप्ट्स: Santa वर्तमान में किसी भी ऐसे निष्पादन को अनदेखा करने के लिए लिखा गया है जो बाइनरी नहीं है। ऐसा इसलिए है क्योंकि प्रशासनिक लागत बनाम लाभ का मूल्यांकन करने के बाद, हमने पाया कि यह सार्थक नहीं था। इसके अतिरिक्त, कई एप्लिकेशन अस्थायी रूप से उत्पन्न स्क्रिप्ट का उपयोग करते हैं, जिन्हें हम संभवतः अनुमति सूची में नहीं रख सकते, और ऐसा न करने से समस्याएँ उत्पन्न होंगी। हमें इस पर पुनर्विचार करने में खुशी होगी (या कम से कम इसे एक विकल्प बनाने में) यदि यह दूसरों के लिए उपयोगी हो।
santactl कमांड-लाइन क्लाइंट में एक प्रबंधन सर्वर के साथ सिंक्रोनाइज़ करने के लिए एक फ़्लैग शामिल है, जो मशीन पर हुई ईवेंट अपलोड करता है और नए नियम डाउनलोड करता है। ऐसे कई ओपन-सोर्स सर्वर हैं जिनके साथ आप सिंक कर सकते हैं:
वैकल्पिक रूप से, santactl स्थानीय रूप से नियम कॉन्फ़िगर कर सकता है (सिंक सर्वर के बिना)।
Santa जैसा उपकरण वास्तव में स्क्रीनशॉट के लिए उपयुक्त नहीं है, इसलिए यहाँ एक वीडियो है।
इस प्रोजेक्ट में पैच का बहुत स्वागत है। कृपया CONTRIBUTING दस्तावेज़ देखें।
यह नहीं है एक आधिकारिक Google उत्पाद।