适用于 适用于 Linux 的 Windows 子系统 (WSL) 的Microsoft Defender for Endpoint插件
适用于:
- Microsoft Defender for Endpoint 计划 2
- Windows 11
- Windows 10版本 2004 及更高版本 (内部版本 19044 及更高版本)
概述
适用于 Linux 的 Windows 子系统 (WSL) 2,它取代了 Microsoft Defender for Endpoint支持的早期版本的 WSL (,没有插件) ,它提供了一个与 Windows 无缝集成,但使用虚拟化技术隔离的 Linux 环境。 Defender for Endpoint for WSL 插件使 Defender for Endpoint 能够通过插入隔离子系统来提供对所有正在运行的 WSL 容器的更多可见性。
已知问题和限制
在开始之前,请注意以下注意事项:
该插件不支持在 之前的
1.24.522.2
版本中自动更新。 在版本和更高版本1.24.522.2
上,通过跨所有环Windows 更新支持更新。 只有生产圈中才支持通过 Windows Server 更新服务 (WSUS) 、System Center Configuration Manager (SCCM) 和 Microsoft 更新目录进行汇报,以确保包的稳定性。插件完全实例化需要几分钟时间,WSL2 实例最多需要 30 分钟才能自行加入。 生存期较短的 WSL 容器实例可能会导致 WSL2 实例未显示在Microsoft Defender门户中, (https://security.microsoft.com) 。 一旦任何分发运行时间足够长 (至少 30 分钟) ,它就会显示出来。
不支持运行自定义内核和自定义内核命令行。 尽管插件不会阻止在该配置中运行,但当你运行自定义内核和自定义内核命令行时,它不保证 WSL 中的可见性。 建议借助 wsl 设置Microsoft Intune阻止此类配置。
OS 分发在 Microsoft Defender 门户中 WSL 设备的“设备概述”页中显示为“无”。
使用 ARM64 处理器的计算机不支持该插件。
该插件提供对来自 WSL 的事件的可见性,但其他功能(如反恶意软件、危险和漏洞管理和响应命令)不适用于 WSL 逻辑设备。
软件先决条件
WSL 版本 2.0.7.0 或更高版本必须至少运行一个活动发行版。
运行
wsl --update
以确保使用的是最新版本。 如果wsl -–version
显示低于2.0.7.0
的版本,请运行wsl -–update –pre-release
以获取最新更新。Windows 客户端设备必须载入到 Defender for Endpoint。
Windows 客户端设备必须运行Windows 10版本 2004 及更高版本 (内部版本 19044 及更高版本) ,或者Windows 11才能支持可与插件配合使用的 WSL 版本。
软件组件和安装程序文件名
安装程序: DefenderPlugin-x64-0.24.426.1.msi
。 可以从Microsoft Defender门户中的载入页面下载它。 (转到 设置>终结点>载入.)
安装目录:
%ProgramFiles%
%ProgramData%
已安装的组件:
DefenderforEndpointPlug-in.dll
. 此 DLL 是用于加载 Defender for Endpoint 以在 WSL 中工作的库。 可以在 中找到它%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\plug-in
。healthcheck.exe
. 此程序检查 Defender for Endpoint 的运行状况状态,使你能够查看已安装的 WSL、插件和 Defender for Endpoint 版本。 可以在 中找到它%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools
。
安装步骤
如果尚未安装适用于 Linux 的 Windows 子系统,请执行以下步骤:
打开终端或命令提示符。 (在 Windows 中,转到 “启动>命令提示符”。或者,右键单击“开始”按钮,然后选择“ Terminal.)
运行命令
wsl -–install
。确认 WSL 已安装并正在运行。
使用终端或命令提示符运行
wsl –-update
以确保具有最新版本。运行 命令以确保
wsl
WSL 在测试之前正在运行。
按照以下步骤安装插件:
安装从 Microsoft Defender 门户的载入部分下载的 MSI 文件, (设置>终结点>载入>适用于 Linux 的 Windows 子系统 2 (插件) ) 。
打开命令提示符/终端并运行
wsl
。
可以使用 Microsoft Intune 部署包。
注意
如果 WslService
正在运行,它将在安装过程中停止。 无需单独加入子系统。 相反,插件会自动载入到 Windows 主机加入到的租户。
安装验证清单
更新或安装后,请等待至少 5 分钟,使插件完全初始化并写入日志输出。
打开终端或命令提示符。 (在 Windows 中,转到 “启动>命令提示符”。或者,右键单击“开始”按钮,然后选择“ Terminal.)
运行以下命令:
cd "%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools"
.运行命令
.\healthcheck.exe
。查看 Defender 和 WSL 的详细信息,并确保它们符合或超过以下要求:
-
插件版本:
1.24.522.2
-
WSL 版本:
2.0.7.0
或更高版本 -
Defender 应用版本:
101.24032.0007
-
Defender 运行状况:
Healthy
-
插件版本:
为在 WSL 中运行的 Defender 设置代理
本部分介绍如何为 Defender for Endpoint 插件配置代理连接。 如果你的企业使用代理来提供与 Windows 主机上运行的 Defender for Endpoint 的连接,请继续阅读以确定是否需要为插件配置它。
如果想要将主机 windows EDR 遥测代理配置用于 WSL 插件的MDE,则无需执行其他任何操作。 插件会自动采用此配置。
如果要将主机 winhttp 代理配置用于 WSL 插件的 MDE,则无需执行其他任何操作。 插件会自动采用此配置。
如果要将主机网络和网络代理设置用于 WSL 插件的 MDE,则无需再使用其他任何设置。 插件会自动采用此配置。
注意
WSL defender 仅 http
支持代理。
插件代理选择
如果主机包含多个代理设置,插件将使用以下层次结构选择代理配置:
defender for Endpoint 静态代理设置 (
TelemetryProxyServer
) 。Winhttp
代理 (通过netsh
命令) 进行配置。网络 & Internet 代理设置。
例如,如果主机同时具有 Winhttp proxy
和 Network & Internet proxy
,则插件会选择 Winhttp proxy
作为代理配置。
注意
DefenderProxyServer
不再支持注册表项。 按照本文前面所述的步骤在插件中配置代理。
在 WSL 中运行的 Defender 的连接性测试
每当设备上存在代理修改时,都会触发 defender 连接测试,并计划每小时运行一次。
启动 wsl 计算机时,等待 5 分钟,然后运行 healthcheck.exe
位于 %ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools
的 (,以获取连接测试) 的结果。 如果成功,可以看到连接测试是成功的。 如果失败,可以看到连接测试invalid
指示从 WSL MDE 插件到 Defender for Endpoint 服务 URL 的客户端连接失败。
注意
ConnectivityTest
不再支持注册表项。
若要设置在 WSL 容器中使用的代理 (子系统) 上运行的分发,请参阅 WSL 中的高级设置配置。
验证功能和 SOC 分析师体验
安装插件后,子系统及其所有正在运行的容器将载入Microsoft Defender门户。
登录到Microsoft Defender门户,然后打开“设备”视图。
使用标记 WSL2 进行筛选。
可以使用适用于 WSL 的活动 Defender for Endpoint 插件查看环境中的所有 WSL 实例。 这些实例表示在给定主机上 WSL 内运行的所有分发。 设备的主机名与 Windows 主机的主机名匹配。 但是,它表示为 Linux 设备。
打开设备页。 在“ 概述 ”窗格中,有一个用于托管设备的链接。 通过此链接,你可以了解设备在 Windows 主机上运行。 然后,可以透视主机进行进一步调查和/或响应。
时间线填充,类似于 Linux 上的 Defender for Endpoint,其中包含来自子系统内部的事件 (文件、进程、网络) 。 可以在时间线视图中观察活动和检测。 也会根据需要生成警报和事件。
为 WSL 计算机设置自定义标记
该插件使用标记 WSL2
载入 WSL 计算机。 如果你或你的组织需要自定义标记,请按照下面概述的步骤操作:
以管理员身份打开注册表编辑器。
使用以下详细信息创建注册表项:
- 名称:
GROUP
- 类型:
REG_SZ
或注册表字符串 - 值:
Custom tag
- 路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Advanced Threat Protection\DeviceTagging
- 名称:
设置注册表后,使用以下步骤重启 wsl:
打开命令提示符并运行命令
wsl --shutdown
。运行
wsl
命令。
等待 5-10 分钟,让门户反映更改。
注意
注册表中设置的自定义标记后跟一个 _WSL2
。
例如,如果注册表值设置为 Microsoft
,则自定义标记将为 Microsoft_WSL2
,并且将在门户中显示相同的标记。
测试插件
若要在安装后测试插件,请执行以下步骤:
打开终端或命令提示符。 (在 Windows 中,转到 “启动>命令提示符”。或者,右键单击“开始”按钮,然后选择“ Terminal.)
运行命令
wsl
。从 https://aka.ms/MDE-Linux-EDR-DIY下载并提取脚本文件。
在 Linux 提示符下,运行命令
./mde_linux_edr_diy.sh
。几分钟后,门户中应显示一个警报,用于对 WSL2 实例进行检测。
注意
事件大约需要 5 分钟才能显示在Microsoft Defender门户中。
将计算机视为环境中要对其执行测试的常规 Linux 主机。 具体而言,我们希望获得你关于使用新插件发现潜在恶意行为的能力的反馈。
高级搜寻
在高级搜寻架构的 DeviceInfo
表中,有一个名为 HostDeviceId
的新属性,可用于将 WSL 实例映射到其 Windows 主机设备。 下面是一些示例搜寻查询:
获取当前组织/租户的所有 WSL 设备 ID
//Get all WSL device ids for the current organization/tenant
let wsl_endpoints = DeviceInfo
| where OSPlatform == "Linux" and isempty(HostDeviceId) != true
| distinct DeviceId;
wsl_endpoints
获取 WSL 设备 ID 及其相应的主机设备 ID
//Get WSL device ids and their corresponding host device ids
DeviceInfo
| where OSPlatform == "Linux" and isempty(HostDeviceId) != true
| distinct WSLDeviceId=DeviceId, HostDeviceId
获取运行 curl 或 wget 的 WSL 设备 ID 列表
//Get a list of WSL device ids where curl or wget was run
let wsl_endpoints = DeviceInfo
| where OSPlatform == "Linux" and isempty(HostDeviceId) != true
| distinct DeviceId;
DeviceProcessEvents
| where FileName == "curl" or FileName == "wget"
| where DeviceId in (wsl_endpoints)
| sort by Timestamp desc
疑难解答
命令 healthcheck.exe
显示输出“使用'bash'命令启动 WSL 发行版,并在五分钟内重试。
打开终端实例并运行命令
wsl
。请至少等待五分钟,然后重新运行运行状况检查。
该 healthcheck.exe
命令可能会显示输出“正在等待遥测”。 请在五分钟内重试。”
如果发生该错误,请等待五分钟,然后重新运行 healthcheck.exe
。
在Microsoft Defender门户中看不到任何设备,或者时间线
检查以下事项:
如果未看到计算机对象,请确保经过足够的时间来完成 (通常最多 10 分钟) 。
请确保使用正确的筛选器,并且你具有相应的权限来查看所有设备对象。 (例如,你的帐户/组是否仅限于特定组?)
使用运行状况检查工具提供整体插件运行状况的概述。 打开“终端”,然后从
%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools
运行healthcheck.exe
该工具。在 WSL 中为 Defender for Endpoint 连接启用连接测试和检查。 如果连接测试失败,请将运行状况检查工具的输出提供给支持团队。
在运行状况检查中,连接测试报告“无效”
如果计算机具有代理设置,请运行命令
healthCheck --extendedProxy
。 这将提供有关计算机上设置了哪些代理 () 以及这些配置是否对 WSL defender 无效的信息。如果上述步骤无法解决问题,请在 中包括以下配置设置
.wslconfig
%UserProfile%
,然后重启 WSL。 有关设置的详细信息,请参阅 WSL 设置。在 Windows 11
# Settings apply across all Linux distros running on WSL 2 [wsl2] dnsTunneling=true networkingMode=mirrored
在 Windows 10
# Settings apply across all Linux distros running on WSL 2 [wsl2] dnsProxy=false
连接问题仍然存在
按照以下步骤收集网络日志:
) PowerShell 提示符打开提升 (管理员。
下载并运行:
.\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
打开新的命令提示符并运行以下命令:
wsl
。打开提升 (管理员) 命令提示符,并运行以下命令:
wsl --debug-shell
。在调试 shell 中,运行:
mdatp connectivity test
。允许完成连接测试。
停止在步骤 2 中运行的 .ps1。
共享生成的 .zip 文件以及可按 步骤中所述收集的支持捆绑包。
收集支持捆绑包
如果遇到任何其他挑战或问题,请打开终端,并运行以下命令以生成支持捆绑包:
cd "%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools"
.\healthcheck.exe --supportBundle
可以在上一个命令提供的路径中找到支持捆绑包。
Microsoft Defender Endpoint for WSL 支持在 WSL 2 上运行的 Linux 分发版。 如果它们与 WSL 1 关联,可能会遇到问题。 因此,建议禁用 WSL 1。 若要使用Intune策略执行此操作,请执行以下步骤:
转到 “设备>配置文件”“>创建新>策略”。
选择Windows 10及更高版本的>“设置目录”。
为新配置文件创建一个名称,并搜索适用于 Linux 的 Windows 子系统以查看和添加可用设置的完整列表。
将 “允许 WSL1 ”设置设置为 “已禁用”,以确保只能使用 WSL 2 分发版。
或者,如果想要继续使用 WSL 1 或不使用 Intune 策略,可以通过在 PowerShell 中运行 命令,选择性地将已安装的分发版关联到 WSL 2 上运行:
wsl --set-version <YourDistroName> 2
若要将 WSL 2 作为系统安装新分发版的默认 WSL 版本,请在 PowerShell 中运行以下命令:
wsl --set-default-version 2
默认情况下,插件使用 Windows EDR 环。 如果要切换到早期通道,请在注册表中将 设置为
OverrideReleaseRing
以下其中一个,然后重启 WSL:-
名称:
OverrideReleaseRing
-
类型:
REG_SZ
-
值:
Dogfood or External or InsiderFast or Production
-
路径:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Defender for Endpoint plug-in for WSL
-
名称:
如果在启动 WSL 时看到错误,例如“插件'DefenderforEndpointPlug-in'返回了错误错误代码:Wsl/Service/CreateInstance/CreateVm/Plugin/ERROR_FILE_NOT_FOUND”,则表示用于 WSL 安装的 Defender for Endpoint 插件出错。 若要修复它,请执行以下步骤: