基于 Bash 的 macOS 安全审计工具包,用于对照 CIS Benchmark 建议检查系统加固设置,并生成 JSON/HTML 报告。
作者:Bartłomiej Pogwizd · https://www.youtube.com/@pTech-pl
该工具包包含两个脚本:
auditMAC.sh — 运行完整的安全审计,并将结果输出到终端和 TSV 数据文件generate_reports.sh — 将 TSV 数据文件转换为 JSON 报告和带样式的 HTML 报告
sudo 权限(多项检查需要)chmod +x auditMAC.sh
./auditMAC.sh
该脚本将:
sudo 密码(仅在本地使用,绝不被存储)将文件(auditMAC.sh 和 generate_reports.sh)放在同一文件夹中 json 和 html 文件将显示在该文件夹中,它们会自动生成
这将在当前目录中生成两个文件:
macos_security_report.jsonmacos_security_report.html========================================
macOS Security / Audit Report
Author: Bartłomiej Pogwizd / youtube.com/pTech
Version: 2.5
========================================
System Security
----------------------------------------
Firewall OK Enabled
SIP OK Enabled
FileVault FAIL Disabled
Gatekeeper OK Enabled
...
Security Score 72/100
Risk Level: Medium
Passed 31
Warnings 4
Failures 8
状态图例:
| 状态 | 含义 |
|---|---|
OK | 设置符合推荐值 |
WARN | 设置无法确定或处于灰色地带 |
FAIL | 设置不符合建议 |
INFO |
评分计算公式如下:
score = (passed × 100 + warnings × 50) / total_checks
| 分数 | 风险等级 |
|---|---|
| 80–100 | 🟢 低 |
| 50–79 | 🟡 中 |
| 0–49 | 🔴 高 |
HTML/JSON 报告中的每项检查都带有 CIS macOS Benchmark ID 标签(例如 2.1.1 对应防火墙,2.2.1 对应 FileVault)。这样可以方便地对照官方 CIS 文档,获取修复指导。
sudo 仅用于需要提升权限的命令(例如 fdesetup、systemsetup、launchctl)/tmp 下以 umask 077 创建,并在退出时始终清理,即使出错或按 Ctrl+C 也会清理INFO,并附上手动验证说明MIT — 可自由使用、修改和分享。
欢迎提交 Pull Request 和 Issue。如果某项检查在你的 macOS 版本上产生不正确的结果,请打开 Issue,并附上 sw_vers 的输出。
| 类别 | 检查项 |
|---|
| 系统安全 | 防火墙、SIP、安全启动、Gatekeeper、FileVault、固件密码、认证 Root |
| 隐私 | 诊断数据上传、Siri 数据共享、定位服务、AirPlay 接收器、屏幕锁定、访客账户、自动登录 |
| 更新与时间 | 待安装更新、自动下载、关键更新、网络时间、网络唤醒 |
| 共享与远程访问 | 屏幕共享、SMB、打印机共享、远程登录、远程管理、AirDrop、Handoff |
| 系统服务 | tftpd、nfsd、httpd、uucp、sshd |
| 用户与权限 | 管理员账户、当前用户角色、Root 账户状态 |
| 网络与端口 | 开放的监听端口(IPv4/IPv6) |
| 启动项 | LaunchAgents 和 LaunchDaemons(系统与用户) |
| SSH 加固 | PermitRootLogin、PasswordAuthentication、PubkeyAuthentication、AllowUsers |
| 系统扩展 | 活动/等待/已终止的内核扩展 |
| 仅供参考,不作出通过/失败判断 |