使用竄改保護來保護macOS安全性設定

適用於:

想要體驗適用於端點的 Microsoft Defender 嗎? 注册免費試用版。

macOS 中的竄改保護有助於防止未經授權的使用者對安全性設定進行不必要的變更。 竄改保護有助於防止未經授權地移除macOS上的適用於端點的 Microsoft Defender。 這項功能也可協助重要的安全性檔案、程式和組態設定不受竄改。

重要

從 2023 年 3 月開始,macOS 上的 適用於端點的 Microsoft Defender 會在 Microsoft Defender 入口網站 () 的進階設定https://security.microsoft.com下,遵循透過全域竄改保護參數套用的竄改保護選項。 您可以選擇使用行動裝置 裝置管理 (MDM) 解決方案,例如 Intune 或 JAMF (建議的) ,強制執行 (封鎖/稽核/停用) 您自己的 macOS 竄改保護設定。 如果未透過 MDM 強制執行竄改保護設定,本機系統管理員可以使用下列命令繼續手動變更設定: sudo mdatp config tamper-protection enforcement-level --value (chosen mode)

您可以在下列模式中設定竄改保護:

文章 描述
已停用 完全關閉竄改保護。
稽核 系統會記錄竄改作業,但不會封鎖。 此模式是安裝后的預設模式。
封鎖 已開啟竄改保護;已封鎖竄改作業。

當竄改保護設定為稽核或封鎖模式時,您可以預期下列結果:

稽核模式

  • 卸載適用於端點的 Defender 代理程式的動作會記錄 (稽核)
  • 適用於端點的 Defender 檔案的編輯/修改會記錄 (稽核)
  • 在適用於端點的 Defender 位置下建立新檔案會記錄 (稽核)
  • 刪除適用於端點的Defender檔案會記錄 (稽核)
  • 針對適用於端點的 Defender 檔案重新命名會記錄 (稽核)

封鎖模式

  • 已封鎖卸載適用於端點的Defender代理程式的動作
  • 已封鎖適用於端點的Defender檔案編輯/修改
  • 已封鎖在適用於端點的Defender位置下建立新檔案
  • 已封鎖刪除適用於端點的 Defender 檔案
  • 已封鎖針對端點的 Defender 檔案重新命名
  • 停止代理程式 (wdavdaemon) 失敗的命令

以下是回應封鎖動作的系統訊息範例:

作業封鎖訊息的螢幕快照。

您可以提供模式名稱作為強制層級,以設定竄改保護模式。

注意

  • 模式變更會立即套用。
  • 如果您在初始設定期間使用 JAMF,則也必須使用 JAMF 更新組態。

開始之前

請確定符合下列需求:

  • 支援的macOS版本:Big Sur (11) 或更新版本
  • 適用於端點的 Defender 的最低必要版本: 101.70.19
  • 您已獲指派適當的角色 (請參閱 建立和管理角色型訪問控制)

重要

Microsoft 建議您使用權限最少的角色。 這有助於改善貴組織的安全性。 全域系統管理員是高度特殊權限角色,應僅在無法使用現有角色的緊急案例下使用。

強烈建議的設定:

  • 已啟用 SIP) (系統完整性保護。 如需詳細資訊,請參閱 停用和啟用系統完整性保護

  • 使用行動裝置管理 (MDM) 工具來設定 適用於端點的 Microsoft Defender。

  • 確定適用於端點的 Defender 具有 完整磁碟存取 授權。

    注意

    同時啟用 SIP 和透過 MDM 完成的所有設定並非必要,但完全受保護的裝置則是必要的。 否則,本機系統管理員可以進行macOS管理的竄改變更。 例如,透過行動裝置 裝置管理 解決方案,例如 Intune,啟用 TCC (透明度、同意 & 控制 ) ,可消除安全性系統管理員撤銷本機系統管理員的完整磁碟存取授權的風險。

在macOS裝置上設定竄改保護

Microsoft Defender 會以下列順序評估這些設定。 如果已設定較高的優先順序設定,則會忽略其餘部分:

  1. 受控組態配置檔 (tamperProtection/enforcementLevel 設定) :

  2. 使用) mdatp config tamper-protection enforcement-level --value { disabled|audit|block }手動設定 (

  3. 如果在 Microsoft Defender 入口網站中啟用竄改保護,則會在預覽 (使用「封鎖」模式;並非所有客戶) 。

    • 如果裝置已獲得授權,則預設會使用「稽核」模式。
    • 如果裝置未獲得授權,則竄改保護會處於「封鎖」模式。

開始之前

請確定您的裝置已獲得授權且狀況良好, (對應的值報告 true) :

mdatp health
healthy                                     : true
health_issues                               : []
licensed                                    : true
...
tamper_protection                           : "audit"

tamper_protection 報告有效的強制層級。

手動設定

  1. 使用下列命令切換至最嚴格的模式:
sudo mdatp config tamper-protection enforcement-level --value block

手動設定命令的影像

注意

您必須在生產裝置上使用透過 MDM) 部署 (受控組態設定檔。 如果本機系統管理員透過手動設定變更了竄改保護模式,他們也可以隨時將它變更為較不嚴格的模式。 如果透過受控配置檔設定竄改保護模式,則只有安全性系統管理員可以復原它。

  1. 確認結果。
healthy                                     : true
health_issues                               : []
licensed                                    : true
engine_version                              : "1.1.19300.3"
app_version                                 : "101.70.19"
org_id                                      : "..."
log_level                                   : "info"
machine_guid                                : "..."
release_ring                                : "InsiderFast"
product_expiration                          : Dec 29, 2022 at 09:48:37 PM
cloud_enabled                               : true
cloud_automatic_sample_submission_consent   : "safe"
cloud_diagnostic_enabled                    : false
passive_mode_enabled                        : false
real_time_protection_enabled                : true
real_time_protection_available              : true
real_time_protection_subsystem              : "endpoint_security_extension"
network_events_subsystem                    : "network_filter_extension"
device_control_enforcement_level            : "audit"
tamper_protection                           : "block"
automatic_definition_update_enabled         : true
definitions_updated                         : Jul 06, 2022 at 01:57:03 PM
definitions_updated_minutes_ago             : 5
definitions_version                         : "1.369.896.0"
definitions_status                          : "up_to_date"
edr_early_preview_enabled                   : "disabled"
edr_device_tags                             : []
edr_group_ids                               : ""
edr_configuration_version                   : "20.199999.main.2022.07.05.02-ac10b0623fd381e28133debe14b39bb2dc5b61af"
edr_machine_id                              : "..."
conflicting_applications                    : []
network_protection_status                   : "stopped"
data_loss_prevention_status                 : "disabled"
full_disk_access_enabled                    : true

請注意, tamper_protection 現在已設定為 block

JAMF

藉由新增下列設定,在 適用於端點的 Microsoft Defender 組態配置檔中設定竄改保護模式:

<?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>

注意

如果您已經有適用於 適用於端點的 Microsoft Defender 的組態配置檔,則需要將設定新增至其中。 您不應該建立第二個組態配置檔。

Intune

設定目錄

您可以建立新的設定目錄設定檔來新增竄改保護組態,也可以將它新增至現有的設定目錄設定檔。 您可以在類別「Microsoft Defender」和子類別「竄改保護」下找到「強制層級」設定。 之後,選擇所需的層級。

自訂設定檔

或者,您也可以透過自定義配置檔設定竄改保護。 如需詳細資訊,請參閱在macOS上設定 適用於端點的 Microsoft Defender 喜好設定

注意

針對 Intune 組態,您可以建立新的配置檔組態檔來新增竄改保護組態,也可以將這些參數新增至現有的配置檔組態。 選擇所需的層級。

<?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>

檢查狀態

執行下列命令來檢查竄改保護狀態:

mdatp health --field tamper_protection

如果竄改保護已開啟,結果會顯示「封鎖」:

封鎖模式中竄改保護的影像

您也可以完整執行 mdatp health ,並在輸出中尋找「tamper_protection」。

如需竄改保護狀態的擴充資訊,請執行 mdatp health --details tamper_protection

確認防竄改防護功能

您可以透過各種方式來確認是否已開啟竄改保護。

驗證封鎖模式

Microsoft Defender 入口網站中會引發竄改警示

Microsoft Defender 入口網站中引發的竄改警示螢幕快照。

驗證封鎖模式和稽核模式

  • 使用進階搜捕,您會看到竄改警示出現
  • 在本機裝置記錄中可以找到竄改事件: sudo grep -F '[{tamperProtection}]' /Library/Logs/Microsoft/mdatp/microsoft_defender_core.log

竄改保護記錄的螢幕快照。

DIY 案例

  • 將竄改保護設定為 「封鎖」時,請嘗試不同的方法來卸載適用於端點的 Defender。 例如,使用命令行將應用程式磚拖曳到垃圾桶或卸載竄改保護。

  • 請嘗試停止適用於端點的Defender程式 (終止) 。

  • 嘗試刪除、重新命名、修改、移動適用於端點的Defender檔案 (類似於惡意使用者) ,例如:

    • /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

關閉竄改保護

您可以使用下列任何方法來關閉竄改保護。

手動設定

使用下列命令:

sudo mdatp config tamper-protection enforcement-level --value disabled

JAMF

將組 enforcementLevel設定檔中的值變更為 「已停用」,並將其推送至裝置:

<?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>disabled</string>
    </dict>
  </dict>
</plist>

Intune

在您的 Intune 設定檔中新增下列組態:

<?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>disabled</string>
                </dict>
            </dict>
        </array>
    </dict>
</plist>

排除項目

注意

可在版本或更新版本 101.98.71 中使用。

竄改保護可防止任何 macOS 程式對 Microsoft Defender 的資產進行變更,或停止 Microsoft Defender 的程式。 受保護的資產包括安裝和組態檔。

在內部,Microsoft Defender 在某些情況下對特定macOS進程進行例外狀況。 例如,如果竄改保護驗證套件真確性,macOS 可以升級 Defender 的套件。 還有其他排除專案。 例如,macOS MDM 程式可以取代Microsoft的Defender受控組態檔。

在某些情況下,安全性系統管理員必須在所有或部分受管理的裝置上重新啟動Defender。 一般而言,這是藉由建立和執行 JAMF 的原則來完成,該原則會在遠端裝置上執行腳本, (或其他 MDM 廠商的類似作業。)

為了避免標記這些原則起始的作業,Microsoft Defender 偵測 JAMF 和 Intune 的 MDM 原則程式,並允許來自這些作業的竄改作業。 同時,如果從本機終端機啟動,竄改保護會封鎖相同的腳本,使其無法重新啟動 Microsoft Defender。

不過,這些原則執行程式是廠商特有的。 雖然 Microsoft Defender 為 JAMF 和 Intune 提供內建排除專案,但無法為所有可能的 MDM 廠商提供這些排除專案。 相反地,安全性系統管理員可以新增自己的排除專案來竄改保護。 排除只能透過 MDM 設定檔來完成,不能透過本機設定來完成。

若要這樣做,您必須先找出執行原則之 MDM 協助程式程式的路徑。 您可以遵循 MDM 廠商的檔案來執行此動作。 您也可以起始竄改測試原則、在安全性入口網站中取得警示、檢查起始攻擊的進程階層,以及挑選看起來像是 MDM 協助程式候選的程式。

一旦識別出進程路徑,您就有幾個選擇可設定排除專案:

  • 依路徑本身。 這是您已經有此路徑) 的最簡單 (,也就是最不安全的方式,換句話說,不建議這麼做。
  • 藉由從可執行檔 TeamIdentifier 或簽署標識碼取得簽署標識符,藉由執行 codesign -dv --verbose=4 path_to_helper (尋找標識符和 TeamIdentifier,後者不適用於 Apple 自己的工具。)
  • 或者,使用這些屬性的組合。

例如:

codesign -dv --verbose=4 /usr/bin/ruby
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:

<?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>

請注意,從上述範例中排除 Ruby 之類的腳本解釋器 () 而非已編譯的可執行檔並不安全,因為它可以執行 任何腳本,而不只是安全性系統管理員所使用的腳本。

若要將風險降到最低,建議您使用額外的 args ,只允許特定腳本與腳本解釋器一起執行。 在上述範例中,只 /usr/bin/ruby /usr/local/bin/global_mdatp_restarted.rb 允許重新啟動Defender。 但是,例如, /usr/bin/ruby /Library/Application Support/Global Manager/global_mdatp_restarted.rb 甚至 /usr/bin/ruby /usr/local/bin/global_mdatp_restarted.rb $USER 不允許。

警告

請一律使用最嚴格的準則來防止非預期的攻擊!

針對設定問題進行疑難解答

問題:竄改保護回報為已停用

如果執行命令 mdatp health 報告已停用竄改保護,即使您已啟用它,而且上線后已超過一小時,您也可以執行下列命令來檢查您是否有正確的設定:

mdatp health --details tamper_protection
tamper_protection                           : "audit"
exclusions                                  : [{"path":"/usr/bin/ruby","team_id":"","signing_id":"com.apple.ruby","args":["/usr/local/bin/global_mdatp_restarted.rb"]}] [managed]
feature_enabled_protection                  : true
feature_enabled_portal                      : true
configuration_source                        : "local"
configuration_local                         : "audit"
configuration_portal                        : "block"
configuration_default                       : "audit"
configuration_is_managed                    : false
  • tamper_protection有效 模式。 如果此模式是您想要使用的模式,則您已全部設定。
  • configuration_source 指出如何設定竄改保護強制層級。 它必須符合您設定竄改保護的作法。 (如果您透過受控配置檔設定其模式,並 configuration_source 顯示不同內容,則您可能設定錯誤的配置檔。)
    • mdm - 它是透過受控配置檔設定的。 只有安全性系統管理員可以使用配置檔的更新來變更它!
    • local - 其已使用 mdatp config 命令進行設定
    • portal - 安全性入口網站中設定的預設強制層級
    • defaults - 未設定,會使用預設模式
  • 如果 feature_enabled_protection 為 false,則組織不會啟用竄改保護 (如果 Defender 未回報「授權」)
  • 如果 feature_enabled_portal 為 false,則尚未為您啟用透過安全性入口網站設定預設模式。
  • configuration_local如果使用對應的設定通道,則 configuration_portalconfiguration_default 告知將 使用的模式。 (舉例來說,您可以透過 MDM 設定檔將竄改保護設定為「封鎖」模式,並 configuration_default 告訴您 audit。這僅表示 如果您移除 配置檔,且未使用 或 透過安全性入口網站設定 mdatp config 模式,則會使用預設模式,也就是 audit.)

注意

您必須檢查 Microsoft Defender 的記錄,以取得 101.98.71 版之前的相同資訊。 以下為範例。

$ sudo grep -F '[{tamperProtection}]: Feature state:' /Library/Logs/Microsoft/mdatp/microsoft_defender_core.log | tail -n 1

提示

想要深入了解? Engage 技術社群中的Microsoft安全性社群:適用於端點的 Microsoft Defender 技術社群。