基于 QUIC 的 SMB

适用于: Windows Server 2022 Datacenter: Azure 版本、Windows 11

SMB over QUIC 引入了 TCP 网络传输的替代方法,通过 Internet 等不受信任的网络提供与边缘文件服务器的安全可靠连接。 与 TCP 相比,QUIC 是一个 IETF 标准化的协议,具有许多好处:

  • 始终加密所有数据包,并通过 TLS 1.3 对握手进行身份验证
  • 可靠且不可靠的应用程序数据的并行流
  • 第一次往返行程中的应用程序数据 (0-RTT)
  • 改进了拥塞控制和丢失恢复
  • 置更改客户端 IP 地址或端口

SMB over QUIC 为远程办公人员、移动设备用户和高安全组织提供了 "SMB VPN"。 服务器证书通过 internet 友好的 UDP 端口443(而不是旧的 TCP 端口445)创建 TLS 1.3 加密的隧道。 所有 SMB 流量(包括隧道中的身份验证和授权)永远都不会向基础网络公开。 SMB 在 QUIC 隧道内的行为正常,这意味着用户体验不会更改。 SMB 功能,如多通道、签名、压缩、持续可用性、目录租赁等,工作正常。

文件服务器管理员必须在 QUIC 上选择启用 SMB。 默认情况下,它不是启用的,客户端无法强制文件服务器通过 QUIC 启用 SMB。 默认情况下,默认情况下,smb 客户端仍然使用 TCP,并且仅在 tcp 尝试失败或有意要求使用或的 QUIC 的情况下,才会在 QUIC 上尝试 smb NET USE /TRANSPORT:QUICNew-SmbMapping -TransportType QUIC 。 Windows

先决条件

若要在 QUIC 上使用 SMB,需要执行以下操作:

  • 运行 Windows server 2022 Datacenter: Azure 版本 (Microsoft server 操作系统的文件服务器)
  • 适用于企业的 Windows 11 计算机 (Windows)
  • Windows 管理中心 (主页)
  • 用于颁发证书的公钥基础结构,如 Active Directory 证书服务器或访问 Verisign、Digicert、我们的加密等受信任的第三方证书颁发者。

通过 QUIC 部署 SMB

步骤1:安装服务器证书

  1. 使用以下属性创建证书颁发机构颁发的证书:

    • 密钥用法:数字签名
    • 目的:服务器身份验证 (EKU 1.3.6.1.5.5.7.3.1)
    • 签名算法: SHA256RSA (或更高)
    • 签名哈希: SHA256 (或更高)
    • 公钥算法: ECDSA_P256 (或更高版本。还可以使用至少2048长度的 RSA)
    • 使用者可选名称 (SAN) : (用于连接到 SMB 服务器的每个完全限定 dns 名称 dns 名称条目)
    • Subject: (CN = 任何内容,但必须存在)
    • 私钥包括:是

    certificate settings showing Signature algorithm with a value of sha256RSA, signature hash algorithm value of sha256, and Subject value of ws2022-quicCertificate settings under the Detail tab showing Public key value of ECC (256 bits), public key parameters ECDSA-P256 and Application policies 1 application Certificate Policy Certificate details showing subject alternative name value as DNS Name equals ws2022-quic.corp, and Key Usage value as Digital Signature, Non-Repudiated

    如果使用 Microsoft Enterprise 证书颁发机构,则可以创建证书模板,并允许文件服务器管理员在请求时提供 DNS 名称。 有关创建证书模板的详细信息,请参阅 设计和实现 PKI:第 III 部分证书模板。 若要演示如何使用 Microsoft Enterprise 证书颁发机构通过 QUIC 创建用于 SMB 的证书,请观看此视频:

    若要申请第三方证书,请查阅供应商文档。

  2. 如果使用的是 Microsoft Enterprise 证书颁发机构:

    1. 在文件服务器上启动 MMC.EXE
    2. 添加 " 证书 " 管理单元,并选择 " 计算机" 帐户
    3. 展开 " 证书 (本地计算机") ," 个人",然后右键单击 " 证书 ",然后单击 " 申请新证书"。
    4. 点击“下一步”
    5. 选择 Active Directory 注册策略
    6. 点击“下一步”
    7. 为在 Active Directory 中发布的 QUIC 选择用于 SMB 的证书模板。
    8. 若要注册此证书,请单击 "详细信息"。单击此处以配置设置。
    9. 因此,用户可以使用查找文件服务器,并使用一个或多个 DNS 名称填写 "使用公用名和使用者可选名称"的值。
    10. 单击 "确定" ,然后单击 " 注册"。

    image showing the steps covered 1image showing the steps covered 2image showing the steps covered 3

注意

如果使用的是由第三方证书颁发机构颁发的证书文件,则可以使用 "证书" 管理单元或 Windows 管理中心将其导入。

步骤2:通过 QUIC 配置 SMB

  1. 部署Windows server 2022 Datacenter: Azure Edition server。

  2. 在管理 PC 或文件服务器上安装 Windows 管理中心的最新版本。 需要最新版本的 文件 文件共享 扩展。 如果在设置 扩展中启用了 "自动更新扩展",则 Windows 管理中心自动安装它。

  3. 将 Windows Server 2022 Datacenter: azure 版本文件服务器加入到你的 Active Directory 域,并通过为 UDP/443 入站添加防火墙允许规则,使其可通过 azure 公共接口上的 Windows 有问必答客户端进行访问。 不要 允许 TCP /445 入站到文件服务器。 文件服务器必须能够访问至少一个域控制器进行身份验证,但没有域控制器需要任何 internet 访问权限。

  4. 向 Windows 管理中心连接服务器,然后单击左下角的设置图标。 在 " 文件共享 (smb 服务器) " 部分中,在 "QUIC 上的 smb 通过 internet 进行文件共享" 下,单击 " 配置"。

  5. 单击 " 选择此文件服务器的计算机证书" 下的证书,单击 "客户端可以连接到的服务器地址" 或单击 " 全选",然后单击 " 启用"。

    image showing the steps for configure SMB over QUIC1

  6. 确保 QUIC 上的证书和 SMB 报表正常运行。

    image showing the steps for configure SMB over QUIC2

  7. 单击 " 文件和文件共享 " 菜单选项。 记下现有的 SMB 共享或创建一个新的共享。

若要演示如何在 QUIC 上配置和使用 SMB,请观看此视频:

步骤3:连接到 SMB 共享

  1. 将 Windows 11 设备加入你的域。 请确保 QUIC 文件服务器的证书使用者备用名称上的 SMB 名称被发布到 DNS,并完全限定添加到 WINDOWS 11 的主机文件中。 确保将服务器的证书使用者备用名称发布到 DNS,添加到 WINDOWS 11 的主机文件中。

  2. 将 Windows 11 设备移到外部网络,在该网络中,它将不再拥有对域控制器或文件服务器的内部 IP 地址的任何网络访问权限。

  3. 在 Windows 文件资源管理器 "的地址栏中,键入文件服务器上的共享的 UNC 路径,并确认可以访问共享中的数据。 或者,可以将 NET use/传输: QUICSMBMAPPING-TRANSPORTTYPE QUIC 用于 UNC 路径。 示例:

    NET USE * \\fsedge1.contoso.com\salesNET USE * \\fsedge1.contoso.com\sales

    NET USE * \\fsedge1.contoso.com\sales /TRANSPORT:QUICNET USE * \\fsedge1.contoso.com\sales /TRANSPORT:QUIC

    New-SmbMapping -LocalPath 'Z:' -RemotePath '\\fsedge1.contoso.com\sales' -TransportType QUICNew-SmbMapping -LocalPath 'Z:' -RemotePath '\\fsedge1.contoso.com\sales' -TransportType QUIC

默认情况下,当连接到 QUIC 文件服务器上的 SMB 时,Windows 11 设备将无法访问 Active Directory 域控制器。 这意味着身份验证使用 NTLMv2,其中文件服务器代表客户端进行身份验证。 不会在 TLS 1.3 加密的 QUIC 隧道之外发生 NTLMv2 身份验证或授权。 但是,我们仍建议使用 Kerberos 作为一般安全最佳做法,不建议在部署中创建新的 NTLMv2 依赖项。 若要允许这样做,你可以将 KDC 代理配置为代表用户转发票证请求,同时使用 internet 友好的 HTTPS 加密信道。

注意

不能使用配置 KDC 代理的文件服务器上的 TCP 端口443,在网关模式下配置 Windows 管理中心 (WAC) 。 在文件服务器上配置 WAC 时,请将端口更改为未使用的端口,而不是443。 如果已在端口443上配置了 WAC,请重新运行 WAC 安装程序 MSI,并在出现提示时选择其他端口。

Windows 管理中心方法

  1. 确保至少使用 Windows 管理中心版本2110。

  2. 正常情况下,通过 QUIC 配置 SMB。 从 Windows 管理中心2110开始,会自动启用在 SMB over QUIC 中配置 KDC 代理的选项,而无需在文件服务器上执行额外的步骤。

  3. 配置以下组策略设置以应用于 Windows 11 设备:

    计算机 管理模板 > 系统 > kerberos > 指定 KERBEROS 客户端的 KDC 代理服务器

    此组策略设置的格式是完全限定的 Active Directory 域名的值名称,该值将是您为 QUIC 服务器指定的外部名称。 例如,其中 Active Directory 域的名称为 corp.contoso.com ,外部 DNS 域名为 contoso.com

    value name: corp.contoso.com

    value: <https fsedge1.contoso.com:443:kdcproxy />

    此 Kerberos 领域映射意味着如果用户 ned@corp.contoso.com 尝试连接到文件服务器名称 ned@corp.contoso.com,KDC 代理将知道将 Kerberos 票证转发到内部 corp.contoso.com 域中的域控制器。 与客户端的通信将通过 HTTPS 在端口443上进行,并且用户凭据不会直接显示在客户端文件服务器网络上。

  4. 确保边缘防火墙允许端口443上的 HTTPS 传入文件服务器。

  5. 应用组策略并重新启动 Windows 11 设备。

手动方法

  1. 在文件服务器上,在提升的 PowerShell 提示符下运行:

    NETSH http add urlacl url=https://+:443/KdcProxy user="NT authority\Network Service"

    REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\KPSSVC\Settings" /v HttpsClientAuth /t REG_DWORD /d 0x0 /f

    REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\KPSSVC\Settings" /v DisallowUnprotectedPasswordAuth /t REG_DWORD /d 0x0 /f

    Get-SmbServerCertificateMapping

  2. 从与 SMB over QUIC 证书关联的证书复制 "指纹" 值 (可能有多个行,但这些行都具有相同的指纹) ,并将其粘贴为以下命令的 Certhash 值:

    $guid = [Guid]::NewGuid()

    Add-NetIPHttpsCertBinding -ipport 0.0.0.0:443 -CertificateHash <thumbprint> -CertificateStoreName "my" -ApplicationId "{$guid}" -NullEncryption $false

  3. 将 QUIC 名称上的文件服务器的 SMB 添加为 Kerberos 的 Active Directory 中的 Spn。 例如:

    NETDOM computername ws2022-quic.corp.contoso.com /add fsedge1.contoso.com

  4. 将 KDC 代理服务设置为自动并启动:

    Set-Service -Name kpssvc -StartupType Automatic

    Start-Service -Name kpssvc

  5. 配置以下组策略以应用于 Windows 11 设备:

    计算机 管理模板 > 系统 > kerberos > 指定 KERBEROS 客户端的 KDC 代理服务器

    此组策略设置的格式是完全限定的 Active Directory 域名的值名称,该值将是您为 QUIC 服务器指定的外部名称。 例如,其中 Active Directory 域的名称为 "corp.contoso.com",外部 DNS 域的名称为 "contoso.com":

    value name: corp.contoso.com

    value: <https fsedge1.contoso.com:443:kdcproxy />

    此 Kerberos 领域映射意味着如果用户 ned@corp.contoso.com 尝试连接到文件服务器名称 fs1edge.contoso.com" ,KDC 代理将知道将 Kerberos 票证转发到内部域中的域控制器 corp.contoso.com 。 与客户端的通信将通过 HTTPS 在端口443上进行,并且用户凭据不会直接显示在客户端文件服务器网络上。

  6. 创建一个 Windows Defender 防火墙规则,该规则允许 KDC 代理服务使用 TCP 端口443接收身份验证请求。

  7. 确保边缘防火墙允许端口443上的 HTTPS 传入文件服务器。

  8. 应用组策略并重新启动 Windows 11 设备。

注意

KDC 代理的自动配置将在 SMB over QUIC 之后出现,并且这些服务器步骤不是必需的。

证书过期和续订

使用颁发者的新证书替换的 QUIC 证书过期的 SMB 将包含新指纹。 尽管可以使用 Active Directory 证书服务在 QUIC 证书过期时自动续订该证书,但续订的证书也会获得新的指纹。 这实际上意味着,当证书过期时,必须重新配置 QUIC 的 SMB,因为必须映射新的指纹。 你只需在 Windows 管理中心选择新证书,以便 QUIC 配置现有 SMB,或使用 Set-SMBServerCertificateMapping PowerShell 命令来更新新证书的映射。 可以使用 Azure Automanage for Windows Server 来检测即将过期的证书过期情况并防止服务中断。 有关详细信息,请参阅Azure Automanage for Windows Server

备注

  • Windows Server 2022 Datacenter: Azure 版本最终也将在 Azure Stack HCI 21H2 上可用,适用于不使用 Azure 公有云的客户。
  • 建议仅使用移动用户密码配置的只读域控制器可用于文件服务器。
  • 用户应具有强密码,或者在理想情况下,使用适用于业务 MFA智能卡Windows Hello 的无密码策略进行配置。 通过 细化密码策略 为移动用户配置帐户锁定策略,并且应部署入侵防护软件来检测暴力破解攻击或密码喷涂攻击。

更多参考资料

Microsoft 博客上的存储

QUIC 工作组主页

Microsoft MsQuic GitHub 主页

QUIC 维基百科

TLS 1.3 工作组主页

Microsoft TLS 1.3 支持参考