禁用SMBv2和SMBv3的影响
我们建议不要禁用SMBv2或SMBv3。禁用SMBv2或SMBv3只能作为临时故障排除措施。请勿使SMBv2或SMBv3保持禁用状态。
禁用SMBv2的影响
在Windows7和WindowsServer2008R2中,禁用SMBv2会停用以下功能:
请求复合-允许发送多个SMB2请求作为单个网络请求
大型读写-更好地利用更快速的网络
文件夹和文件属性缓存-客户端保留文件夹和文件的本地副本
持久句柄-如果临时断开连接,则允许连接以透明方式重新连接到服务器
改进的消息签名-HMACSHA-256代替MD5作为哈希算法
改进的文件共享扩展性-每个服务器的用户数量、共享数量和打开文件数量大大增加
支持符号链接
客户端oplock租赁模式-限制在客户端和服务器之间传输的数据,从而提高高延迟网络性能并增强SMB服务器的扩展性
大型MTU支持-可充分利用10千兆字节(GB)以太网
改进的能效-向服务器打开文件的客户端可以睡眠
禁用SMBv3的影响
在Windows8、Windows8.1、Windows10、WindowsServer2012和WindowsServer2016中,禁用SMBv3会停用以下功能(以及以上列表中所述的SMBv2功能):
透明故障转移-在维护或故障转移期间,客户端会重新连接,不会干扰群集节点
扩展–并发访问所有文件群集节点上的共享数据
多通道-如果客户端和服务器之间有多个路径可用时,则聚合网络带宽和容错
SMB直通–增加RDMA网络支持,实现极高的性能、低延迟和低CPU利用率
加密–提供端到端加密,并防止不可靠网络上的窃听
目录租赁-通过缓存改进分支机构中应用程序的响应时间
性能优化-对小型随机读/写I/O的优化
在SMB服务器上启用/禁用SMB协议
Windows8和WindowsServer2012
Windows8和WindowsServer2012引入了新的Set-SMBServerConfigurationWindowsPowerShellcmdlet。通过此cmdlet,你可以在服务器组件上启用或禁用SMBv1、SMBv2和SMBv3协议。
注意:因为SMBv2和SMBv3共用一个堆叠,所以在Windows8或WindowsServer2012中启用或禁用SMBv2时,也会启用或禁用SMBv3。
使用PowerShellcmdlet
运行Set-SMBServerConfigurationcmdlet后,无须重启计算机。
若要获取SMB服务器协议配置的当前状态,请运行以下cmdlet:
Get-SmbServerConfiguration|SelectEnableSMB1Protocol,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
Windows7、WindowsServer2008R2、WindowsVista和WindowsServer2008
若要在运行Windows7、WindowsServer2008R2、WindowsVista或WindowsServer2008的SMB服务器上启用或禁用SMB协议,请使用WindowsPowerShell或注册表编辑器。
使用WindowsPowerShell2.0或更高版本的PowerShell
若要在SMB服务器上禁用SMBv1,请运行以下cmdlet:
Set-ItemProperty-Path"HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"SMB1-TypeDWORD-Value0-Force
若要在SMB服务器上禁用SMBv2和SMBv3,请运行以下cmdlet:
Set-ItemProperty-Path"HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"SMB2-TypeDWORD-Value0-Force
若要在SMB服务器上启用SMBv1,请运行以下cmdlet:
Set-ItemProperty-Path"HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"SMB1-TypeDWORD-Value1-Force
若要在SMB服务器上启用SMBv2和SMBv3,请运行以下cmdlet:
Set-ItemProperty-Path"HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"SMB2-TypeDWORD-Value1-Force
注意:进行这些更改后,必须重启计算机。
使用注册表编辑器
注意:以下内容包含有关如何修改注册表的信息。修改注册表之前,一定要先对其进行备份。并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息,请查看如何在Windows中备份和还原注册表。
若要在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协议
WindowsVista、WindowsServer2008、Windows7、WindowsServer2008R2、Windows8和WindowsServer2012
注意:因为SMBv2和SMBv3共用一个堆叠,所以在Windows8或WindowsServer2012中启用或禁用SMBv2时,也会启用或禁用SMBv3。
若要在SMB客户端上禁用SMBv1,请运行以下命令:
sc.execonfiglanmanworkstationdepend=bowser/mrxsmb20/nsi
sc.execonfigmrxsmb10start=disabled
若要在SMB客户端上启用SMBv1,请运行以下命令:
sc.execonfiglanmanworkstationdepend=bowser/mrxsmb10/mrxsmb20/nsi
sc.execonfigmrxsmb10start=auto
若要在SMB客户端上禁用SMBv2和SMBv3,请运行以下命令:
sc.execonfiglanmanworkstationdepend=bowser/mrxsmb10/nsi
sc.execonfigmrxsmb20start=disabled
若要在SMB客户端上启用SMBv2和SMBv3,请运行以下命令:
sc.execonfiglanmanworkstationdepend=bowser/mrxsmb10/mrxsmb20/nsi
sc.execonfigmrxsmb20start=auto
注意:
必须在提升的命令提示符中运行这些命令。
进行这些更改后,必须重启计算机。
使用组策略禁用SMBv1服务器
这将在注册表中配置以下新项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters注册表项:SMB1REG_DWORD:0=Disabled
使用组策略配置流程
1、打开组策略管理控制台。右键单击应包含新首选项的组策略对象(GPO),然后单击编辑。
2、在计算机配置下的控制台树中,展开首选项文件夹,然后展开Windows设置文件夹。
3、右键单击注册表节点,指向新建,然后选择注册表项。
sg1
4、在新建注册表属性对话框中,选择以下内容:
操作:创建
Hive:HKEY_LOCAL_MACHINE
注册表项路径:SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
值名称:SMB1
值类型:REG_DWORD
值数据:0
sg2
5、将此组策略应用到域中所有必需的工作站、服务器和域控制器,以禁用SMBv1服务器组件。也可以将WMI筛选器设置为不包含不受支持的操作系统或选中的排除项(如WindowsXP)。
注意:在旧版WindowsXP或Linux早期版本以及第三方系统(不支持SMBv2或SMBv3)需要访问SYSVOL或其他文件共享(已启用SMBv1)的域控制器上进行这些更改时要谨慎小心。
使用组策略禁用SMBv1客户端
若要禁用SMBv1客户端,需要将服务注册表项更新为禁止MRxSMB10启动,然后还需要将MRxSMB10的依赖项从LanmanWorkstation项中删除,以便它可以正常启动(无需首先启动MRxSMB10)。
这将更新和替换注册表以下2个项中的默认值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10注册表项:StartREG_DWORD:4=Disabled
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation注册表项:DependOnServiceREG_MULTI_SZ:“Bowser”,”MRxSmb20″,”NSI”
注意:默认包含的MRxSMB10现已作为依赖项删除。
使用组策略配置流程
1、打开组策略管理控制台。右键单击应包含新首选项的组策略对象(GPO),然后单击编辑。
2、在计算机配置下的控制台树中,展开首选项文件夹,然后展开Windows设置文件夹。
3、右键单击注册表节点,指向新建,然后选择注册表项。
sg3
4、在新建注册表属性对话框中,选择以下内容:
操作:更新
Hive:HKEY_LOCAL_MACHINE
注册表项路径:SYSTEM\CurrentControlSet\services\mrxsmb10
值名称:Start
值类型:REG_DWORD
值数据:4
sg4
然后删除刚刚禁用的MRxSMB10的依赖项
5、在新建注册表属性对话框中,选择以下内容:
操作:替换
Hive:HKEY_LOCAL_MACHINE
注册表项路径:SYSTEM\CurrentControlSet\Services\LanmanWorkstation
值名称:DependOnService
值类型REG_MULTI_SZ
值数据:
Bowser
MRxSmb20
NSI
注意:这3个字符串不带项目符号(具体如下)
sg5
在Windows的多个版本中,默认值包括MRxSMB10,通过将其替换为此多值字符串,实际上就删除了作为LanmanServer依赖项的MRxSMB10,结果是从四个默认值减少为上述这三个值。
注意:使用组策略管理控制台时,无需使用引号或逗号。只需在各行键入每个项,如上面所示。
需要重新启动
应用策略且正确设置注册表后,必须重新启动目标系统,然后才能禁用SMBv1。
摘要
如果所有设置均在同一组策略对象(GPO)中,组策略管理将显示以下设置。
|