如何在Windows 10/Server 2015中禁用/启用SMB v1.0?
在Windows Server 2015/2019和Windows 10(从内部版本1709开始)中,默认情况下禁用用于访问共享文件夹的服务器消息块1.0(SMBv1)网络协议。在大多数情况下,访问旧系统(如不再支持Windows XP、Windows Server 2003和旧版操作系统)上的共享文件夹时,需要使用此协议。在本文中,我们将了解如何在Windows 10和Windows server 2015/2019上启用或者禁用SMBv1客户端和服务器支持。
如果网络上没有SMB 1.x客户端,则必须在所有Windows设备上完全禁用SMBv1. 通过禁用SMB 1.0,我们可以保护Windows计算机免受此旧协议中各种漏洞的攻击(SMBv1最著名的公开攻击是EternalBlue)。因此,在访问网络共享时,设备将使用新的、更高效、更安全和功能更强大的SMB协议版本。
在前面的一篇文章中,我们展示了客户端和服务器端SMB版本兼容性表。根据该表,旧客户端版本(XP、Server 2003和某些*nix客户端)只能使用SMB v1.0协议访问网络共享文件夹。如果网络中没有此类客户端,则可以完全禁用文件服务器(包括AD域控制器)和客户端桌面上的SMB 1.0。
在Windows 10和Windows Server 2015中,SMBv1协议分为两个独立的组件- SMB客户端和 SMB服务器,可独立启用/禁用。
通过SMB v1.0审核共享文件夹访问
在禁用或者完全删除SMB文件服务器端的SMB 1.0驱动程序之前,有必要确保网络中没有使用它的旧客户端。为此,请使用以下PowerShell命令启用对SMB v1.0上的文件服务器访问的审核:
Set-SmbServerConfiguration –AuditSmb1Access $true
几天后,打开服务器上的事件查看器,查看日志 应用程序和服务->Microsoft->Windows->SMBServer->Audit,查看是否有客户端通过SMB1访问了文件服务器。
提示我们可以使用以下PowerShell命令显示此事件日志中的事件列表:
Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit
在我们的示例中,在日志中找到了来自 SMBServer源的事件id为 3000的事件。客户端正在尝试使用SMB168.1协议进行访问。
SMB1 access Client Address: 192.168.1.10 Guidance: This event indicates that a client attempted to access the server using SMB1. To stop auditing SMB1 access, use the Windows PowerShell cmdlet Set-SmbServerConfiguration.
我们需要在网络上找到此计算机或者设备,并将操作系统或者固件更新到支持较新SMB协议版本的版本:SMBv2或者SMBv3.
在本例中,我们将忽略此信息,但我们应该记住,稍后此客户端将无法访问此SMB服务器上的共享文件夹。
启用/禁用Windows Server 2015/2019上的SMB 1.0
在从内部版本1709开始的Windows Server 2015和Windows Server 2019中,默认情况下禁用SMBv1. 要在更新版本的Windows Server中启用对SMBv1客户端协议的支持,我们需要安装单独的 SMB 1.0/CIFS文件共享支持功能。
我们可以使用服务器管理器或者通过PowerShell安装SMBv1功能。
我们可以使用PowerShell命令检查SMBv1是否已启用:
[Get-WindowsFeature](http://theitroad.local/install-remove-windows-server-roles-features-powershell/) | Where-Object {$_.name -eq "FS-SMB1"} | ft Name,Installstate
要安装 FS-SMB1功能,请运行:
Install-WindowsFeature FS-SMB1
要卸载SMBv1客户端功能(需要重新启动),请运行以下命令:
Uninstall-WindowsFeature –Name FS-SMB1 –Remove
还删除了另一个powersocol功能的smprotocol:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -Remove
为了使服务器能够处理SMBv1.0客户端访问,除了 FS-SMB1组件之外,还需要在SMB文件服务器级别启用SMBv1支持。要检查是否为服务器上的网络共享启用了SMBv1访问,请运行:
Get-SmbServerConfiguration
“线”
EnableSMB1Protocol: True
“表示允许我们使用SMBv1协议访问此服务器上的共享文件夹。要在Windows server中禁用SMBv1服务器支持,请运行PowerShell命令:
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force