
نظام ترخيص تطبيقات في وضع المستخدم لنظام MacOS مكتوب بلغة Swift
Sinter هو وكيل أمان لنقاط النهاية يعمل في وضع المستخدم بنسبة 100% لنظام macOS 10.15 وما فوق، مكتوب بلغة Swift.
يستخدم Sinter واجهة برمجة تطبيقات EndpointSecurity في وضع المستخدم للاشتراك في استدعاءات التفويض من نواة macOS واستلامها، لمجموعة من أنواع الأحداث ذات الصلة بالأمان. الإصدار الحالي من Sinter يدعم السماح/رفض تنفيذ العمليات؛ في الإصدارات المستقبلية نعتزم دعم أنواع أخرى من الأحداث مثل أحداث الملفات والمآخذ والنواة.
Sinter قيد التطوير. الترحيب بالملاحظات. إذا كنت مهتمًا بالمساهمة أو رعايتنا للمساعدة في تحقيق إمكاناته، تواصل معنا.
الميزات المخطط لها في المستقبل:
الحل الأول مفتوح المصدر لنظام macOS للسماح/رفض العمليات كان Google Santa. نحن معجبون بـ Santa، وقد ساهمنا في قاعدة الكود الخاصة به في الماضي. لفترة طويلة، مع ذلك، طلب العديد من مجتمع macOS حلاً مفتوح المصدر لتتبع وإدارة أكثر من مجرد أحداث العملية.
رأينا المنصة المثالية لبناء هذه القدرة مع واجهة برمجة تطبيقات EndpointSecurity في macOS 10.15. البدء من الصفر حول واجهة برمجة تطبيقات تعمل في وضع المستخدم بشكل صارم يعني أنه يمكننا محاولة تصميم أبسط، واستخدام لغة برمجة حديثة مع معالجة أكثر أمانًا للذاكرة وأداء أفضل. لذلك، شرعنا في تطوير Sinter، وهو اختصار لـ "Sinter Klausen"، اسم آخر لسانتا كلوز.
قم بتنزيل وتثبيت أحدث إصدار من Sinter باستخدام رابط مثبت pkg من صفحة الإصدارات.
بعد تثبيت Sinter، يجب تمكين إذن "الوصول الكامل إلى القرص" لتطبيق Sinter.app. قم بذلك عن طريق فتح تفضيلات النظام، علامة التبويب الأمان والخصوصية، الوصول الكامل إلى القرص. حدد العنصر الخاص بـ 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. سيقوم المكون الإضافي المحلي بتمكين قسم تكوين LocalDecisionManager، مما يوجه Sinter لاستخدام قاعدة البيانات المحلية للقواعد الموجودة في المسار المحدد. من الممكن استخدام خادم مزامنة متوافق مع Santa، عن طريق استخدام المكون الإضافي sync-server بدلاً من ذلك. هذا يمكّن قسم تكوين RemoteDecisionManager، حيث يمكن تعيين عنوان URL للخادم ومعرف الجهاز.
هناك مكونان إضافيان للتسجيل تم تنفيذهما حاليًا:
من الممكن تكوين Sinter لتسجيل ورفض التطبيقات التي لم يتم تشغيلها من مجلد مسموح به اختياريًا.
sudo /Applications/Sinter.app/Contents/MacOS/Sinter --install-notification-server/Applications/Sinter.app/Contents/MacOS/Sinter --start-notification-serverلم يتم تنفيذ الأوضاع في Sinter، حيث كل شيء يعتمد على القواعد. من الممكن تنفيذ وظيفة المراقبة عن طريق تعديل الإعدادات التالية:
قواعد البيانات مكتوبة بتنسيق JSON. إليك مثال لقاعدة بيانات تسمح بحزمة تطبيق CMake من cmake.org:
{
"rules": [
{
"rule_type": "BINARY",
"policy": "ALLOWLIST",
"sha256": "BDD0AF132D89EA4810566B3E1E0D1E48BAC6CF18D0C787054BB62A4938683039",
"custom_msg": "CMake"
}
]
}
يدعم Sinter حاليًا قواعد BINARY فقط، باستخدام سياسات ALLOWLIST أو DENYLIST. يمكن الحصول على قيمة تجزئة دليل الكود من مخرجات أداة codesign (مثال: codesign -dvvv /Applications/CMake.app). لاحظ أنه على الرغم من أن أدوات سطر الأوامر يمكنها الحصول على تجزئة SHA256 كاملة، فإن واجهة برمجة تطبيقات Kernel/EndpointSecurity تقتصر على أول 20 بايت.
يتطلب بناء Sinter شهادات وتراخيص معينة لتوقيع الكود يجب أن تمنحها Apple لمؤسستك. ومع ذلك، لا يزال من الممكن بناء Sinter من المصدر وتشغيله محليًا على نظام اختبار مع تعطيل SIP. للحصول على التعليمات، راجع ويكي Sinter.
Sinter مرخص وموزع بموجب ترخيص AGPLv3. اتصل بنا إذا كنت تبحث عن استثناء للشروط.