適用於 Linux 的 Windows 子系統 (WSL) 的 適用於端點的 Microsoft Defender 外掛程式

本文說明如何安裝、設定及疑難排解適用於 Windows 子系統 Linux 版 (WSL) 2 的 適用於端點的 Microsoft Defender 外掛程式。 該外掛支援傳統的 WSL 2 發行版及在支援的 Windows 裝置上運行的 WSL 容器(WSLc),並已整合至 適用於端點的 Microsoft Defender Plan 2。

概觀

適用於 Linux 的 Windows 子系統 (WSL) 2 取代了先前版本的 WSL(該版本在不使用外掛程式的情況下受到 適用於端點的 Microsoft Defender 支援),可提供與 Windows 無縫整合、但透過虛擬化技術加以隔離的 Linux 環境。 適用於端點的 Microsoft Defender 外掛支援傳統的 WSL 2 Linux 發行版及新的 WSL 容器(WSLc)。 Defender for Endpoint for WSL 外掛使 Defender for Endpoint 能透過插入隔離子系統,提供對所有運行中的 WSL 容器更清晰的可視化。

必要條件

在安裝 Defender for Endpoint WSL 外掛前,請確保以下先決條件已達成:

  • WSL 版本必須為 2.0.7.0 或更新版本,並至少執行一個使用中的發行版。 執行 wsl --update,以確保你使用的是最新版本。 如果 wsl -–version 顯示的版本比 2.0.7.0還舊,請執行 wsl --update --pre-release 以取得最新更新。

  • 對於 WSL 容器(WSLc),則需 WSL 版本 2.9.12 或更新版本。

  • Windows 用戶端裝置必須已接入 Defender for Endpoint。

支援的作業系統

以下作業系統支援 Defender for Endpoint WSL 外掛:

  • Windows 10,2004 版及以後版本 (19044 版及以後版本)
  • Windows 11 支援可與外掛相容的 WSL 版本。

已知問題與限制

在開始之前,請注意以下幾點:

  • 該外掛不支援在 之前 1.24.522.2版本的自動更新。 版本 1.24.522.2 及更新版本。 所有通道都支援透過 Windows Update 取得更新。 僅在生產環中支援透過 Windows Server Update Services (WSUS)、System Center Configuration Manager (SCCM) 和 Microsoft Update 類別目錄提供的更新,以確保套件穩定性。
  • 外掛程式完全實例化需要幾分鐘,而 WSL2 實例則需約 30 分鐘自行上線。 短暫存在的 WSL 容器實例可能導致 WSL2 實例不會出現在 Microsoft Defender 入口網站中。 當任何發行版運行足夠長(至少 30 分鐘)時,WSL2 實例會顯示在 Microsoft Defender 入口網站中。
  • 不支援執行自訂核心及自訂核心命令列。 雖然外掛程式不會封鎖在該組態下執行,但如果您執行自訂核心與自訂核心命令列,並不保證在 WSL 中具有能見度。 我們建議用 Microsoft Intune 的 WSL 設定來阻擋這類設定。
  • 該外掛程式不支援搭載 ARM64 處理器的機器。
  • 此外掛程式不支援 Windows 10 及 11 的多重工作階段變體。
  • 該外掛提供 WSL 事件的可視化,但其他功能如反惡意軟體、威脅與弱點管理,以及回應指令,則無法在 WSL 邏輯裝置上提供。
  • 偵測與警報行為在不同 Linux 發行版間可能有所不同。

軟體元件與安裝程式檔名

安裝程式:Defenderplugin-x64-2.26.921.1.msi。 你可以從 Microsoft Defender 入口網站的入職頁面下載安裝程式。 (前往 設定>端點>上線設定>Windows 子系統 Linux 版 2(外掛程式)。)

安裝目錄:

  • %ProgramFiles%
  • %ProgramData%

安裝的元件:

  • DefenderforEndpointPlug-in.dll。 這個 DLL 是用來載入 Defender for Endpoint 在 WSL 中運作的函式庫。 你可以在 %ProgramFiles%\適用於端點的 Microsoft Defender plug-in for WSL\plug-in 找到它。
  • healthcheck.exe。 此程式會檢查 Defender for Endpoint 的健康狀態,並讓您查看已安裝的 WSL、外掛及 Defender for Endpoint 版本。 你可以在 %ProgramFiles%\適用於端點的 Microsoft Defender plug-in for WSL\tools 找到它。

安裝 Defender for Endpoint WSL 外掛

如果你的 Windows 子系統 Linux 版還沒安裝,請依照以下步驟操作:

  1. 開啟終端機或命令提示字元。 (在 Windows 中,前往 開始>命令提示字元。或者,以滑鼠右鍵按一下 [開始] 按鈕,然後選取 終端。)

  2. 執行 wsl -–install 命令。

  3. 確認 WSL 是否已安裝並運作。

    1. 使用終端機或命令提示字元執行 wsl –-update ,確認你有最新版本。

    2. 請先執行 wsl 命令,以確認 WSL 在測試前已啟動並正在執行。

  4. 請依照以下步驟安裝外掛:

    1. 安裝從 Microsoft Defender 入口網站中的上線區段下載的 MSI 檔案 (設定>端點>上線>適用於 Linux 的 Windows 子系統 2 (外掛程式))。

    2. 打開命令提示字元或終端機並執行 wsl。

    你可以用 Microsoft Intune 部署這個套件。

注意事項

如果 WslService 正在運行,安裝過程中就會停止。 你不需要另外啟動子系統。 外掛程式改為自動上線至 Windows 主機所上線的租用戶。 適用於端點的 Microsoft Defender 適用於 WSL 外掛程式更新 KB 更新。

安裝驗證檢查清單

請使用以下檢查清單來確認外掛是否正確安裝並正常運作:

  1. 更新或安裝後,至少等待五分鐘,讓外掛程式完全初始化並寫入日誌輸出。

  2. 開啟終端機或命令提示字元。 (在 Windows 中,前往 開始>命令提示字元。或者,以滑鼠右鍵按一下 [開始] 按鈕,然後選取 終端。)

  3. 執行命令: cd "%ProgramFiles%\適用於端點的 Microsoft Defender plug-in for WSL\tools".

  4. 執行 .\healthcheck.exe 命令。

    對於 WSL 容器(WSLc),請確認所有活躍的 WSLc 虛擬機都列在 HealthCheck 輸出中,且每個虛擬機都報告健康的 Defender 狀態。

  5. 請檢視 Defender 與 WSL 的詳細資訊,確保它們符合或超過以下要求:

    • 外掛版本: 2.26.921.1

    • WSL 版本:2.9.12 或更新版本

    • Defender 應用程式版本: 101.26081.0010

    • 防禦者健康狀況: Healthy

為在 WSL 中執行的 Defender 設定 Proxy

你可以為 Defender for Endpoint 的 WSL 外掛設定代理連線。 如果您的企業使用代理來連接在 Windows 主機上運行的 Defender for Endpoint,請繼續閱讀以判斷是否需要為該外掛設定代理。

如果您要為適用於 WSL 外掛程式的 MDE 使用主機的 Windows EDR 遙測 Proxy 組態設定,則不需要進行其他作業。 Windows EDR 遙測代理設定會被外掛自動採用。

如果你想使用 MDE 的 host winhttp proxy 設定來做 WSL 外掛,不需要更多操作。 主機的 WinHTTP 代理設定會被外掛自動採用。

如果你想用 MDE 的主機網路和網路代理設定來做 WSL 外掛,就不需要更多了。 主機網路代理設定會被外掛自動採用。

注意事項

WSL Defender 僅支援 http 代理伺服器。

WSL 外掛如何選擇代理

如果您的主機包含多個代理設定,外掛會依以下階層選擇代理配置:

  1. Defender for Endpoint 靜態代理設定 (TelemetryProxyServer) 。

  2. Winhttp 代理 (透過 netsh 指令) 設定。

  3. 網路 & 網路代理設定。

    例如,如果你的主機電腦同時具有 Winhttp proxy 和 Network & Internet proxy,外掛程式會選擇 Winhttp proxy 作為代理設定。

注意事項

DefenderProxyServer登錄檔金鑰已不再支援。 請依照「為在 WSL 中執行的 Defender 設定 Proxy」中的步驟,在外掛程式中設定 Proxy。

在 WSL 上執行的 Defender for Endpoint 連線測試

Defender for Endpoint 連線測試會在你的裝置有代理修改時觸發,並排程每小時執行一次。

啟動 WSL 機器後,請等待 5 分鐘,然後執行 healthcheck.exe(連線測試結果位於 %ProgramFiles%\適用於端點的 Microsoft Defender plug-in for WSL\tools)。 若連接測試成功,健康檢查會報告成功結果。 若連線測試失敗,健康檢查會回報狀態為 invalid,表示 WSL 的 MDE 外掛與 Defender for Endpoint 服務 URL 的用戶端連線失敗。

注意事項

ConnectivityTest登錄檔金鑰已不再支援。

若要為 WSL 容器(即在該子系統上執行的發行版)設定 Proxy,請參閱 WSL 的進階設定組態。

驗證功能性與 SOC 分析師體驗

注意事項

調查體驗(包括裝置時間軸、警示、事故及進階搜捕)在 WSL 2 與 WSLc 工作負載中皆相同。

安裝外掛後,子系統及其所有執行中的容器會被接入 Microsoft Defender 入口網站。

  1. 登入 Microsoft Defender 入口網站,並開啟裝置檢視。

  2. 使用標籤 WSL2 過濾裝置庫存。 篩選檢視顯示 Windows 主機及相關的經典 WSL 與 WSL 容器裝置作為獨立條目。

    顯示裝置庫存過濾器的截圖

  3. 你可以透過啟用 Defender for Endpoint 的 WSL 外掛,看到環境中所有 WSL 實例。 這些實例代表在特定主機上運行於 WSL 內的所有發行版。 裝置的主機名稱與 Windows 主機相符。 不過,它被呈現為 Linux 裝置。

    如果是 WSLc 實例,應用程式名稱會附加在 Windows 主機名稱後面,形成裝置名稱。

    在以下範例中:

    • 裝置類型為 Workstation 的 LAB-HOST 是 Windows 主機。
    • 裝置類型為 Server 的 LAB-HOST 是傳統的 WSL Linux 裝置。
    • LAB-HOST-wslc 是用於 wslc 應用程式的 WSLc 裝置。
    • LAB-HOST-WSLcHelloWorld 是 WSLcHelloWorld 應用程式的 WSLc 裝置。

    當 Windows 主機與經典 WSL 裝置名稱相同時,請使用裝置類型欄位來區分它們。

    截圖顯示裝置入口網站,裡面有 WSL2 和 WSLc 的條目。

  4. 打開裝置頁面。 在概覽面板中,主機連結顯示該裝置正在運行於 Windows 主機上。 您可以點選此連結,直接跳轉至 Windows 主機進行進一步調查及/或回應。

    裝置概況的截圖。

時間軸會被填入,類似於 Defender for Endpoint on Linux,包含子系統內部的事件, (檔案、程序、網路) 。 你可以在時間軸視圖中觀察活動和偵測。 警報與事件也會依情況自動產生。

為您的 WSL 機器設定自訂標籤

該外掛程式會將 WSL 機器納入管理,並加上標籤 WSL2。 如果您或您的組織需要自訂標籤,請依照以下步驟設定:

  1. 以管理員身份開啟登錄編輯器。

  2. 建立包含以下細節的登錄檔金鑰:

    • 名稱:GROUP
    • 類型: REG_SZ 或登錄檔字串
    • 值:Custom tag
    • 路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows 進階威脅防護\DeviceTagging
  3. 登錄檔設定完成後,請依照以下步驟重新啟動 WSL:

    1. 打開命令提示字元並執行指令 wsl --shutdown。

    2. 執行 wsl 命令。

  4. 等5到10分鐘,傳送門才會顯示變更。

注意事項

在 GROUP 登錄檔項目中設定的自訂標籤值會加上 _WSL2 作為後綴。 例如,如果 GROUP 登錄檔值為 Microsoft,自訂標籤會像入口網站一樣出現 Microsoft_WSL2 。

測試外掛

安裝後在 WSL2 或 WSLc 環境測試外掛,請依照以下步驟操作:

  1. 開啟終端機或命令提示字元。 (在 Windows 中,前往 開始>命令提示字元。或者,以滑鼠右鍵按一下 [開始] 按鈕,然後選取 終端。)

  2. 執行 wsl 命令。

  3. 從 MDE Linux EDR DIY 測試套件下載並解壓腳本檔案。

  4. 在 Linux 提示符號下執行指令 ./mde_linux_edr_diy.sh。

    注意事項

    事件大約需要五分鐘才會出現在 Microsoft Defender 入口網站上。 幾分鐘後,入口網站中應會針對 WSL2 執行個體上的偵測項目顯示警示。

把機器當作你環境中的普通 Linux 主機來做測試。 特別是,我們希望能聽聽您對利用新外掛揭露潛在惡意行為的能力的回饋。

利用進階搜尋來調查WSL裝置

進階狩獵體驗在 WSL 2 與 WSL 容器工作負載中完全相同。 現有查詢則繼續運作,無需修改。

在 Advanced Hunting 結構描述中,DeviceInfo 資料表下新增了一個名為 HostDeviceId 的屬性,可用來將 WSL 執行個體對應到其 Windows 主機裝置。 以下是幾個狩獵範例問題:

取得目前組織/租戶的所有 WSL 裝置 ID

請使用以下查詢列出您租戶中所有 WSL 裝置 ID:

//Get all WSL device ids for the current organization/tenant
let wsl_endpoints = DeviceInfo
| where OSPlatform == "Linux" and isnotempty(HostDeviceId)
| distinct DeviceId;
wsl_endpoints

取得 WSL 裝置 ID 及其對應的主機裝置 ID

請使用以下查詢,將每個 WSL 裝置 ID 對應到其對應的 Windows 主機裝置 ID:

//Get WSL device ids and their corresponding host device ids
DeviceInfo
| where OSPlatform == "Linux" and isnotempty(HostDeviceId)
| distinct WSLDeviceId=DeviceId, HostDeviceId

取得曾執行 curl 或 wget 的 WSL 裝置 ID 清單

請使用以下查詢來尋找曾執行 curl 或 wget 的 WSL 裝置:

//Get a list of WSL device ids where curl or wget was run
let wsl_endpoints = DeviceInfo
| where OSPlatform == "Linux" and isnotempty(HostDeviceId)
| distinct DeviceId;
DeviceProcessEvents
| where FileName == "curl" or FileName == "wget"
| where DeviceId in (wsl_endpoints)
| sort by Timestamp desc

疑難排解

注意事項

關於 WSLc 相關的故障排除,請參考此區。

請依照以下故障排除步驟診斷並解決 Defender for Endpoint WSL 外掛的常見問題。

安裝失敗

如果你在啟動 WSL 時看到錯誤(例如 A fatal error was returned by plugin 'DefenderforEndpointPlug-in' Error code: Wsl/Service/CreateInstance/CreateVm/Plugin/ERROR_FILE_NOT_FOUND),這表示適用於 WSL 的 Defender for Endpoint 外掛程式安裝有問題。 修復方法請依照以下步驟進行:

  1. 在控制台,前往「程式>、程式與功能」。

  2. 搜尋並選取 適用於 WSL 的 適用於端點的 Microsoft Defender 外掛程式。 然後選擇 修復。 此操作應能解決問題,將正確的檔案放入預期的目錄中。

    顯示控制台中 MDE 外掛程式的 WSL 修復選項的螢幕擷取畫面。

指令 healthcheck.exe 顯示輸出:「用 'bash' 指令啟動 WSL 發行版,五分鐘後重試。」

如果你看到這個訊息,請啟動 WSL 發行版,並在重新執行健康檢查前等待:

截圖顯示 PowerShell 輸出。

  1. 開啟終端機實例並執行指令 wsl。

  2. 至少等五分鐘再重做健康檢查。

指令 healthcheck.exe 可能會顯示輸出:「等待遙測。 請五分鐘後重試。」

你可能會在遙測初始化時看到以下訊息:

顯示健康遙測狀態的截圖。

若出現「等待遙測」訊息,請等待五分鐘並重播 healthcheck.exe。

你在 Microsoft Defender 入口網站中看不到任何裝置,時間軸中也看不到任何事件

請檢查以下事項:

  • 如果未看到電腦物件,請確認已經過足夠的時間讓上線完成 (通常最多需要 10 分鐘)。

  • 務必使用正確的篩選條件,並且你有適當的權限來查看所有裝置物件。 (例如,你的帳號/群組是否限制在特定群組 )

  • 使用健康檢查工具來提供整體外掛健康狀況的概覽。 打開終端機,然後從 healthcheck.exe 執行 %ProgramFiles%\適用於端點的 Microsoft Defender plug-in for WSL\tools 工具。

    顯示 PowerShell 狀態的截圖。

  • 啟用連線測試,並在 WSL 中檢查 Defender for Endpoint 的連線性。 如果連線測試失敗,請將健康檢查工具的輸出提供給我們的支援團隊。

連線測試在健康檢查中顯示為「無效」

如果連接測試結果 invalid顯示為 ,請使用以下檢查來診斷問題:

  • 如果你的機器有代理設定,請執行指令 healthCheck --extendedProxy。 這會提供有關您的電腦上已設定哪些 Proxy,以及這些設定對 WSL Defender 是否無效的資訊。

    healthCheck --extendedProxy 指令輸出截圖,顯示 WSL Defender 外掛在機器上偵測到代理設定。

  • 如果執行 healthCheck --extendedProxy 仍無法解決連線測試失敗,請在 .wslconfig 你 %UserProfile% 檔案中加入以下設定,然後重新啟動 WSL。 關於設定的詳細資訊可在 WSL 設定中找到。

    在 Windows 11 中

    在您的檔案中新增以下設定 .wslconfig 以啟用 DNS 隧道與鏡像網路:

    
    # Settings apply across all Linux distros running on WSL 2
    [wsl2]
    
    dnsTunneling=true
    
    networkingMode=mirrored
    

    在 Windows 10 中

    在你的 .wslconfig 檔案中新增以下設定來停用 DNS 代理:

    # Settings apply across all Linux distros running on WSL 2
    [wsl2]
    
    dnsProxy=false
    

連線問題依然存在

請依照以下步驟收集網路日誌:

  1. 開啟提高權限(以系統管理員身分執行)的 PowerShell 視窗。

  2. 下載並執行: .\collect-networking-logs.ps1

    Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-networking-logs.ps1" -OutFile collect-networking-logs.ps1
    Set-ExecutionPolicy Bypass -Scope Process -Force
    .\collect-networking-logs.ps1
    
  3. 開啟一個新的指令提示字元並執行以下指令: wsl。

  4. 開啟提高權限的(管理員)命令提示字元,並執行下列指令:wsl --debug-shell

  5. 在除錯 shell 中執行: mdatp connectivity test。

  6. 讓連接測試完成。

  7. 停止步驟 #2 中執行的 .ps1。

  8. 分享產生的 .zip 檔案,以及在 %ProgramFiles%\適用於端點的 Microsoft Defender plug-in for WSL\tools 中執行 healthcheck.exe --supportBundle 所收集到的支援套件。

收集支援包

要收集支援所需的診斷資訊,請依照以下步驟產生支援套件:

  1. 如果你遇到其他挑戰或問題,請打開終端機。 首先,前往 Defender for Endpoint WSL 外掛工具目錄,然後執行該healthcheck.exe工具以產生支援套件:

    cd "%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools"
    

    接著執行以下指令,產生一個支援套件,收集診斷資訊以進行故障排除:

    .\healthcheck.exe --supportBundle
    

    支援包可在前一個指令提供的路徑中找到。

    顯示 PowerShell 輸出狀態的截圖。

WSL1 與 WSL2

Microsoft Defender Endpoint for WSL 外掛支援運行於 WSL 2 上的 Linux 發行版。 如果這些 Linux 發行版是跟 WSL 1 綁定的,可能會遇到問題。 因此,建議關閉 WSL 1。 要使用 Intune 政策,請執行以下步驟:

Microsoft Intune 是配置及分發 Defender for Endpoint 功能給裝置的推薦工具。 不過,Intune 是獨立產品,不屬於 Defender for Endpoint,也不是所有訂閱中都有。 若要使用 Intune,您需要訂用包含 Intune 的訂閱方案;或者,您也可以另外單獨購買其獨立訂閱或附加元件。 如果你沒有 Intune,也可以使用本文中提到的其他方法。 欲了解更多資訊,請參閱 Microsoft Intune 授權條款。

  1. 請前往您的 Microsoft Intune 管理中心。

  2. 前往 裝置>設定描述檔>建立>新增原則。

  3. 選擇 Windows 10 及以後版本>的設定目錄。

  4. 為新的設定檔建立名稱,並搜尋 Windows 子系統 Linux 版,以查看並新增可用設定的完整清單。

  5. 將 允許 WSL1 設定設為 停用,以確保只能使用 WSL 2 發行版。

    或者,如果你想繼續使用 WSL 1,或不使用 Intune 政策,可以透過在 PowerShell 中執行以下指令,選擇性地將特定已安裝的發行版從 WSL 1 升級到 WSL 2:

    wsl --set-version <YourDistroName> 2
    

    為了確保所有未來發行版預設使用 WSL 2,請在 PowerShell 中執行以下指令,將 WSL 2 設為預設版本:

    wsl --set-default-version 2
    

覆寫 WSL 外掛程式的發行環

您可以透過設定登錄設定,覆寫外掛程式的預設發行環。

  • 該外掛預設使用 Windows EDR 環。 如果你想切換到較早的環路,請在登錄檔中設 OverrideReleaseRing 為以下其中之一並重新啟動 WSL:
    • 姓名: OverrideReleaseRing

    • 類型: REG_SZ

    • 價值:Dogfood or External or InsiderFast or Production

    • 路徑: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\適用於端點的 Microsoft Defender plug-in for WSL