Google Santa项目文件访问授权功能详解
概述
Google Santa是一个macOS安全监控工具,其文件访问授权(File Access Authorization)功能允许管理员监控文件系统路径,并对潜在的不必要访问进行记录或阻止。本文将详细介绍该功能的配置和使用方法。
功能简介
文件访问授权功能主要提供以下能力:
- 监控指定文件路径的访问行为
- 可选择仅记录(Audit)或直接阻止(Deny)违规操作
- 支持为特定进程设置例外规则
- 提供详细的访问日志记录
重要提示:此功能仅支持macOS 13及以上版本。
功能启用
要启用文件访问授权功能,需要在Santa主配置文件中设置以下两个关键参数:
FileAccessPolicyPlist
- 指定文件访问策略配置文件的路径FileAccessPolicyUpdateIntervalSec
- 设置策略重新应用的间隔时间(秒)
配置文件详解
文件访问授权功能的配置文件采用Plist格式,主要包含以下结构:
根级配置项
| 配置项 | 类型 | 必填 | 说明 | |-------|------|------|------| | Version | 字符串 | 是 | 配置版本号,会记录在事件日志中 | | EventDetailURL | 字符串 | 否 | 事件详情页面URL模板 | | EventDetailText | 字符串 | 否 | 事件详情按钮显示文本(最长48字符) | | WatchItems | 字典 | 否 | 监控规则集合 |
监控规则配置
每个监控规则包含以下配置项:
| 配置项 | 类型 | 必填 | 说明 | |-------|------|------|------| | Paths | 数组 | 是 | 要监控的路径模式列表 | | Options | 字典 | 否 | 规则行为选项 | | Processes | 数组 | 否 | 例外进程列表 |
路径配置
路径配置支持两种格式:
- 简单字符串格式:使用默认属性值
- 字典格式:可自定义属性
路径配置支持以下属性:
| 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | Path | 字符串 | - | 要监控的路径模式 | | IsPrefix | 布尔 | false | 是否作为前缀路径匹配 |
规则选项
规则选项控制监控行为:
| 选项 | 类型 | 默认值 | 说明 | |------|------|--------|------| | AllowReadAccess | 布尔 | false | 是否允许只读访问 | | AuditOnly | 布尔 | true | 是否仅记录不阻止 | | InvertProcessExceptions | 布尔 | false | 是否反转进程例外逻辑 | | EnableSilentMode | 布尔 | false | 是否禁用GUI弹窗 | | EnableSilentTTYMode | 布尔 | false | 是否禁用TTY消息 |
进程例外
进程例外配置支持以下匹配条件:
| 条件 | 类型 | 说明 | |------|------|------| | BinaryPath | 字符串 | 进程执行路径 | | TeamID | 字符串 | 进程Team ID | | CertificateSha256 | 字符串 | 进程证书SHA256 | | CDHash | 字符串 | 进程CDHash | | SigningID | 字符串 | 进程签名ID | | PlatformBinary | 布尔 | 是否为平台二进制 |
配置示例
以下是一个完整的配置文件示例:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Version</key>
<string>v0.1</string>
<key>WatchItems</key>
<dict>
<key>ProtectUserData</key>
<dict>
<key>Paths</key>
<array>
<string>/Users/*/Documents</string>
<dict>
<key>Path</key>
<string>/Users/*/Desktop</string>
<key>IsPrefix</key>
<true/>
</dict>
</array>
<key>Options</key>
<dict>
<key>AllowReadAccess</key>
<true/>
<key>AuditOnly</key>
<false/>
</dict>
<key>Processes</key>
<array>
<dict>
<key>BinaryPath</key>
<string>/Applications/Preview.app/Contents/MacOS/Preview</string>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>
工作原理
规则匹配机制
当多个规则匹配同一路径时,Santa会应用"最具体"的规则(即路径匹配最长的规则)。例如:
- 规则1:
/tmp/foo
(前缀匹配) - 规则2:
/tmp/foo.txt
(精确匹配) - 规则3:
/tmp
(前缀匹配)
对于不同路径的访问将应用不同规则:
| 访问路径 | 应用规则 | 原因 | |---------|---------|------| | /tmp/foo | 规则1 | 前缀匹配且比规则3更具体 | | /tmp/foo.txt | 规则2 | 精确匹配最具体 | | /tmp/bar | 规则3 | 仅匹配规则3 |
路径模式匹配
路径模式匹配是静态的,仅在配置加载时评估。这意味着:
- 新增的文件/目录不会自动监控,除非重新加载配置
- 配置中的
FileAccessPolicyUpdateIntervalSec
控制配置重新加载间隔
特殊路径处理
- 符号链接:必须使用解析后的路径,不能直接监控符号链接
- 硬链接:不允许为监控路径创建硬链接,已有硬链接可能绕过监控
- 大小写敏感:所有路径匹配都是大小写敏感的
日志记录
当发生文件访问事件时,Santa会记录详细日志。日志格式支持两种:
- 文本格式示例:
action=FILE_ACCESS|policy_version=v0.1|policy_name=ProtectUserData|path=/Users/test/Documents/secret.txt|access_type=OPEN|decision=DENY|pid=123|process=malware|processpath=/tmp/malware
- Protobuf格式:使用
santa.proto
中定义的FileAccess
消息格式
最佳实践
- 对于重要目录,建议同时配置精确匹配和前缀匹配规则
- 生产环境应将
AuditOnly
设为false以启用实际防护 - 为常用合法程序配置进程例外,减少误报
- 定期检查日志,优化规则配置
- 注意macOS系统路径的特殊性(如/var是符号链接)
注意事项
- 某些系统二进制文件(默认静默集)的访问不会被记录
- 避免配置重复路径,可能导致不可预测的行为
- 路径模式匹配不支持正则表达式,仅支持简单通配符
- 监控大量路径可能影响系统性能
通过合理配置Google Santa的文件访问授权功能,可以有效保护macOS系统中的敏感文件,防止未经授权的访问和修改。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考