
MacOS के लिए Swift में लिखित एक उपयोगकर्ता-मोड एप्लिकेशन प्राधिकरण प्रणाली
Sinter एक 100% उपयोगकर्ता-मोड एंडपॉइंट सुरक्षा एजेंट है जो macOS 10.15 और उससे ऊपर के लिए है, जो Swift में लिखा गया है।
Sinter उपयोगकर्ता-मोड EndpointSecurity API का उपयोग करके macOS कर्नेल से सब्सक्राइब करने और प्राधिकरण कॉलबैक प्राप्त करने के लिए करता है, सुरक्षा-संबंधित घटना प्रकारों के एक सेट के लिए। Sinter का वर्तमान संस्करण प्रक्रिया निष्पादन को अनुमति/अस्वीकार करने का समर्थन करता है; भविष्य के संस्करणों में हम अन्य प्रकार की घटनाओं जैसे फ़ाइल, सॉकेट और कर्नेल घटनाओं का समर्थन करने का इरादा रखते हैं।
Sinter एक कार्य-प्रगति पर है। प्रतिक्रिया का स्वागत है। यदि आप इसकी क्षमता प्राप्त करने में मदद करने के लिए योगदान या प्रायोजित करने में रुचि रखते हैं, तो हमसे संपर्क करें.
नियोजित आगामी विशेषताएँ:
प्रक्रियाओं को अनुमति/अस्वीकार करने का पहला खुला-स्रोत macOS समाधान Google Santa था। हम Santa के प्रशंसक हैं, और अतीत में इसके कोडबेस में योगदान दिया है। हालांकि, लंबे समय से, macOS समुदाय में कई लोगों ने केवल प्रक्रिया घटनाओं से अधिक को ट्रैक और प्रबंधित करने के लिए एक खुला-स्रोत समाधान मांगा है।
हमने macOS 10.15 में EndpointSecurity API के साथ ऐसी क्षमता बनाने के लिए आदर्श मंच देखा। पूरी तरह से उपयोगकर्ता-मोड API के आसपास जमीन से शुरू करने का मतलब था कि हम एक सरल डिज़ाइन का प्रयास कर सकते हैं, और सुरक्षित मेमोरी हैंडलिंग और बेहतर प्रदर्शन के साथ एक आधुनिक प्रोग्रामिंग भाषा का उपयोग कर सकते हैं। इस प्रकार, हमने Sinter को विकसित करने का निर्णय लिया, जो "Sinter Klausen" का संक्षिप्त रूप है, जो सांता क्लॉज़ का दूसरा नाम है।
Releases पृष्ठ से pkg इंस्टॉलर लिंक का उपयोग करके Sinter का नवीनतम संस्करण डाउनलोड और इंस्टॉल करें।
Sinter इंस्टॉल करने के बाद, आपको Sinter.app के लिए "Full Disk Access" अनुमति सक्षम करनी होगी। सिस्टम प्रेफरेंसेज, सिक्योरिटी, प्राइवेसी टैब, फुल डिस्क एक्सेस खोलकर ऐसा करें। Sinter.app के लिए आइटम चेक करें। यदि MDM का उपयोग कर रहे हैं, तो आप अपने एंडपॉइंट पर इस अनुमति को स्वचालित रूप से सक्षम कर सकते हैं, और किसी उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं होगी।
Sinter को /etc/sinter/config.json पर एक विन्यास फ़ाइल मौजूद होनी चाहिए। स्रोत ट्री में ./config/config.json पर एक उदाहरण प्रदान किया गया है:
{
"Sinter": {
"decision_manager": "local",
"logger": "filesystem",
"allow_unsigned_programs": "true",
"allow_invalid_programs": "true",
"allow_unknown_programs": "true",
"allow_expired_auth_requests": "true",
"allow_misplaced_applications": "true",
"config_update_interval": 600,
"allowed_application_directories": [
"/bin",
"/usr/bin",
"/usr/local/bin",
"/Applications",
"/System",
"/usr/sbin",
"/usr/libexec",
],
},
"FilesystemLogger": {
"log_file_path": "/var/log/sinter.log",
},
"RemoteDecisionManager": {
"server_url": "https://server_address:port",
"machine_identifier": "identifier",
},
"LocalDecisionManager": {
"rule_database_path": "/etc/sinter/rules.json",
}
}
decision_manager मान बदलकर डिसीजन मैनेजर प्लगइन का चयन किया जा सकता है। local प्लगइन LocalDecisionManager विन्यास अनुभाग को सक्षम करेगा, Sinter को दिए गए पथ पर मौजूद स्थानीय नियम डेटाबेस का उपयोग करने का निर्देश देगा। इसके बजाय sync-server प्लगइन का उपयोग करके Santa-संगत सिंक-सर्वर का उपयोग करना संभव है। यह RemoteDecisionManager विन्यास अनुभाग को सक्षम करता है, जहां सर्वर URL और मशीन पहचानकर्ता सेट किया जा सकता है।
वर्तमान में दो लॉगर प्लगइन लागू किए गए हैं:
Sinter को उन अनुप्रयोगों को लॉग और वैकल्पिक रूप से अस्वीकार करने के लिए कॉन्फ़िगर करना संभव है जो किसी अनुमत फ़ोल्डर से प्रारंभ नहीं किए गए हैं।
sudo /Applications/Sinter.app/Contents/MacOS/Sinter --install-notification-server/Applications/Sinter.app/Contents/MacOS/Sinter --start-notification-serverSinter में मोड लागू नहीं हैं, क्योंकि सब कुछ नियम-आधारित है। निम्नलिखित सेटिंग्स को समायोजित करके निगरानी कार्यक्षमता को लागू करना संभव है:
नियम डेटाबेस JSON प्रारूप में लिखे जाते हैं। यहाँ एक उदाहरण डेटाबेस है जो cmake.org से CMake एप्लिकेशन बंडल को अनुमति देता है:
{
"rules": [
{
"rule_type": "BINARY",
"policy": "ALLOWLIST",
"sha256": "BDD0AF132D89EA4810566B3E1E0D1E48BAC6CF18D0C787054BB62A4938683039",
"custom_msg": "CMake"
}
]
}
Sinter वर्तमान में केवल BINARY नियमों का समर्थन करता है, ALLOWLIST या DENYLIST नीतियों का उपयोग करते हुए। कोड निर्देशिका हैश मान codesign टूल आउटपुट से लिया जा सकता है (उदाहरण: codesign -dvvv /Applications/CMake.app)। ध्यान दें कि भले ही CLI उपकरण पूर्ण SHA256 हैश प्राप्त कर सकते हैं, कर्नेल/EndpointSecurity API पहले 20 बाइट्स तक सीमित है।
Sinter बनाने के लिए कुछ कोड-हस्ताक्षर प्रमाणपत्र और एंटाइटेलमेंट की आवश्यकता होती है जो Apple को आपके संगठन को प्रदान करने होंगे। हालांकि, Sinter को स्रोत से बनाया जा सकता है और SIP अक्षम के साथ परीक्षण प्रणाली पर स्थानीय रूप से चलाया जा सकता है। निर्देशों के लिए, Sinter विकी देखें।
Sinter AGPLv3 लाइसेंस के तहत लाइसेंस प्राप्त और वितरित किया जाता है। यदि आप शर्तों के अपवाद की तलाश में हैं तो हमसे संपर्क करें।