本文說明如何安裝、設定及疑難排解適用於 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 版還沒安裝,請依照以下步驟操作:
開啟終端機或命令提示字元。 (在 Windows 中,前往 開始>命令提示字元。或者,以滑鼠右鍵按一下 [開始] 按鈕,然後選取 終端。)
執行
wsl -–install命令。確認 WSL 是否已安裝並運作。
使用終端機或命令提示字元執行
wsl –-update,確認你有最新版本。請先執行
wsl命令,以確認 WSL 在測試前已啟動並正在執行。
請依照以下步驟安裝外掛:
安裝從 Microsoft Defender 入口網站中的上線區段下載的 MSI 檔案 (設定>端點>上線>適用於 Linux 的 Windows 子系統 2 (外掛程式))。
打開命令提示字元或終端機並執行
wsl。
注意事項
如果 WslService 正在運行,安裝過程中就會停止。 你不需要另外啟動子系統。 外掛程式改為自動上線至 Windows 主機所上線的租用戶。
適用於端點的 Microsoft Defender 適用於 WSL 外掛程式更新 KB 更新。
安裝驗證檢查清單
請使用以下檢查清單來確認外掛是否正確安裝並正常運作:
更新或安裝後,至少等待五分鐘,讓外掛程式完全初始化並寫入日誌輸出。
開啟終端機或命令提示字元。 (在 Windows 中,前往 開始>命令提示字元。或者,以滑鼠右鍵按一下 [開始] 按鈕,然後選取 終端。)
執行命令:
cd "%ProgramFiles%\適用於端點的 Microsoft Defender plug-in for WSL\tools".執行
.\healthcheck.exe命令。對於 WSL 容器(WSLc),請確認所有活躍的 WSLc 虛擬機都列在 HealthCheck 輸出中,且每個虛擬機都報告健康的 Defender 狀態。
請檢視 Defender 與 WSL 的詳細資訊,確保它們符合或超過以下要求:
外掛版本:
2.26.921.1WSL 版本:
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 外掛如何選擇代理
如果您的主機包含多個代理設定,外掛會依以下階層選擇代理配置:
Defender for Endpoint 靜態代理設定 (
TelemetryProxyServer) 。Winhttp代理 (透過netsh指令) 設定。網路 & 網路代理設定。
例如,如果你的主機電腦同時具有
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 的用戶端連線失敗。
驗證功能性與 SOC 分析師體驗
注意事項
調查體驗(包括裝置時間軸、警示、事故及進階搜捕)在 WSL 2 與 WSLc 工作負載中皆相同。
安裝外掛後,子系統及其所有執行中的容器會被接入 Microsoft Defender 入口網站。
登入 Microsoft Defender 入口網站,並開啟裝置檢視。
使用標籤 WSL2 過濾裝置庫存。 篩選檢視顯示 Windows 主機及相關的經典 WSL 與 WSL 容器裝置作為獨立條目。
你可以透過啟用 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 裝置名稱相同時,請使用裝置類型欄位來區分它們。
打開裝置頁面。 在概覽面板中,主機連結顯示該裝置正在運行於 Windows 主機上。 您可以點選此連結,直接跳轉至 Windows 主機進行進一步調查及/或回應。
時間軸會被填入,類似於 Defender for Endpoint on Linux,包含子系統內部的事件, (檔案、程序、網路) 。 你可以在時間軸視圖中觀察活動和偵測。 警報與事件也會依情況自動產生。
為您的 WSL 機器設定自訂標籤
該外掛程式會將 WSL 機器納入管理,並加上標籤 WSL2。 如果您或您的組織需要自訂標籤,請依照以下步驟設定:
以管理員身份開啟登錄編輯器。
建立包含以下細節的登錄檔金鑰:
- 名稱:
GROUP - 類型:
REG_SZ或登錄檔字串 - 值:
Custom tag - 路徑:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows 進階威脅防護\DeviceTagging
- 名稱:
登錄檔設定完成後,請依照以下步驟重新啟動 WSL:
打開命令提示字元並執行指令
wsl --shutdown。執行
wsl命令。
等5到10分鐘,傳送門才會顯示變更。
注意事項
在 GROUP 登錄檔項目中設定的自訂標籤值會加上 _WSL2 作為後綴。 例如,如果 GROUP 登錄檔值為 Microsoft,自訂標籤會像入口網站一樣出現 Microsoft_WSL2 。
測試外掛
安裝後在 WSL2 或 WSLc 環境測試外掛,請依照以下步驟操作:
開啟終端機或命令提示字元。 (在 Windows 中,前往 開始>命令提示字元。或者,以滑鼠右鍵按一下 [開始] 按鈕,然後選取 終端。)
執行
wsl命令。從 MDE Linux EDR DIY 測試套件下載並解壓腳本檔案。
在 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 外掛程式安裝有問題。 修復方法請依照以下步驟進行:
在控制台,前往「程式>、程式與功能」。
搜尋並選取 適用於 WSL 的 適用於端點的 Microsoft Defender 外掛程式。 然後選擇 修復。 此操作應能解決問題,將正確的檔案放入預期的目錄中。
指令 healthcheck.exe 顯示輸出:「用 'bash' 指令啟動 WSL 發行版,五分鐘後重試。」
如果你看到這個訊息,請啟動 WSL 發行版,並在重新執行健康檢查前等待:
開啟終端機實例並執行指令
wsl。至少等五分鐘再重做健康檢查。
指令 healthcheck.exe 可能會顯示輸出:「等待遙測。 請五分鐘後重試。」
你可能會在遙測初始化時看到以下訊息:
若出現「等待遙測」訊息,請等待五分鐘並重播 healthcheck.exe。
你在 Microsoft Defender 入口網站中看不到任何裝置,時間軸中也看不到任何事件
請檢查以下事項:
如果未看到電腦物件,請確認已經過足夠的時間讓上線完成 (通常最多需要 10 分鐘)。
務必使用正確的篩選條件,並且你有適當的權限來查看所有裝置物件。 (例如,你的帳號/群組是否限制在特定群組 )
使用健康檢查工具來提供整體外掛健康狀況的概覽。 打開終端機,然後從
healthcheck.exe執行%ProgramFiles%\適用於端點的 Microsoft Defender plug-in for WSL\tools工具。啟用連線測試,並在 WSL 中檢查 Defender for Endpoint 的連線性。 如果連線測試失敗,請將健康檢查工具的輸出提供給我們的支援團隊。
連線測試在健康檢查中顯示為「無效」
如果連接測試結果 invalid顯示為 ,請使用以下檢查來診斷問題:
如果你的機器有代理設定,請執行指令
healthCheck --extendedProxy。 這會提供有關您的電腦上已設定哪些 Proxy,以及這些設定對 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
連線問題依然存在
請依照以下步驟收集網路日誌:
開啟提高權限(以系統管理員身分執行)的 PowerShell 視窗。
下載並執行:
.\collect-networking-logs.ps1Invoke-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開啟一個新的指令提示字元並執行以下指令:
wsl。開啟提高權限的(管理員)命令提示字元,並執行下列指令:
wsl --debug-shell在除錯 shell 中執行:
mdatp connectivity test。讓連接測試完成。
停止步驟 #2 中執行的 .ps1。
分享產生的 .zip 檔案,以及在
%ProgramFiles%\適用於端點的 Microsoft Defender plug-in for WSL\tools中執行healthcheck.exe --supportBundle所收集到的支援套件。
收集支援包
要收集支援所需的診斷資訊,請依照以下步驟產生支援套件:
如果你遇到其他挑戰或問題,請打開終端機。 首先,前往 Defender for Endpoint WSL 外掛工具目錄,然後執行該
healthcheck.exe工具以產生支援套件:cd "%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools"接著執行以下指令,產生一個支援套件,收集診斷資訊以進行故障排除:
.\healthcheck.exe --supportBundle支援包可在前一個指令提供的路徑中找到。
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 授權條款。
請前往您的 Microsoft Intune 管理中心。
前往 裝置>設定描述檔>建立>新增原則。
選擇 Windows 10 及以後版本>的設定目錄。
為新的設定檔建立名稱,並搜尋 Windows 子系統 Linux 版,以查看並新增可用設定的完整清單。
將 允許 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