ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Fleet 上的 macOS 15 Sequoia CIS Benchmark 落地指南:策略、配置描述文件与修复脚本的完整实践

Fleet 上的 macOS 15 Sequoia CIS Benchmark 落地指南:策略、配置描述文件与修复脚本的完整实践 后端前端企业应用运维网络安全【免费下载链接】fleetOpen device management项目地址https://gitcode.com/GitHub_Trending/fl/fleet点击查看免费下载本篇技术指南以 Fleet 开源仓库中面向 macOS 15 Sequoia 的 CIS Benchmark 方案为核心系统讲解如何基于 docs/solutions/cis/macos-15 目录下的policies/GitOps 策略、configuration-profiles/Apple 配置描述文件与scripts/修复脚本三大资产在真实设备上完成 CIS 合规检查、配置强制与自动修复。读完本文你将掌握这套方案针对 CIS Benchmark v1.1.0 的完整覆盖范围、无法用策略检查的基准清单、需组织决策类检查的双策略处置方法以及如何通过fleetctl apply与 Fleet 页面把合规能力落地到你的 macOS 15 设备集群。一、方案概览CIS Benchmark 在 Fleet 中的落地形态CISCenter for Internet SecurityBenchmark 是业界广泛采用的安全配置基线。Fleet 在 docs/solutions/cis/macos-15/README.md 中明确说明本目录下的策略针对CIS macOS 15 Sequoia Benchmark v1.1.0编写完整细节需参考 CIS 官网发布的该版本基准原文。Fleet 并不只是简单地丢出一堆查询而是围绕检测 → 强制 → 修复三个环节将每个 CIS 控制项拆解为三类可消费的资产目录内容作用使用方式policies/GitOps 兼容的策略 YAMLcis-policy-queries.yml用 osquery 查询实时判断设备是否满足某项 CIS 要求fleetctl apply导入或在fleet.yml中以- path:引用configuration-profiles/Apple.mobileconfig描述文件通过 MDM 强制下发系统设置从源头保证策略检查项生效Fleet UI 上传或fleetctl applyscripts/Shell 修复脚本对无法用描述文件覆盖的控制项做命令行修复Fleet UI 上传或fleetctl apply并作为对应策略的run_script修复动作关联这一设计体现了 Fleet 一贯的 GitOps 理念策略、配置、脚本全部以文件形式存在于仓库中可以被版本管理、评审和审计追溯。仓库中的 articles/gitops-mode.md 与 articles/gitops-for-device-management.md 对这一工作流有更完整的论述。二、策略资产剖析一条 CIS 策略的完整结构policies/cis-policy-queries.yml是整套方案的核心共包含数百条策略文件全文约 3300 行每条策略遵循 Fleet 的 YAML 结构约定。先看文件头部说明purpose、tags、contributors、platforms是只读元数据GitOps 模式下不支持修改保留它们是为了供其他工具引用。以下面这条实际存在的策略为例- name: [macOS 15] CIS - Ensure Firewall Is Enabled # platforms: macOS platform: darwin description: A firewall minimizes the threat of unauthorized users gaining access to your system while connected to a network or the Internet. resolution: Go to the Network pane in System Settings and ensure Firewall is active. query: SELECT 1 FROM alf WHERE global_state 1;结构拆解name策略名称统一以[macOS 15] CIS -前缀标识便于在 Fleet UI 中检索与归类platformdarwin声明仅对 macOS 生效Fleet 支持 跨平台策略但 CIS macOS 基准只作用于 Apple 设备description该项控制的安全动机即 CIS 基准中的 Rationale便于审计人员与管理员理解为什么需要这条策略resolution不合规时的处置说明多数情况直接给出可执行命令或图形界面操作路径queryosquery SQL返回一行结果即视为通过pass否则判为 fail。2.1 策略查询的三类典型模式纵观 cis-policy-queries.yml查询可以归纳为三种模式理解它们有助于你自行扩展或维护策略模式一直接查系统状态表。例如防火墙策略查询alf表Application Layer Firewall 状态要求global_state 1已开启确保防火墙隐身模式已启用则在alf表上叠加stealth_enabled 1条件。模式二查managed_policies表验证 MDM 描述文件是否已下发。这是本目录中出现频率最高的模式例如确保下载新更新时可用即下载MDM Requiredquery: | SELECT 1 WHERE EXISTS ( SELECT 1 FROM managed_policies WHERE domaincom.apple.SoftwareUpdate AND nameAutomaticDownload AND (value 1 OR value true) ) AND NOT EXISTS ( SELECT 1 FROM managed_policies WHERE domaincom.apple.SoftwareUpdate AND nameAutomaticDownload AND (value ! 1 AND value ! true) );这类查询的特点是同时包含两个子句EXISTS验证期望值已存在NOT EXISTS排除冲突值从而在设备上同时存在多个同名策略时也能正确判定。类似的还有AutomaticallyInstallMacOSUpdates自动安装 macOS 更新、AutomaticallyInstallAppUpdates自动安装 App Store 应用更新、CriticalUpdateInstall安全响应与系统文件安装、enforcedSoftwareUpdateDelay更新延期不得超过 30 天等域均为com.apple.SoftwareUpdate或com.apple.applicationaccess。模式三查plist/file_lines/processes等底层表。用于无法通过 MDM 管理偏好强制、只能由用户或脚本设置的场景例如屏幕共享是否被禁用检查/var/db/com.apple.xpc.launchd/disabled.plist中com.apple.screensharing键是否为0。策略注释特别说明不使用launchd表因为它无法反映disabled.plist中的禁用状态——这是该偏好设置面板在服务曾被启用后再禁用时实际修改的文件打印机共享是否被禁用检查/etc/cups/cupsd.conf中是否还有Allow LOCAL行远程登录SSH是否禁用检查disabled.plist中的com.openssh.sshd远程管理Apple Remote Desktop是否禁用直接检查ARDAgent进程是否在运行蓝牙共享是否禁用用path LIKE /Users/%/Library/Preferences/ByHost/com.apple.Bluetooth.%.plist遍历所有用户偏好登录屏幕自定义消息查询plist表中/Library/Preferences/com.apple.loginwindow.plist的LoginwindowText键非空。2.2 需要注意的执行前提策略名称中的后缀揭示了其运行时依赖这一点容易被忽略(MDM Required)查询依赖managed_policies表意味着设备必须已通过 MDM 管理并下发了对应描述文件否则查询结果恒为失败。这类策略本质上验证的是描述文件是否到位而非用户行为是否合规(Fleetd Required)需要 Fleet 的 osquery agentfleetd具备相应表或权限(FDA Required)需要 Full Disk Access完全磁盘访问权限例如读取/Library/Preferences/com.apple.TimeMachine.plist检查 Time Machine 自动备份配置(Fleetd Required)且查询本身可能较长如确保所有 Apple 提供软件均为最新software_update表会标注查询可能超过 10 秒。三、配置描述文件MDM 强制的源头策略查询能命中通过前提是设备上真实存在正确的配置。configuration-profiles/目录中的.mobileconfig文件就是用来强制下发这些配置的。以 macos15-1.3.mobileconfig对应确保下载新更新时可用即下载已启用为例其结构如下?xml version1.0 encodingUTF-8? !DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd plist version1.0 dict keyPayloadContent/key array dict keyPayloadDisplayName/key stringtest/string keyPayloadType/key stringcom.apple.SoftwareUpdate/string keyPayloadIdentifier/key stringcom.fleetdm.cis-1.3.check/string keyPayloadUUID/key string5FDE6D58-79CD-447A-AFB0-BA32D889C396/string keyAutomaticDownload/key true/ /dict /array keyPayloadDescription/key stringtest/string keyPayloadDisplayName/key string[macOS 15] Ensure Download New Updates When Available Is Enabled/string keyPayloadIdentifier/key stringcom.fleetdm.macos15.cis-1.3/string keyPayloadRemovalDisallowed/key false/ keyPayloadScope/key stringSystem/string keyPayloadType/key stringConfiguration/string keyPayloadUUID/key string0A1C2F97-D6FA-4CDB-ABB6-47DF2B151F4F/string keyPayloadVersion/key integer1/integer /dict /plist关键要素PayloadContent中的PayloadType必须与策略查询中managed_policies.domain完全一致——这里是com.apple.SoftwareUpdate对应的策略查询才会命中PayloadContent中的键值对必须与策略查询中的name与期望值一致——这里是AutomaticDownload为true/外层PayloadDisplayName描述该配置对应的 CIS 编号与要求PayloadIdentifier遵循com.fleetdm.macos15.cis-编号的命名约定PayloadScope为System表示作用于整个系统而非某个用户。这种描述文件键值 ↔ 策略查询字段的对应关系是整套方案的灵魂先由描述文件把系统设置强制到位再由策略查询验证其确实到位两者必须配套部署才能得到合规结果。目录内还包含需要多段配置的控制项例如macos15-2.6.2-part1/2/3.mobileconfigFileVault 相关多段描述文件、macos15-5.2.3-and-5.2.4.mobileconfig密码复杂度合并文件、以及 macOS 15 新增的macos15-apple-intelligence-*.mobileconfig系列Apple Intelligence 扩展、邮件、备忘录、写作工具分别独立成文件。密码策略域方面以 macos15-5.2.1.mobileconfig账户锁定阈值为例其PayloadType为com.apple.mobiledevice.passwordpolicy通过maxFailedAttempts键值设为5来限制连续失败登录次数。四、修复脚本策略的run_script配套对于无法仅靠描述文件落地的控制项scripts/目录提供了对应的 Shell 修复脚本通常可挂接到策略的run_script修复动作上实现检测失败 → 一键修复的闭环。从文件内容看脚本风格务实直接例如macos15-CIS_5.8.sh登录横幅写入告警文本并修正属主与权限echo Content of the banner | sudo tee /Library/Security/PolicyBanner.txt /usr/bin/sudo /usr/sbin/chown root:wheel /Library/Security/PolicyBanner.txt /usr/bin/sudo /bin/chmod or /Library/Security/PolicyBanner.txtmacos15-CIS_2.3.3.1.sh禁用 ODSAgent 目录服务/usr/bin/sudo /bin/launchctl disable system/com.apple.ODSAgentmacos15-CIS_2.10.3.sh设置登录窗口提示文本sudo /usr/bin/defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText Test Message 1脚本与策略的对应关系可以通过名称直观识别例如策略文件中的Ensure a Custom Message for the Login Screen Is Enabled查询LoginwindowText非空就与 macos15-CIS_2.10.3.sh 形成查询-修复配对。部署时只需在对应策略的run_script字段中引用该脚本Fleet 即可在策略失败时自动触发修复这一机制在 articles/policy-automation-run-script.md 中有详细说明。五、覆盖边界无法用策略检查的 CIS 控制项并非所有 CIS 基准条目都能通过 osquery 策略自动判定。README 明确列出以下 9 项无法用 Fleet 策略检查的基准它们大多依赖人工审计或系统外部信息2.1.2Audit App Store Password SettingsApp Store 密码设置审计2.3.3.12Ensure Computer Name Does Not Contain PII or Protected Organizational Information计算机名不得包含 PII 或受保护的组织信息2.6.6Audit Lockdown Mode锁定模式审计2.11.2Audit Touch ID and Wallet Apple Pay SettingsTouch ID 与钱包/Apple Pay 设置审计2.13.1Audit Passwords System Preference Setting密码系统偏好设置审计2.14.1Audit Notification Focus Settings通知与专注模式设置审计3.7Audit Software Inventory软件清单审计6.2.1Ensure Protect Mail Activity in Mail Is Enabled邮件隐私保护审计2.6.3.5Ensure Share iCloud Analytics Is Disabled (manual)共享 iCloud 分析手动这些条目中部分标注为Audit审计类CIS 本身要求定期人工复核部分依赖主观判断如计算机名是否含敏感信息还有像邮件隐私保护这类设置在 macOS 15 中缺乏稳定的可查询接口。针对这些条目正确的落地方式是纳入组织内部的人工审计流程或补充脚本化检查而不是期待一条策略查询给出结论。六、需要组织决策的检查双策略设计模式CIS 对部分控制项不给出硬性推荐值而是把参数决定权交给基准实施者。README 明确指出对于以下 4 项Fleet 同时提供了-enabled与-disabled两个版本2.1.1.1Audit iCloud Keychain2.1.1.2Audit iCloud Drive2.5.1Audit Siri2.8.1Audit Universal Control策略名称会带有-enabled或-disabled后缀如2.1.1.1-enabled对应的描述文件也成对出现如 macos15-2.1.1.1-enable.mobileconfig 与macos15-2.1.1.2-disable.mobileconfig。这种设计的运作逻辑是两个版本同时导入时必有一条失败——这正是刻意为之用于提醒组织你还没有做出决定一旦组织明确了策略方向例如允许 iCloud Keychain 同步或禁止 iCloud Drive删除与决定相反的那条策略即可剩下的策略将稳定返回通过。在策略文件中可以看到对应注释例如 iCloud Drive 条目query: | SELECT 1 WHERE EXISTS ( SELECT 1 FROM managed_policies WHERE domaincom.apple.applicationaccess AND nameallowCloudDocumentSync AND (value 0 OR value false) ) AND NOT EXISTS ( SELECT 1 FROM managed_policies WHERE domaincom.apple.applicationaccess AND nameallowCloudDocumentSync AND (value ! 0 AND value ! false) ); /*CIS does not make a hard recommendation for this policy. Fleet has provided two policies (one failing, one succeeding). Depending on your organizations decision, you can delete this policy or its counterpart.*/iCloud KeychainallowCloudKeychainSync、SiriallowAssistant以及 Siri 的多个子字段TypeToSiriEnabled、StatusMenuVisible、VoiceTriggerUserEnabled、LockscreenEnabled均以-enabled/-disabled成对存在于策略文件中遵循同样的模式。对于 iCloud 类控制描述文件中给出的键值规范非常明确PayloadType为com.apple.applicationaccessallowCloudDocumentSync/allowCloudKeychainSync按决定设为true/或false/。七、CIS 未强制但 Fleet 仍提供的密码复杂度策略README 还特别指出CIS 已决定不强制要求以下 4 项密码复杂度设置5.2.3Ensure Complex Password Must Contain Alphabetic Characters Is Configured5.2.4Ensure Complex Password Must Contain Numeric Character Is Configured5.2.5Ensure Complex Password Must Contain Special Character Is Configured5.2.6Ensure Complex Password Must Contain Uppercase and Lowercase Characters Is Configured但 Fleet仍以策略形式提供了这些检查目录中的 macos15-5.2.3-and-5.2.4.mobileconfig 与macos15-5.2.5.mobileconfig即对应此类控制。这样做的原因是部分行业或组织有比 CIS 默认基线更严格的口令策略需求。README 给出的处置建议非常干脆如果组织不打算实施这些更严格的要求直接删除对应策略即可不影响其余 CIS 基线的合规判定。八、部署实操从文件到生产设备结合 README 与仓库其他文档完整落地流程如下步骤 1准备 Fleet 环境确保 Fleet 服务器可用、目标 macOS 15 设备已通过 MDM 与 fleetd 完成注册enrollment相关流程可参考 articles/enroll-macos-devices.md实际仓库对应文件为 docs/Using Fleet 相关章节及 articles/end-user-authentication.md。步骤 2导入策略GitOps 方式策略文件是标准 Fleet 策略 YAML支持两种导入路径# 方式一直接应用整个策略文件 fleetctl apply -f docs/solutions/cis/macos-15/policies/cis-policy-queries.yml # 方式二在 GitOps fleet.yml 中以 - path: 引用推荐便于纳入 Git 工作流 # fleet.yml 中: # controls: # policies: # - path: docs/solutions/cis/macos-15/policies/cis-policy-queries.ymlGitOps 模式的整体理念可参见 articles/gitops-mode.md 与 articles/preventing-mistakes-with-gitops.md。步骤 3上传配置描述文件在 Fleet UI 的 MDM 配置描述文件管理页面逐条上传configuration-profiles/下的.mobileconfig文件或同样通过fleetctl apply下发。务必把描述文件与对应策略的适用范围对齐同一团队/同一组设备否则会出现策略在跑、描述文件没下发的持续失败状态。步骤 4关联修复脚本对策略名带(Fleetd Required)、且存在对应脚本的控制项如登录横幅 2.10.3、目录服务 2.3.3.1 等在策略编辑页面把scripts/中的对应脚本设置为run_script修复动作实现失败自动修复。步骤 5处理决策类策略按第六节所述在明确组织决定后删除-enabled或-disabled中多余的一条按第七节评估是否需要密码复杂度策略不需要则一并删除。步骤 6验证在 Fleet UI 的主机详情 → 策略视图中观察各 CIS 策略的通过/失败情况对(MDM Required)类策略先确认描述文件是否已成功下发可参考仓库中 MDM 配置描述文件状态相关文档。需要注意的是部分查询如软件更新检查运行时间较长应给予足够的执行窗口。九、方案边界与最佳实践总结基准版本锁定本目录针对 CIS macOS 15 Benchmarkv1.1.0编写。若 CIS 发布更高版本需要人工比对增量控制项不能简单认为目录内容自动覆盖新版本检测 ≠ 强制策略查询只负责判断真正的强制靠.mobileconfig描述文件修复靠scripts/脚本三者缺一不可人工审计项不可自动化第五节的 9 项清单必须纳入人工审计 SOP避免误以为导入策略 全量合规决策类策略会制造持续告警同时存在-enabled/-disabled时必有失败项这是设计使然应在组织决策后收敛元数据仅作参考策略文件中的purpose、tags、contributors等字段在 GitOps 模式下为只读不要试图通过 GitOps 修改它们。通过以上方式你可以把 macOS 15 Sequoia 的 CIS 基线转化为 Fleet 中可持续运行的自动化合规体系将人工翻设置升级为策略检测 描述文件强制 脚本修复的闭环并借助 GitOps 让整套合规配置可审计、可回滚、可复现。赞分享后端前端企业应用运维网络安全【免费下载链接】fleetOpen device management项目地址https://gitcode.com/GitHub_Trending/fl/fleet点击查看免费下载相关推荐基于 Fleet 的 macOS 15 Sequoia CIS Benchmark 合规策略实战指南基于 Fleet 的 macOS 15 Sequoia CIS Benchmark 合规策略实战指南 本指南以 Fleet 开源仓库中 ee/cis/macos后端前端企业应用运维网络安全使用 Fleet 落地 CIS Windows 10 Enterprise Benchmark v3.0.0策略检测、SyncML 配置与 PowerShell 自动修复全指南使用 Fleet 落地 CIS Windows 10 Enterprise Benchmark v3.0.0策略检测、SyncML 配置与 PowerShel后端前端企业应用运维网络安全Fleet 无配置Config-lessfleetd 部署macOS 配置描述文件与 Windows Base MSI 的完整实践Fleet 无配置Config lessfleetd 部署macOS 配置描述文件与 Windows Base MSI 的完整实践 本文讲解 Fleet后端前端企业应用运维网络安全上一篇Awesome-Dify-Workflow声明式AI编排引擎的架构范式解析下一篇终极指南CodeGuide项目中的组合算法详解与实战应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表