在Windows服务器中启⽤禁⽤SMBv1、SMBv2和SMBv3的⽅法
本⽂介绍如何在 SMB 客户端和服务器组件上启⽤/禁⽤服务器消息块 SMBv1、SMBv2 和 SMBv3。
注意:建议由专业技术⼯程师完成以下操作。
禁⽤ SMBv2 和 SMBv3 的影响
我们建议不要禁⽤ SMBv2 或 SMBv3。禁⽤ SMBv2 或 SMBv3 只能作为临时故障排除措施。请勿使 SMBv2 或 SMBv3 保持禁⽤状态。
禁⽤ SMBv2 的影响
在 Windows 7 和 Windows Server 2008 R2 中,禁⽤ SMBv2 会停⽤以下功能:
请求复合 - 允许发送多个 SMB 2 请求作为单个⽹络请求
⼤型读写 - 更好地利⽤更快速的⽹络
⽂件夹和⽂件属性缓存 - 客户端保留⽂件夹和⽂件的本地副本
持久句柄 - 如果临时断开连接,则允许连接以透明⽅式重新连接到服务器
改进的消息签名 - HMAC SHA-256 代替 MD5 作为哈希算法
改进的⽂件共享扩展性 - 每个服务器的⽤户数量、共享数量和打开⽂件数量⼤⼤增加
⽀持符号链接
客户端 oplock 租赁模式 - 限制在客户端和服务器之间传输的数据,从⽽提⾼⾼延迟⽹络性能并增强 SMB 服务器的扩展性
⼤型 MTU ⽀持 - 可充分利⽤ 10 千兆字节 (GB) 以太⽹
改进的能效 - 向服务器打开⽂件的客户端可以睡眠
禁⽤ SMBv3 的影响
在 Windows 8、Windows 8.1、Windows 10、Windows Server 2012 和 Windows Server 2016 中,禁⽤ SMBv3 会停⽤以下功能(以及以上列表中所述的 SMBv2 功能):
透明故障转移 - 在维护或故障转移期间,客户端会重新连接,不会⼲扰集节点
扩展 – 并发访问所有⽂件集节点上的共享数据
多通道 - 如果客户端和服务器之间有多个路径可⽤时,则聚合⽹络带宽和容错
SMB 直通 – 增加 RDMA ⽹络⽀持,实现极⾼的性能、低延迟和低 CPU 利⽤率
加密 – 提供端到端加密,并防⽌不可靠⽹络上的窃听
⽬录租赁 - 通过缓存改进分⽀机构中应⽤程序的响应时间
性能优化 - 对⼩型随机读/写 I/O 的优化
在 SMB 服务器上启⽤/禁⽤ SMB 协议
Windows 8 和 Windows Server 2012
Windows 8 和 Windows Server 2012 引⼊了新的 Set-SMBServerConfiguration Windows PowerShell cmdlet。通过此 cmdlet,你可以在服务器组件上启⽤或禁⽤ SMBv1、SMBv2 和 SMBv3 协议。注意:因为 SMBv2 和 SMBv3 共⽤⼀个堆叠,所以在 Windows 8 或 Windows Server 2012 中启⽤或禁⽤ SMBv2 时,也会启⽤或禁⽤ SMBv3。
使⽤ PowerShell cmdlet
运⾏ Set-SMBServerConfiguration cmdlet 后,⽆须重启计算机。
若要获取 SMB 服务器协议配置的当前状态,请运⾏以下 cmdlet:
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
若要在 SMB 服务器上禁⽤ SMBv1,请运⾏以下 cmdlet:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
若要在 SMB 服务器上禁⽤ SMBv2 和 SMBv3,请运⾏以下 cmdlet:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
若要在 SMB 服务器上启⽤ SMBv1,请运⾏以下 cmdlet:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
若要在 SMB 服务器上启⽤ SMBv2 和 SMBv3,请运⾏以下 cmdlet:
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 或注册表编辑器。
使⽤ Windows PowerShell 2.0 或更⾼版本的 PowerShell
若要在 SMB 服务器上禁⽤ SMBv1,请运⾏以下 cmdlet:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force
若要在 SMB 服务器上禁⽤ SMBv2 和 SMBv3,请运⾏以下 cmdlet:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force
若要在 SMB 服务器上启⽤ SMBv1,请运⾏以下 cmdlet:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -Force
若要在 SMB 服务器上启⽤ SMBv2 和 SMBv3,请运⾏以下 cmdlet:
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 注册表项: SMB1
REG_DWORD: 0 = 已禁⽤
REG_DWORD: 1 = 已启⽤
默认值: 1 = 已启⽤
若要在 SMB 服务器上启⽤或禁⽤ SMBv2,请配置以下注册表项:
注册表⼦项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 注册表项: SMB2
REG_DWORD: 0 = 已禁⽤
REG_DWORD: 1 = 已启⽤
默认值: 1 = 已启⽤
在 SMB 客户端上启⽤/禁⽤ SMB 协议
Windows Vista、Windows Server 2008、Windows 7、Windows Server 2008 R2、Windows 8 和 Windows Server 2012
注意:因为 SMBv2 和 SMBv3 共⽤⼀个堆叠,所以在 Windows 8 或 Windows Server 2012 中启⽤或禁⽤ SMBv2 时,也会启⽤或禁⽤ SMBv3。
若要在 SMB 客户端上禁⽤ SMBv1,请运⾏以下命令:
< config lanmanworkstation depend= bowser/mrxsmb20/nsi
< config mrxsmb10 start= disabled
若要在 SMB 客户端上启⽤ SMBv1,请运⾏以下命令:
< config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
< config mrxsmb10 start= auto
若要在 SMB 客户端上禁⽤ SMBv2 和 SMBv3,请运⾏以下命令:
< config lanmanworkstation depend= bowser/mrxsmb10/nsi
< config mrxsmb20 start= disabled
若要在 SMB 客户端上启⽤ SMBv2 和 SMBv3,请运⾏以下命令:
< config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
< config mrxsmb20 start= auto
注意:
必须在提升的命令提⽰符中运⾏这些命令。
进⾏这些更改后,必须重启计算机。windows server2016
使⽤组策略禁⽤ SMBv1 服务器
这将在注册表中配置以下新项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 注册表项: SMB1 REG_DWORD: 0 = Disabled
使⽤组策略配置流程
1、打开组策略管理控制台。右键单击应包含新⾸选项的组策略对象 (GPO),然后单击编辑。
2、在计算机配置下的控制台树中,展开⾸选项⽂件夹,然后展开 Windows 设置⽂件夹。
3、右键单击注册表节点,指向新建,然后选择注册表项。
4、在新建注册表属性对话框中,选择以下内容:
操作:创建
Hive: HKEY_LOCAL_MACHINE
注册表项路径: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
值名称: SMB1
值类型: REG_DWORD
值数据: 0
5、将此组策略应⽤到域中所有必需的⼯作站、服务器和域控制器,以禁⽤ SMBv1 服务器组件。也可以将 WMI 筛选器设置为不包含不受⽀持的操作系统或选中的排除项(如 Windows XP)。注意:在旧版 Windows XP 或 Linux 早期版本以及第三⽅系统(不⽀持 SMBv2 或 SMBv3)需要访问 SYSVOL 或其他⽂件共享(已启⽤ SMB v1)的域控制器上进⾏这些更改时要谨慎⼩⼼。使⽤组策略禁⽤ SMBv1 客户端
若要禁⽤ SMBv1 客户端,需要将服务注册表项更新为禁⽌ MRxSMB10 启动,然后还需要将 MRxSMB10 的依赖项从 LanmanWorkstation 项中删除,以便它可以正常启动(⽆需⾸先启动MRxSMB10)。
这将更新和替换注册表以下 2 个项中的默认值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10 注册表项: Start REG_DWORD: 4 = Disabled
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation 注册表项: DependOnService REG_MULTI_SZ: “Bowser”,”MRxSmb20″,”NSI”注意:默认包含的 MRxSMB10 现已作为依赖项删除。
使⽤组策略配置流程
1、打开组策略管理控制台。右键单击应包含新⾸选项的组策略对象 (GPO),然后单击编辑。
2、在计算机配置下的控制台树中,展开⾸选项⽂件夹,然后展开 Windows 设置⽂件夹。
3、右键单击注册表节点,指向新建,然后选择注册表项。
4、在新建注册表属性对话框中,选择以下内容:
操作:更新
Hive: HKEY_LOCAL_MACHINE
注册表项路径: SYSTEM\CurrentControlSet\services\mrxsmb10
值名称: Start
值类型: REG_DWORD
值数据: 4
然后删除刚刚禁⽤的 MRxSMB10 的依赖项
5、在新建注册表属性对话框中,选择以下内容:
操作:替换
Hive: HKEY_LOCAL_MACHINE
注册表项路径: SYSTEM\CurrentControlSet\Services\LanmanWorkstation
值名称: DependOnService
值类型 REG_MULTI_SZ
值数据:
Bowser
MRxSmb20
NSI
注意:这 3 个字符串不带项⽬符号(具体如下)
在 Windows 的多个版本中,默认值包括 MRxSMB10,通过将其替换为此多值字符串,实际上就删除了作为 LanmanServer 依赖项的 MRxSMB10,结果是从四个默认值减少为上述这三个值。
注意:使⽤组策略管理控制台时,⽆需使⽤引号或逗号。只需在各⾏键⼊每个项,如上⾯所⽰。
需要重新启动
应⽤策略且正确设置注册表后,必须重新启动⽬标系统,然后才能禁⽤ SMB v1。
摘要
如果所有设置均在同⼀组策略对象 (GPO) 中,组策略管理将显⽰以下设置。
测试和验证
配置完成后即允许策略进⾏复制和更新。作为测试的必要步骤,请从 CMD.EXE 提⽰符处运⾏ gpupdate/force,然后查看⽬标计算机,以确保注册表设置得以正确应⽤。确保 SMBv2 和 SMBv3 在环境中的所有其他系统中正常运⾏。
注意:请务必重新启动⽬标系统。
如何在 Windows 8.1、Windows 10、Windows 2012 R2 和 Windows Server 2016 中轻松删除 SMBv1
Windows Server:使⽤ “服务器管理器”
Windows Server:使⽤ PowerShell (Remove-WindowsFeature FS-SMB1)
Windows 客户端:使⽤ “添加或删除程序”
Windows 客户端:使⽤ PowerShell (Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol)
参考与适⽤性
本⽂来源⾃微软官⽅技术⽂档:。
如有变化,以微软官⽅为准。
这篇⽂章中的信息适⽤于:
Windows 10 Pro released in July 2015,
Windows 10 Enterprise released in July 2015
Windows Vista Enterprise
Windows Vista Business
Windows Vista Home Basic
Windows Vista Home Premium
Windows Vista Ultimate
Windows 7 Enterprise
Windows 7 Home Basic
Windows 7 Home Premium
Windows 7 Professional
Windows 7 Ultimate
Windows Server 2008 Datacenter
Windows Server 2008 Enterprise
Windows Server 2008 Standard
Windows Server 2008 R2 Datacenter
Windows Server 2008 R2 Enterprise
Windows Server 2008 R2 Standard
Windows 8
Windows 8 Enterprise
Windows 8 Pro
Windows Server 2012 Datacenter
Windows Server 2012 Datacente
Windows Server 2012 Essentials
Windows Server 2012 Foundation
Windows Server 2012 Foundation
Windows Server 2012 Standard
Windows Server 2012 Standard
Windows Server 2016

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。