SMB 安全增强功能

适用于: Windows server 2022,Windows Server 2019,Windows Server 2016,Windows Server 2012 R2,Windows Server 2012,Azure Stack HCI,版本21H2

本主题介绍 Windows Server 中的 SMB 安全增强功能。

SMB 加密

SMB 加密提供 SMB 数据的端对端加密,并防止数据在未受信任网络中遭到窃听。 你可以通过最少的工作量来部署 SMB 加密,但对于专用硬件或软件,可能需要少量额外成本。 它对 Internet 协议安全性 (IPsec) 或 WAN 加速器无要求。 SMB 加密可针对每次共享配置,也可以针对整个文件服务器配置,并且可以在数据通过不受信任的网络的各种场景中启用。

注意

SMB 加密不涉及静态安全性,这通常由 BitLocker 驱动器加密处理。

如果需要保护敏感数据免受拦截攻击的任何情况,应考虑进行 SMB 加密。 可能的方案包括:

  • 使用 SMB 协议移动信息工作者的敏感数据。 SMB 加密在文件服务器和客户端之间提供端到端的隐私和完整性保障,无需考虑传输数据的网络,例如由非 Microsoft 提供商维护的广域网 (WAN) 连接。
  • 借助 SMB 3.0,文件服务器可为服务器应用程序(如 SQL Server 或 Hyper-V)提供持续可用的存储。 启用 SMB 加密可提供保护信息免受窥探攻击的机会。 SMB 加密比大多数存储区域网络 (SAN) 所需的专用硬件解决方案更容易使用。

Windows Server 2022 和 Windows 11 引入了用于 SMB 3.1.1 加密的 AES-256-GCM 和 AES-256-CCM 加密套件。 Windows 连接到支持它的另一台计算机时,将自动协商这种更高级的密码方法,也可通过组策略强制执行。 Windows 仍支持 AES-128-GCM 和 AES-128-CCM。 默认情况下,AES-128-GCM 与 SMB 3.1.1 协商,实现了安全和性能的最佳平衡。

Windows Server 2022 和 Windows 11 SMB Direct 现在支持加密。 以前,启用 SMB 加密会禁用直接数据放置,从而使 RDMA 性能与 TCP 一样慢。 现在,数据在放置之前进行加密,使性能下降相对较小,同时增加了 AES-128 和 AES-256 保护的数据包的隐私。 可使用Windows 管理中心Set-SmbServerConfigurationUNC 强化组策略来启用加密。 此外,Windows Server 故障转移群集现支持对加密群集共享卷 (CSV) 和存储总线层 (SBL) 的节点内存储通信进行精细控制。 这意味着,在使用存储空间直通和 SMB 直通时,你可决定在群集本身内加密东-西通信,以获得更高的安全性。

重要

请注意,与不加密相比,任何端到端的加密保护都会产生显著的性能操作成本。

启用 SMB 加密

你可以为整个文件服务器启用 SMB 加密,也可以只为特定文件共享启用 SMB 加密。 可以使用以下方法之一来启用 SMB 加密:

使用 Windows Admin Center 启用 SMB 加密

  1. 下载并安装 Windows Admin Center
  2. 连接到文件服务器。
  3. 单击 " 文件 " "文件共享"。
  4. 单击“文件共享”选项卡。
  5. 若要在共享上要求加密,请单击共享名称并选择“启用 SMB 加密”。
  6. 若要在服务器上要求加密,请单击*“文件服务器设置”按钮,然后在“SMB 3 加密”下选择“所有客户端都需要(其他客户端被拒绝)”并单击“保存” 。

使用 UNC 强化来启用 SMB 加密

通过 UNC 强化,可将 SMB 客户端配置为要求加密,而不考虑服务器加密设置。 这对于防止拦截攻击非常有用。 若要配置 UNC 强化,请查看 MS15-011:组策略中的漏洞可能允许远程执行代码。 有关拦截攻击防御措施的详细信息,请参阅如何通过 SMB 客户端防御保护用户免受拦截攻击

使用 Windows PowerShell 启用 SMB 加密

  1. 若要为单个文件共享启用 SMB 加密,请在服务器上键入以下脚本:

    Set-SmbShare –Name <sharename> -EncryptData $true
    
  2. 若要为整个文件服务器启用 SMB 加密,请在服务器上键入以下脚本:

    Set-SmbServerConfiguration –EncryptData $true
    
  3. 若要创建新的 SMB 文件共享并启用 SMB 加密,请键入以下脚本:

    New-SmbShare –Name <sharename> -Path <pathname> –EncryptData $true
    

部署 SMB 加密的注意事项

默认情况下,为文件共享或服务器启用 SMB 加密时,只允许 SMB 3.0、3.02 和 3.1.1 客户端访问指定的文件共享。 这会加强管理员为访问共享的所有客户端数据提供保护的意识。 但是,在某些情况下,管理员可能想要允许对不支持 SMB 3.x 的客户端(例如,在使用混合客户端操作系统版本的过渡期间)进行未加密访问。 若要允许对不支持 SMB 3.x 的客户端进行未加密访问,请在 Windows PowerShell 中键入以下脚本:

Set-SmbServerConfiguration –RejectUnencryptedAccess $false

注意

  • 建议在部署加密后不允许未加密的访问。 改为更新客户端以支持加密。

下一节中所述的预身份验证完整性功能可防止拦截攻击将连接从 SMB 3.1.1 降级到 SMB 2.x(它将使用未加密的访问)。 但是,它不会阻止降级到 SMB 1.0,这也会导致未加密的访问。 为了保证 SMB 3.1.1 客户端始终使用 SMB 加密来访问已加密共享,必须禁用 SMB 1.0 服务器。 有关说明,请使用 Windows 管理中心连接到服务器,然后打开 "文件" " 文件共享" 选项卡,然后单击 "文件共享" 选项卡以提示卸载或参阅如何检测、启用和禁用 Windows 中的 SMBv1、SMBv2 和 SMBv3。 如果“–RejectUnencryptedAccess”设置保留为其默认设置“$true”,则仅允许支持加密的 SMB 3.x 客户端访问文件共享(SMB 1.0 客户端也会被拒绝) 。

注意

  • SMB 加密使用高级加密标准 (AES)-GCM 和 CCM 算法加密和解密数据。 无论 SMB 签名设置如何,AES-CMAC 和 AES-GMAC 还能为加密的文件共享提供数据完整性验证(签名)。 如果要在不加密的情况下启用 SMB 签名,则可继续执行此操作。 有关详细信息,请参阅满怀信心地配置 SMB 签名
  • 如果你的组织使用广域网 (WAN) 加速设备,则当你尝试访问文件共享或服务器时,可能会遇到问题。
  • 使用默认配置(其中没有允许对已加密文件共享进行未加密访问)时,如果不支持 SMB 3.x 的客户端尝试访问已加密文件共享,则事件 ID 1003 会记录到 Microsoft-Windows-SmbServer/Operational 事件日志中,并且客户端将收到一条“拒绝访问”的错误消息。
  • SMB 加密与 NTFS 文件系统中的加密文件系统 (EFS) 无关,并且 SMB 加密不需要或依赖于使用 EFS。
  • SMB 加密与 BitLocker 驱动器加密无关,并且SMB 加密不需要或依赖于使用 BitLocker 驱动器加密。

预身份验证完整性

SMB 3.1.1 能够检测到拦截攻击,这些攻击尝试通过使用预先身份验证完整性来使客户端和服务器协商的协议或功能降级。 预身份验证完整性是 SMB 3.1.1 中的一项强制性功能。 它通过利用加密哈希来防止对协商和会话设置消息的任何篡改。 生成的哈希值被用作输入以派生会话的加密密钥,包括其签名密钥。 这使得客户端和服务器能够相互信任连接和会话属性。当客户端或服务器检测到这种攻击时,会断开连接,并在 Microsoft-Windows-SmbServer/Operational 事件日志中记录事件 ID 1005。 因此,为了充分利用 SMB 加密的完整功能,我们强烈建议你禁用 SMB 1.0 服务器。 有关说明,请使用 Windows 管理中心连接到服务器,然后打开 "文件" " 文件共享" 选项卡,然后单击 "文件共享" 选项卡以提示卸载或参阅如何检测、启用和禁用 Windows 中的 SMBv1、SMBv2 和 SMBv3

新签名算法

SMB 3.0 和 3.02 使用较新的加密算法进行签名:基于高级加密标准 (AES) 密码的消息身份验证代码 (CMAC)。 SMB 2.0 使用较旧的 HMAC-SHA256 加密算法。 AES-CMAC 和 AES-CCM 可以显著地加快大多数支持 AES 指令的新式 CPU 上的数据加密。

Windows Server 2022 和 Windows 11 引入了用于 SMB 3.1.1 签名的 AES-128-GMAC。 Windows 连接到支持它的另一台计算机时,将自动协商这种性能更佳的密码方法。 Windows 仍支持 AES-128-CMAC。 有关详细信息,请参阅满怀信心地配置 SMB 签名

禁用 SMB 1.0

从 Windows Server 版本 1709 和 Windows 10 版本 1709 开始,默认不安装 SMB 1.0。 有关删除 SMB1 的说明,请使用 Windows 管理中心连接到服务器,然后打开 " 文件共享"选项卡,然后单击 "文件共享" 选项卡以提示卸载,或参阅如何在 Windows 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3 。 若要详细了解如何检测和禁止 SMB 1.0 的使用,请查看停止使用 SMB1。 对于以前或当前需要 SMB 1.0 的软件的交换所,请查看仍需要 SMB1

详细信息

下面是一些关于 SMB 和 Windows Server 2012 中相关技术的附加资源。