Microsoft Defender for Endpoint 中的篡改保护有助于防止 macOS 设备上对安全设置、文件和进程的未经授权更改。 它还有助于防止未经授权的用户移除 Defender for Endpoint。
使用本文,通过 Microsoft Intune、Jamf 或 mdatp 命令行工具配置篡改防护。 您还可以验证有效配置,测试保护,配置可信管理进程的排除项,并排查配置问题。 关于防篡改及其保护设置的说明,请参见 《防篡改概述》。
Microsoft Intune 是用于配置 Defender for Endpoint 功能并将其分发到设备的推荐工具。 但是,Intune 是一个单独的产品,不属于 Endpoint Defender,它不包括在所有订阅中。 若要使用 Intune,需要一个包含它的订阅,也可以单独将其作为独立订阅或附加产品购买。 如果没有 Intune,可以使用本文中的其他任何方法。 有关详细信息,请参阅 Microsoft Intune 许可。
Important
macOS 版的 Microsoft Defender for Endpoint 默认值是 Microsoft Defender 门户中配置的防篡改设置。 你可以通过移动设备管理(MDM)解决方案(如 Microsoft Intune 或 Jamf)配置设置来强制防篡改保护。
应用 MDM 策略时,它优先于门户设置和任何本地配置。
如果MDM不强制执行防篡改设置,本地管理员可以通过本地 配置 方法更改该设置。
在macOS设备上,你可以将强制执行级别设置为 禁用、 审计或 阻挡。 关于每种模式的描述,请参见 macOS设备上的干扰保护模式。
注释
- 模式变更会立即生效。
- 如果你最初配置用的是Jamf,那就用Jamf更新配置。
以下屏幕截图显示了 macOS 系统针对被篡改保护阻止的操作发出的消息:
在您开始之前
在配置防篡改保护之前,请满足以下要求:
- 该设备运行的是macOS Big Sur(11)或更高版本。
- 该设备运行的是 Defender for Endpoint 版本
101.70.19(2022 年 6 月)或更高版本。 - 你的账户拥有管理工具所需的权限。 关于 Microsoft Intune 和 Microsoft Defender 门户权限要求,请参见“防篡改所需的权限”。
为了更强的保护:
启用系统完整性保护(SIP)。 有关详细信息,请参阅 禁用和启用系统完整性保护。
使用MDM解决方案配置Defender for Endpoint。
授予 Defender for Endpoint 完全磁盘访问权限。
注释
防篡改功能不需要SIP和MDM配置。 然而,这两者都必须确保设备完全安全。 没有这些设置,本地管理员可以更改macOS管理的设置。 例如,通过 Microsoft Intune 等 MDM 解决方案,在“透明度、同意与控制”(TCC) 框架下授予 完全磁盘访问权限,可以防止本地管理员撤销该授权。
macOS设备上防篡改配置方法的优先顺序
macOS设备上的防篡改配置采用以下优先级顺序。 Defender for Endpoint 应用最高优先级配置的源,忽略所有低优先级的源:
- 一个管理配置配置文件,设置如下
tamperProtection/enforcementLevel: - 在 macOS 设备上使用
sudo mdatp config tamper-protection enforcement-level进行本地配置。 - 如果 Microsoft Defender 门户启用了防篡改功能,Defender for Endpoint 将使用阻挡模式。
- 如果在 Microsoft Defender 门户中禁用了防篡改功能:
- 拥有有效许可证的设备默认为 审计 模式。
- 没有许可证的设备默认为 禁用 模式。
Warning
禁用防篡改保护会降低对 Defender for Endpoint 未经授权更改的保护。 仅在经批准的故障排查或策略变更时才禁用它,并尽快重新启用。
验证设备运行状况和许可证
为了验证 Defender for Endpoint 在 macOS 设备上的健康状态和许可正确,请执行以下健康检查命令:
mdatp health
命令输出如下所示:
healthy : true
health_issues : []
licensed : true
...
tamper_protection : "audit"
...
tamper_protection 表示实际生效的强制级别。
使用Jamf的托管配置配置文件配置防篡改保护
要通过 Jamf 配置篡改保护,请将设置添加到tamperProtection你的 Defender for Endpoint 配置文件中。 设置为enforcementLeveldisabled或 auditblock。 关于每种模式的描述,请参见 macOS设备上的干扰保护模式。
以下示例配置了块模式下的防篡改保护:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>tamperProtection</key>
<dict>
<key>enforcementLevel</key>
<string>block</string>
</dict>
</dict>
</plist>
注释
如果你已经有一个 Defender for Endpoint 配置文件,建议把设置添加到该配置文件中,而不是创建另一个配置文件。
在Microsoft Intune中配置篡改保护
可以使用设置目录或自定义配置文件在 Intune 中配置篡改保护。 Intune 设置目录是首选方法。 如果你需要为现有的自定义 Defender for Endpoint 配置文件添加防篡改保护,可以使用自定义配置文件。
使用 Intune 设置目录配置篡改防护
要在 Microsoft Intune 中配置防篡改保护,请创建或修改设置目录策略。 有关详细说明,请参见 在 Microsoft Intune 中使用设置目录创建策略。
创建政策时,请使用以下具体设置:
- 平台:选择 macOS。
- 配置文件类型:选择设置目录。
创建或修改策略时,请在 配置设置 选项卡中添加以下设置:
- Microsoft Defender>篡改防护>强制级别:选择禁用、审核或阻止。 关于每种模式的描述,请参见 macOS设备上的干扰保护模式。
使用 Intune 自定义配置文件配置篡改保护
虽然优先使用设置目录,但你也可以通过上传自定义配置配置文件到 Intune 来配置防篡改。 关于创建、上传和分配自定义配置文件的说明,请参见在 Microsoft Intune 中为苹果设备添加自定义设置。
在配置文件中,将 tamperProtection/enforcementLevel 设置为 disabled、audit 或 block。 关于每种模式的描述,请参见 macOS设备上的干扰保护模式。
以下示例配置了块模式下的防篡改保护。 将内容复制到一个名为 com.microsoft.wdav.mobileconfig. 的文件中。 要使用不同的模式,请将 audit 替换为 block 或 disabled。
Important
你必须使用 com.microsoft.wdav 作为配置文件名称。 如果名称错误,则 Microsoft Defender for Endpoint 无法识别这些偏好设置。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1">
<dict>
<key>PayloadUUID</key>
<string>C4E6A782-0C8D-44AB-A025-EB893987A295</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadOrganization</key>
<string>Microsoft</string>
<key>PayloadIdentifier</key>
<string>com.microsoft.wdav</string>
<key>PayloadDisplayName</key>
<string>Microsoft Defender for Endpoint settings</string>
<key>PayloadDescription</key>
<string>Microsoft Defender for Endpoint configuration settings</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadEnabled</key>
<true/>
<key>PayloadRemovalDisallowed</key>
<true/>
<key>PayloadScope</key>
<string>System</string>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadUUID</key>
<string>99DBC2BC-3B3A-46A2-A413-C8F9BB9A7295</string>
<key>PayloadType</key>
<string>com.microsoft.wdav</string>
<key>PayloadOrganization</key>
<string>Microsoft</string>
<key>PayloadIdentifier</key>
<string>com.microsoft.wdav</string>
<key>PayloadDisplayName</key>
<string>Microsoft Defender for Endpoint configuration settings</string>
<key>PayloadDescription</key>
<string/>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadEnabled</key>
<true/>
<key>tamperProtection</key>
<dict>
<key>enforcementLevel</key>
<string>block</string>
</dict>
</dict>
</array>
</dict>
</plist>
本地配置防篡改保护
注释
在生产设备上使用通过MDM部署的托管配置配置文件。 本地管理员可以随时将本地配置的防篡改模式切换为限制更少的模式。 当受管理配置文件设置模式时,只有安全管理员可以更改配置文件。
要在macOS设备上本地配置防篡改保护,请使用以下语法:
sudo mdatp config tamper-protection enforcement-level --value <disabled | audit | block>
执行以下命令切换到 块 模式:
sudo mdatp config tamper-protection enforcement-level --value block
检查防篡改状态
执行以下命令以检查有效的防篡改模式:
mdatp health --field tamper_protection
当防篡改保护处于阻止模式时,输出会显示 block。
如需详细信息,请运行 mdatp health --details tamper_protection。
验证防篡改保护活动
请使用以下场景生成篡改尝试。 结果取决于配置的防篡改模式:
- 尝试不同的方法卸载端点版的Defender。 例如,将应用拖到垃圾桶,或者用命令行卸载 Defender for Endpoint。
- 尝试停止 Defender for Endpoint 进程。
- 尝试删除、重命名、修改或移动以下 Defender for Endpoint 文件和目录:
/Applications/Microsoft Defender.app//Library/LaunchDaemons/com.microsoft.fresno.plist/Library/LaunchDaemons/com.microsoft.fresno.uninstall.plist/Library/LaunchAgents/com.microsoft.wdav.tray.plist/Library/Managed Preferences/com.microsoft.wdav.ext.plist/Library/Managed Preferences/mdatp_managed.json/Library/Managed Preferences/com.microsoft.wdav.atp.plist/Library/Managed Preferences/com.microsoft.wdav.atp.offboarding.plist/usr/local/bin/mdatp
在 阻挡 模式下,防篡改防止了该操作。 如果测试生成警报,请在位于 的 Defender 门户的警报页面中查找https://security.microsoft.com/alerts。 警报标题会根据检测到的活动类型而有所不同。 有关更多警报标题,请参阅 在 Microsoft Defender 门户中检测潜在篡改活动。
在 审计 模式下,篡改保护会报告尝试,但不会阻止。 有关警报生成、设备时间线、警报调查和高级搜寻的信息,请参见 “查看关于篡改尝试的信息”。
在 阻断 和 审计 模式下,篡改事件都会出现在本地设备日志中。 在Defender for Endpoint核心日志中搜索带有tamperProtection标签的条目:
sudo grep -F '[{tamperProtection}]' /Library/Logs/Microsoft/mdatp/microsoft_defender_core.log
要收集完整的 Defender for Endpoint 日志以进行故障排除,请参见“收集诊断信息”。
配置篡改保护排除项
注释
可在版本 101.98.71(2023 年 5 月)或更高版本中使用。
篡改保护防止macOS进程更改Defender for Endpoint的资产,包括安装和配置文件,或停止Defender for Endpoint进程。 内置排除功能允许 Jamf 和 Intune 的特定 macOS 进程和管理进程执行所需操作,如更新 Defender for Endpoint 或替换其托管配置文件。
为了让来自其他MDM提供商的可信管理过程执行受保护操作,可以在MDM配置文件中添加篡改保护排除。 你无法在本地配置排除。 例如,排除项可以允许 MDM 策略脚本重新启动 Defender for Endpoint,而当有人在本地通过终端运行同一脚本时,篡改保护仍会阻止它。
利用MDM提供商的文档来识别执行策略的辅助进程。 你还可以运行测试策略执行受保护操作,在 Microsoft Defender 门户中查看结果警报,并在启动进程树中识别辅助进程。
在确定MDM辅助进程后,通过以下一个或多个属性配置排除:
- 路径:过程路径是最简单但安全性最低的选择。 避免单独使用路径。
-
签名标识符:运行
codesign -dv --verbose=4 path_to_helper,并使用可执行文件的Identifier、TeamIdentifier,或同时使用两者。 Apple 工具没有TeamIdentifier。 - 组合属性:将路径标识符和签名标识符合并,使排除更严格。
例如,若要获取篡改防护排除所需的签名标识符和 TeamIdentifier,请使用 codesign以下命令检查 MDM 帮助程序可执行文件:
codesign -dv --verbose=4 /usr/bin/ruby
输出显示可用于在 MDM 配置文件中配置排除项的 Identifier 和 TeamIdentifier 值:
Executable=/usr/bin/ruby
Identifier=com.apple.ruby
Format=Mach-O universal (x86_64 arm64e)
CodeDirectory v=20400 size=583 flags=0x0(none) hashes=13+2 location=embedded
Platform identifier=14
VersionPlatform=1
VersionMin=852992
VersionSDK=852992
Hash type=sha256 size=32
CandidateCDHash sha256=335c10d40db9417d80db87f658f6565018a4c3d6
CandidateCDHashFull sha256=335c10d40db9417d80db87f658f6565018a4c3d65ea3b850fc76c59e0e137e20
Hash choices=sha256
CMSDigest=335c10d40db9417d80db87f658f6565018a4c3d65ea3b850fc76c59e0e137e20
CMSDigestType=2
Executable Segment base=0
Executable Segment limit=16384
Executable Segment flags=0x1
Page size=4096
Launch Constraints:
None
CDHash=335c10d40db9417d80db87f658f6565018a4c3d6
Signature size=4442
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
Signed Time=Apr 15, 2023 at 4:45:52 AM
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=64
以下示例展示了一个 Jamf 配置配置文件,该配置文件在 块 模式下启用了篡改保护,并增加了进程排除功能。 通过 MDM 部署配置文件,以允许特定进程执行原本会被篡改保护阻止的操作。 更多信息请参见 配置防篡改保护排除项。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>tamperProtection</key>
<dict>
<key>enforcementLevel</key>
<string>block</string>
<key>exclusions</key>
<array>
<dict>
<key>path</key>
<string>/usr/bin/ruby</string>
<key>teamId</key>
<string/>
<key>signingId</key>
<string>com.apple.ruby</string>
<key>args</key>
<array>
<string>/usr/local/bin/global_mdatp_restarted.rb</string>
</array>
</dict>
</array>
</dict>
</dict>
</plist>
排除脚本解释器,如Jamf配置文件中的Ruby,安全性不如排除已编译的可执行文件,因为解释器可以运行 任何脚本,而不仅仅是管理员预期的脚本。
为降低风险,使用 args 属性允许特定脚本与解释器共运行。 在 Jamf 配置文件示例中,只有 /usr/bin/ruby /usr/local/bin/global_mdatp_restarted.rb 可以重启 Defender for Endpoint。 不允许使用不同脚本路径或更多参数的命令,如 /usr/bin/ruby /Library/Application Support/Global Manager/global_mdatp_restarted.rb 或 /usr/bin/ruby /usr/local/bin/global_mdatp_restarted.rb $USER。
Warning
使用最严格的排除标准以降低滥用风险。
排查配置问题
如果防篡改无法报告预期的有效模式或配置源,请参见“ 防篡改问题的故障排除 ”,获取详细的状态解释、配置源检查和日志收集。