企业环境:为公司设置适用于 Linux 的 Windows 子系统

本指南适用于负责设置企业工作环境的 IT 管理员或安全分析师,其目标是跨多台计算机分发软件,并跨这些工作计算机维护一致的安全设置级别。

许多公司使用 Microsoft IntuneMicrosoft Defender 来管理这些安全设置。 但是,在这种情况下设置 WSL 和访问 Linux 发行版需要一些特定的设置。 本指南提供了在企业环境中实现 Linux 和 WSL 的安全使用所需的知识。

有多种方法可以设置安全的企业环境,但我们建议使用以下方法来设置利用 WSL 的安全环境。

先决条件

若要开始,请确保所有企业设备都安装了以下最低版本:

  • Windows 10 22H2 或更高版本,或者 Windows 11 22H2 或更高版本
    • 高级网络功能仅适用于 Windows 11 22H2 或更高版本。
  • WSL 2.0.9 或更高版本
    • 可通过运行 wsl --version 来检查 WSL 版本。

启用 Microsoft Defender for Endpoint (MDE) 集成

Microsoft Defender for Endpoint 是一个企业终结点安全平台,专门用于帮助企业网络防御、检测、调查和响应高级威胁。 MDE 现在作为 WSL 插件与 WSL 集成,这样安全团队就可使用 Defender for Endpoint 在所有正在运行的 WSL 发行版中查看并持续监视安全事件,同时将对开发人员工作负载的性能影响降低最小。

若要详细了解如何入门,请参阅适用于 WSL 的 Microsoft Defender for Endpoint 插件

Microsoft Intune 是基于云的终结点管理解决方案。 它管理用户对组织资源的访问,并简化了跨多台设备(包括移动设备、台式计算机和虚拟终结点)的应用和设备管理。 可使用 Microsoft Intune 来管理组织内部的设备,这现在还包括管理对 WSL 及其关键安全设置的访问。

有关使用 Intune 将 WSL 作为 Windows 组件进行管理和管理推荐设置的指南,请参阅 WSL 的 Intune 设置

使用高级网络功能和控件

从 Windows 11 22H2 和 WSL 2.0.9 或更高版本开始,Windows 防火墙规则将自动应用于 WSL。 这可确保 Windows 主机上设置的防火墙规则默认自动应用于所有 WSL 发行版。 有关自定义 WSL 防火墙设置的指南,请访问配置 Hyper-V 防火墙

此外,建议根据你的特定企业方案配置 .wslconfig 文件中 [wsl2] 下的设置

镜像模式网络

networkingMode=mirrored 启用镜像模式网络。 这种新的网络模式提高了与复杂网络环境的兼容性(尤其是 VPN 等),还增添了对默认 NAT 模式(例如 IPv6)中不可用的新网络功能的支持。

DNS 隧道

dnsTunneling=true 更改 WSL 获取 DNS 信息的方式。 此设置改进了不同网络环境中的兼容性,并利用虚拟化功能获取 DNS 信息而不是网络数据包。 如果遇到任何连接问题,建议启用此功能,在使用 VPN、高级防火墙设置等时尤其有用。

自动代理

autoProxy=true 强制 WSL 使用 Windows 的 HTTP 代理信息。 建议在 Windows 上使用代理时启用此设置,因为这会使该代理自动应用于 WSL 发行版。

创建自定义的 WSL 映像

通常所说的“映像”只是软件及其组件保存到文件中的快照。 对于适用于 Linux 的 Windows 子系统,映像将由子系统、其分发版以及分发版上安装的所有软件和包组成。

若要开始创建 WSL 映像,请先安装适用于 Linux 的 Windows 子系统

安装完成后,使用 Microsoft Store 下载并安装适合你的 Linux 分发版。

导出 WSL 映像

导出自定义的 WSL 映像,方法是运行 wsl --export <Distro> <FileName>,将映像打包到 tar 文件中,并准备好将其分发到其他计算机。 可按照自定义发行版指南创建自定义分发版,包括 CentOS、RedHat 等

分发 WSL 映像

从共享或存储设备分发 WSL 映像,方法是运行 wsl --import <Distro> <InstallLocation> <FileName>,将指定的 tar 文件作为新的分发版导入。

更新和修补 Linux 分发版和包

强烈建议使用 Linux 配置管理器工具来监视和管理 Linux 用户空间。 可以从许多 Linux 配置管理器的主机进行选择。 请参阅此博客文章,了解如何在 WSL 2 中快速运行 Puppet

Windows 文件系统访问

当 WSL 内的 Linux 二进制文件访问 Windows 文件时,它使用运行 wsl.exe 的 Windows 用户的用户权限执行此操作。 因此,即使 Linux 用户在 WSL 中具有根访问权限,如果 Windows 用户没有这些权限,他们也无法在 Windows 上执行 Windows 管理员级操作。 对于来自 WSL 的 Windows 文件和 Windows 可执行文件访问,运行 shell(例如 bash)与以该用户身份从 Windows 运行 powershell 具有相同的安全级别权限。

支持

  • 使用 wsl --importwsl --export 在内部共享已批准的映像
  • 使用 WSL Distro Launcher 存储库为企业创建自己的 WSL 分发版
  • 使用 Microsoft Defender for Endpoint (MDE) 监视 WSL 发行版中的安全事件
  • 使用防火墙设置控制 WSL 中的网络(包括将 Windows 防火墙设置同步到 WSL)
  • 使用 Intune 或组策略控制对 WSL 及其密钥安全设置的访问

下面是我们尚不支持但正在研究的功能列表。

目前不支持

下面是 WSL 中当前不支持但常被要求提供的功能的列表。 这些请求已成为我们的积压工作 (backlog),我们正在设法添加它们。

  • 使用 Windows 工具管理 Linux 分发版和包的更新和修补程序
  • Windows 更新也会更新 WSL 分发版的内容
  • 控制企业中的用户可以访问哪些分发版
  • 控制用户的根访问权限