
Система авторизации приложений в пользовательском режиме для MacOS, написанная на Swift.
Sinter — это 100% пользовательский агент безопасности конечных точек для macOS 10.15 и выше, написанный на Swift.
Sinter использует пользовательский API EndpointSecurity для подписки и получения обратных вызовов авторизации от ядра macOS для набора типов событий, связанных с безопасностью. Текущая версия Sinter поддерживает разрешение/запрет выполнения процессов; в будущих версиях мы планируем поддержку других типов событий, таких как файловые, сокетные и события ядра.
Sinter находится в разработке. Мы приветствуем отзывы. Если вы заинтересованы в участии или спонсировании нас, чтобы помочь реализовать его потенциал, свяжитесь с нами.
Планируемые будущие возможности:
Первым решением с открытым исходным кодом для macOS для разрешения/запрета процессов был Google Santa. Мы фанаты Santa и вносили свой вклад в его код в прошлом. Однако в течение долгого времени многие в сообществе macOS просили решение с открытым исходным кодом для отслеживания и управления большим, чем просто события процессов.
Мы увидели идеальную платформу для создания такой возможности с API EndpointSecurity в macOS 10.15. Создание с нуля на основе строго пользовательского API означало, что мы могли попробовать более простую конструкцию и использовать современный язык программирования с более безопасной работой с памятью и лучшей производительностью. Таким образом, мы приступили к разработке Sinter, сокращение от "Sinter Klausen", другого имени Санта-Клауса.
Загрузите и установите последнюю версию Sinter, используя ссылку установщика pkg на странице Releases.
После установки 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. Плагин local включит раздел конфигурации 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). Обратите внимание, что хотя инструменты CLI могут получить полный хеш SHA256, API Kernel/EndpointSecurity ограничен первыми 20 байтами.
Сборка Sinter требует определенных сертификатов кода и разрешений, которые Apple должна предоставить вашей организации. Однако Sinter все еще можно собрать из исходников и запустить локально на тестовой системе с отключенным SIP. Инструкции см. в Sinter wiki.
Sinter лицензирован и распространяется под лицензией AGPLv3. Свяжитесь с нами, если вы ищете исключение из условий.