Server端
通过 PowerShell 关闭 SMBv1
需要重启生效
检查:
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
关闭:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
开启:
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
windows server 2012以上版本
Windows 8 和 Windows Server 2012 引入了新的Set-SMBServerConfiguration命令。该命令使您能够在线启用或禁用 SMBv1、SMBv2 和 SMBv3 协议。
smb1
检查:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
关闭:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
开启:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
smb2&3
检查:
Get-SmbServerConfiguration | Select EnableSMB2Protocol
关闭:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
开启:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Windows Server 2008
需要重启生效
smb1
检查:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
默认配置 = 已启用(No registry named value is created),因此不会返回任何 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
smb2&3
检查:
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 server 2012以上版本
smb1
检查:
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
smb2&3
检查:
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
组策略
组策略刷新:
gpupdate /force
重启电脑生效
Server端
在注册表中配置以下新项目:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Registry entry: SMB1
REG_DWORD: 0 = Disabled
要使用组策略对此进行配置,请按照下列步骤操作:
打开组策略管理控制台。右键单击应包含新首选项的组策略对象 (GPO),然后单击编辑。
在Computer Configuration下的控制台树中,展开Preferences文件夹,然后展开Windows Settings文件夹。
右键单击Registry节点,指向New,然后选择Registry Item。
在“新建注册表属性”对话框中,选择以下内容:
Action: Create
Hive: HKEY_LOCAL_MACHINE
Key Path: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Value name: SMB1
Value type: REG_DWORD
Value data: 0
客户端
要禁用SMBv1客户端,需要更新services注册表项,禁用MRxSMB10的启动,然后需要在LanmanWorkstation的入口中去掉对MRxSMB10的依赖,这样就可以正常启动,不需要先启动MRxSMB10 。
本指南更新并替换了注册表中以下两项中的默认值:
KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10
Registry entry: Start REG_DWORD: 4= Disabled
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation
Registry entry: DependOnService REG_MULTI_SZ: "Bowser","MRxSmb20″,"NSI"
要使用组策略进行配置,请执行以下步骤:
打开组策略管理控制台。右键单击应包含新首选项的 GPO,然后单击“编辑”。
在Computer Configuration下的控制台树中,展开Preferences文件夹,然后展开Windows Settings文件夹。
右键单击Registry节点,指向New,然后选择Registry Item。
在“新建注册表属性”对话框中,选择以下内容:
Action: Update
Hive: HKEY_LOCAL_MACHINE
Key Path: SYSTEM\CurrentControlSet\services\mrxsmb10
Value name: Start
Value type: REG_DWORD
Value data: 4
然后删除对禁用的MRxSMB10的依赖。
在“新建注册表属性”对话框中,选择以下内容:
Action: Replace
Hive: HKEY_LOCAL_MACHINE
Key Path: SYSTEM\CurrentControlSet\Services\LanmanWorkstation
Value name: DependOnService
Value type: REG_MULTI_SZ
Value data:
Bowser
MRxSmb20
NSI
审计
要确定哪些客户端正在尝试使用 SMBv1 连接到 SMB 服务器,您可以在 Windows Server 2016、Windows 10 和 Windows Server 2019 上启用审核。如果 2018 年 5 月的每月更新,您还可以在 Windows 7 和 Windows Server 2008 R2 上进行审核如果安装了 2017 年 7 月月度更新,则在 Windows 8.1 和 Windows Server 2012 R2 上安装。
检查:
Get-SmbServerConfiguration | Select AuditSmb1Access
开启:
Set-SmbServerConfiguration -AuditSmb1Access $true
关闭:
Set-SmbServerConfiguration -AuditSmb1Access $false