如何在 Windows 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3 | 您所在的位置:网站首页 › win10怎么打开软件不提示更新 › 如何在 Windows 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3 |
如何在 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 客户端上的 SMBv1Detect 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 实验室设备网 版权所有 |