如何在 Windows Server 上禁用 SMBv1 而无需重新启动
SMBv1 发布于 40 年前,即 1984 年,您现在可能会认为大多数(如果不是几乎所有)系统和服务将不再依赖一项古老的技术,但是,如果您这样认为,那您就错了。尽管您的 Windows 基础设施可能是最新的,但其他服务、应用程序和系统可能并不总是像您想象的那么先进。
在本教程中,我将向您展示如何在服务器上启用 SMBv1 审核,然后,一旦您满意,如何使用 PowerShell 快速禁用 SMBv1,而无需重新启动服务器。
启用 SMBv1 审核以检测它是否仍在使用
在执行任何操作之前,重要的是要评估禁用 SMBv1 是否会对您的环境产生影响以及影响可能是什么。
值得庆幸的是,SMB 服务器配置有一个内置属性,我们可以在其中打开审核,以便在 Windows 事件日志中捕获 SMBv1 事件。要打开 SMB 审核,请使用以下命令:
Set-SmbServerConfiguration -AuditSmb1Access $true您可以使用 Get-SmbServerConfiguration cmdlet 验证是否已启用 SMBv1 审核。
Get-SmbServerConfiguration | Select AuditSmb1Access
如果您已成功启用 SMBv1 审核,您的输出将如下所示并显示 True。
在 Windows 事件日志中查找 SMBv1 审核日志
SMBv1 的审核日志将帮助您确定访问相关服务器上的服务的任何客户端是否仍在使用该协议。
要查找审核事件,请首先打开窗口中的事件查看器。然后转到:应用程序和服务日志 > Microsoft > Windows > SMBServer > 审核
从那里您将能够看到 ID 为 3000 的审核事件。这些事件的常规选项卡将通知您正在启动与此协议的连接的客户端地址。
或者,您可以使用 PowerShell 查看这些事件:
Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit如果一段时间后没有发现任何事件,您可能可以安全地继续。
使用 PowerShell 禁用 SMBv1
在 Windows Server 上禁用 SMBv1 相当简单,无需重新启动。但是,如果运行 Windows Server 2019 或更高版本,默认情况下不会安装 SMBv1,因此仅当运行 Windows Server 2016 或更早版本时才需要安装。
运行以下命令以禁用 SMBv1 提升的 PowerShell 会话:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
您可以通过检查配置来验证命令是否已成功运行:
Get-SmbServerConfiguration | Select EnableSMB1Protocol如果成功,您的输出应显示值 False。
使用 PowerShell 重新启用 SMBv1
禁用 SMBv1 后,如果出现任何问题,可以通过运行带有值 $True 的 Set-SmbServerConfiguration cmdlet 来快速启用它。
Set-SmbServerConfiguration -EnableSMB1Protocol $true使用 Get-SmbServerConfiguration cmdlet 验证它是否已启用并检查问题是否已解决。
卸载 SMBv1
卸载 SMBv1 协议需要重新启动,一旦您运行该命令,服务器将在执行后立即重新启动。
以下命令可从系统中删除 SMBv1。
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol如果您需要重新启用服务器,您也可以运行以下命令:(这也会立即重新启动您的服务器)。
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

