如何在 Windows 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3 您所在的位置:网站首页 win10怎么打开软件不提示更新 如何在 Windows 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3

如何在 Windows 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3

2024-07-09 08:35| 来源: 网络整理| 查看: 265

如何在 Windows 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3 项目 05/18/2023

适用于:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012、Windows 11、Windows 10、Windows 8.1、Windows 8

本文介绍如何在 SMB 客户端与服务器组件上启用和禁用服务器消息块 (SMB) 版本 1 (SMBv1)、SMB 版本 2 (SMBv2) 和 SMB 版本 3 (SMBv3)。

虽然禁用或删除 SMBv1 可能会导致旧计算机或软件出现一些兼容性问题,但 SMBv1 存在重大安全漏洞,我们强烈建议不要使用它。 默认情况下,SMB 1.0 未安装在任何版本的 Windows 11 或 Windows Server 2019 及更高版本中。 默认情况下,Windows 10 中也不会安装 SMB 1.0(家庭版和专业版)。 建议更新仍需要它的 SMB 服务器,而不是重新安装 SMB 1.0。 有关需要 SMB 1.0 的第三方及其移除该要求的更新信息,请查看 SMB1 产品信息交换所。

禁用 SMBv2 或 SMBv3 以进行故障排除

我们建议保持启用 SMBv2 和 SMBv3,但你可能发现,暂时禁用其中一个版本可以方便进行故障排除。 有关详细信息,请参阅如何在 SMB 服务器上检测 SMB 协议状态以及启用和禁用 SMB 协议。

在 Windows 10、Windows 8.1、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2 和 Windows Server 2012 中,禁用 SMBv3 会停用以下功能:

透明故障转移 – 在维护或故障转移期间,客户端在不中断群集节点的情况下重新进行连接 横向扩展 - 对所有文件群集节点上的共享数据进行并发访问 多通道 - 当客户端和服务器之间有多个可用路径时聚合网络带宽和容错 SMB 直通 - 添加 RDMA 网络支持以提高性能、降低延迟和降低 CPU 使用率 加密 - 提供端到端加密,并防止在不受信任的网络上窃听 目录租赁 - 通过缓存改善分支机构中的应用程序响应时间 性能优化 - 针对小型随机读/写 I/O 的优化

在 Windows 7 和 Windows Server 2008 R2 中,禁用 SMBv2 会停用以下功能:

请求复合 - 允许将多个 SMBv2 请求作为单个网络请求发送 更大规模的读取和写入 - 更好地利用更快的网络 文件夹和文件属性缓存 - 客户端保留文件夹和文件的本地副本 持久性句柄 - 允许在发生暂时性断开连接时以透明方式重新连接到服务器 改进的消息签名 - HMAC SHA-256 取代了 MD5 作为哈希算法 改进的文件共享可伸缩性 - 每个服务器的用户、共享和开放文件数量显著增加 支持符号链接 客户端 oplock 租赁模型 - 限制客户端和服务器之间传输的数据,改善高延迟网络的性能,并提高 SMB 服务器的可伸缩性 大 MTU 支持 - 充分利用 10 千兆以太网 (GbE) 提高能效 – 向服务器开放文件的客户端可以休眠

SMBv2 协议是在 Windows Vista 和 Windows Server 2008 中引入的,而 SMBv3 协议是在 Windows 8 和 Windows Server 2012 中引入的。 有关 SMBv2 和 SMBv3 功能的详细信息,请参阅以下文章:

服务器消息块概述 SMB 中的新增功能 如何通过 PowerShell 删除 SMBv1

下面是使用权限提升的 PowerShell 命令检测、禁用和启用 SMBv1 客户端和服务器的步骤。

注意

运行 PowerShell 命令禁用或启用 SMBv1 后,计算机将重启。

检测:

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

禁用:

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

启用:

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

提示

可以运行 Get-SmbServerConfiguration | Format-List EnableSMB1Protocol 来检测 SMBv1 状态,而无需提升权限。

Windows Server 2012 Windows Server 2012 R2、Windows Server 2016、Windows Server 2019:服务器管理器方法

若要从 Windows Server 中删除 SMBv1,请执行以下操作:

在要删除 SMBv1 的服务器的服务器管理器仪表板上,在“配置此本地服务器”下,选择“添加角色和功能”。 在“开始之前”页上选择“启动‘删除角色和功能’向导”,然后在随后出现的页上选择“下一步”。 在“选择目标服务器”页上的“服务器池”下,确保已选择要从中删除该功能的服务器,然后选择“下一步”。 在“删除服务器角色”页上,选择“下一步”。 在“删除功能”页上,清除“SMB 1.0/CIFS 文件共享支持”对应的复选框,然后选择“下一步”。 在“确认删除所选内容”页上,确认已列出该功能,然后选择“删除”。 Windows 8.1、Windows 10 和 Windows 11:添加或删除程序方法

若要为上述操作系统禁用 SMBv1,请执行以下操作:

在“控制面板”中,选择“程序和功能”。 在“控制面板主页”下,选择“打开或关闭 Windows 功能”打开“Windows 功能”框。 在“Windows 功能”框中,向下滚动列表,清除“SMB 1.0/CIFS 文件共享支持”对应的复选框,然后选择“确定”。 在 Windows 应用更改后,在确认页上选择“立即重启”。 如何检测 SMB 协议状态以及启用和禁用 SMB 协议

注意

在 Windows 8 或 Windows Server 2012 中启用或禁用 SMBv2 时,也会启用或禁用 SMBv3。 出现此行为是因为这些协议共享同一个堆栈。

Server 客户端

Windows 8 和 Windows Server 2012 引入了新的 Set-SMBServerConfiguration Windows PowerShell cmdlet。 使用该 cmdlet 可以在服务器组件上启用或禁用 SMBv1、SMBv2 和 SMBv3 协议。

运行 Set-SMBServerConfiguration cmdlet 后,无需重启计算机。

SMBv1

检测:

Get-SmbServerConfiguration | Select EnableSMB1Protocol

禁用:

Set-SmbServerConfiguration -EnableSMB1Protocol $false

启用:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

有关详细信息,请参阅 Microsoft 中的服务器存储。

SMB v2/v3

检测:

Get-SmbServerConfiguration | Select EnableSMB2Protocol

禁用:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

启用:

Set-SmbServerConfiguration -EnableSMB2Protocol $true 对于 Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008

若要在运行 Windows 7、Windows Server 2008 R2、Windows Vista 或 Windows Server 2008 的 SMB 服务器上启用或禁用 SMB 协议,请使用 Windows PowerShell 或注册表编辑器。

其他 PowerShell 方法

注意

此方法需要 PowerShell 2.0 或更高版本。

SMB 服务器上的 SMBv1

检测:

Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}

默认配置 = 已启用(未创建注册表命名值),因此不会返回任何 SMB1 值

禁用:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force

启用:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -Force

注意:进行这些更改后,必须重启计算机。 有关详细信息,请参阅 Microsoft 中的服务器存储。

SMB 服务器上的 SMBv2/v3

检测:

Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}

禁用:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force

启用:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 -Force

注意

进行这些更改后,必须重启计算机。

注册表编辑器

重要

请认真遵循本部分所述的步骤。 如果注册表修改不正确,可能会发生严重问题。 在修改注册表之前,请备份注册表,以便在出现问题时可以还原。

若要在 SMB 服务器上启用或禁用 SMBv1,请配置以下注册表项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Registry entry: SMB1 REG_DWORD: 0 = Disabled REG_DWORD: 1 = Enabled Default: 1 = Enabled (No registry key is created)

若要在 SMB 服务器上启用或禁用 SMBv2,请配置以下注册表项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Registry entry: SMB2 REG_DWORD: 0 = Disabled REG_DWORD: 1 = Enabled Default: 1 = Enabled (No registry key is created)

注意

 进行这些更改后,必须重启计算机。

下面介绍如何在运行 Windows 10、Windows Server 2019、Windows 8.1、Windows Server 2016、Windows Server 2012 R2 和 Windows Server 2012 的 SMB 客户端上检测 SMB 协议状态以及启用和禁用 SMB 协议。

SMB 客户端上的 SMBv1

Detect

sc.exe qc lanmanworkstation

禁用:

sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi sc.exe config mrxsmb10 start= disabled

启用:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi sc.exe config mrxsmb10 start= auto

有关详细信息,请参阅 Microsoft 中的服务器存储

SMB 客户端上的 SMB v2/v3

检测:

sc.exe qc lanmanworkstation

禁用:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi sc.exe config mrxsmb20 start= disabled

启用:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi sc.exe config mrxsmb20 start= auto

注意

必须在权限提升的命令提示符下运行这些命令。 进行这些更改后,必须重启计算机。 使用组策略禁用 SMBv1

本部分介绍如何使用组策略禁用 SMBv1。 可以在不同版本的 Windows 上使用此方法。

Server 客户端 SMBv1

此过程在注册表中配置以下新项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

注册表项:SMB1 REG_DWORD:0 = 禁用

若要使用组策略配置此配置,请执行以下步骤:

打开“组策略管理控制台”。 右键单击应该包含新首选项的组策略对象 (GPO),然后单击“编辑”。

在控制台树中的“计算机配置”下,展开“首选项”文件夹,然后展开“Windows 设置”文件夹。

右键单击“注册表”节点,指向“新建”,然后选择“注册表项”。

在“新建注册表属性”对话框中,选择以下各项:

操作:创建 配置单元:HKEY_LOCAL_MACHINE 项路径:SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 值名称:SMB1 值类型:REG_DWORD 值数据:0

此过程禁用 SMBv1 服务器组件。 必须将此组策略应用于域中所有必要的工作站、服务器和域控制器。

注意

 还可以将 WMI 筛选器设置为排除不受支持的操作系统或选定的排除项,例如 Windows XP。

重要

对于其中的旧 Windows XP 或较旧 Linux 和第三方系统(不支持 SMBv2 或 SMBv3)需要访问 SYSVOL 或其他禁用了 SMB v1 的文件共享的域控制器,请小心进行这些更改。

SMB v1

若要禁用 SMBv1 客户端,需要更新服务注册表项以禁用 MRxSMB10 的启动,然后需要从 LanmanWorkstation 对应的项中删除 MRxSMB10 的依赖项,使 LanmanWorkstation 可以正常启动,而无需先启动 MRxSMB10。

本指南将更新并替换注册表中以下两个项中的默认值:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10

注册表项:Start REG_DWORD:4 = 禁用

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation

注册表项:DependOnService REG_MULTI_SZ:"Bowser","MRxSmb20″,"NSI"

注意

 默认包含的 MRxSMB10,现已作为依赖项删除。

若要使用组策略配置此设置,请执行以下步骤:

打开“组策略管理控制台”。 右键单击应该包含新首选项的 GPO,然后单击“编辑”。

在控制台树中的“计算机配置”下,展开“首选项”文件夹,然后展开“Windows 设置”文件夹。

右键单击“注册表”节点,指向“新建”,然后选择“注册表项”。

在“新建注册表属性”对话框中,选择以下各项:

操作:更新 配置单元:HKEY_LOCAL_MACHINE 项路径:SYSTEM\CurrentControlSet\services\mrxsmb10 值名称:Start 值类型:REG_DWORD 值数据:4

然后删除已禁用的 MRxSMB10 的依赖项。

在“新建注册表属性”对话框中,选择以下各项:

操作:替换 配置单元:HKEY_LOCAL_MACHINE 项路径:SYSTEM\CurrentControlSet\Services\LanmanWorkstation 值名称:DependOnService 值类型:REG_MULTI_SZ 值数据: Bowser MRxSmb20 NSI

注意

这三个字符串不包含项目符号(参阅下面的屏幕截图)。

在许多版本的 Windows 中,默认值包含 MRxSMB10,因此将它们替换为此多值字符串实际上是删除了作为 LanmanWorkstation 依赖项的 MRxSMB10,并将四个默认值减少为上述这三个值。

注意

使用组策略管理控制台时,无需使用引号或逗号。 只需独行键入每个项即可。

重启目标系统以完成禁用 SMB v1。

审核 SMBv1 使用情况

若要确定哪些客户端正在尝试使用 SMBv1 连接到 SMB 服务器,可以在 Windows Server 2016、Windows 10 和 Windows Server 2019 上启用审核。 如果在 Windows 7 和 Windows Server 2008 R2 上安装了 2018 年 5 月每月更新,或者在 Windows 8.1 和 Windows Server 2012 R2 上安装了 2017 年 7 月每月更新,则也可以在这些操作系统上进行审核。

启用:

Set-SmbServerConfiguration -AuditSmb1Access $true

禁用:

Set-SmbServerConfiguration -AuditSmb1Access $false

检测:

Get-SmbServerConfiguration | Select AuditSmb1Access

启用 SMBv1 审核后,事件 3000 会出现在“Microsoft-Windows-SMBServer\Audit”事件日志中,其中标识了每个尝试使用 SMBv1 进行连接的客户端。

总结

如果所有设置都在同一个 GPO 中,则组策略管理会显示以下设置。

测试和验证

完成本文中的配置步骤后,允许策略进行复制和更新。 在测试期间,可以根据需要在命令提示符下运行 gpupdate /force,然后检查目标计算机以确保正确应用了注册表设置。 确保 SMBv2 和 SMBv3 可对环境中的所有其他系统正常运行。

注意

不要忘记重启目标系统。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有