Sinter 是一个 100% 用户态端点安全代理,适用于 macOS 10.15 及以上版本,使用 Swift 编写。
Sinter 利用用户态 EndpointSecurity API 订阅并从 macOS 内核接收授权回调,针对一组安全相关的事件类型。当前版本支持允许/拒绝进程执行;在未来的版本中,我们计划支持其他类型的事件,如文件、套接字和内核事件。
Sinter 是一个正在进行中的工作。 欢迎反馈。如果您有兴趣贡献或赞助我们以帮助实现其潜力,请与我们联系。
即将推出的功能:
第一个开源 macOS 解决方案用于允许/拒绝进程的是 Google Santa。我们是 Santa 的粉丝,并且过去曾为其代码库做出贡献。然而,长期以来,macOS 社区中的许多人都要求一个开源解决方案来跟踪和管理 超出 进程事件的更多内容。
我们认为 macOS 10.15 中的 EndpointSecurity API 是构建这种能力的理想平台。从头开始围绕严格的用户态 API 设计,意味着我们可以尝试更简单的设计,并使用一种具有更安全内存处理和更好性能的现代编程语言。因此,我们着手开发 Sinter,它是“Sinter Klausen”的简称,即圣诞老人的另一个名字。
从 Releases 页面下载并安装最新版本的 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 值来选择决策管理器插件。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-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 wiki。
Sinter 根据 AGPLv3 许可证许可和分发。如果您需要例外条款,请联系我们。