Windows Server 2012 R2/Windows Server 2015中的SMB 1.0支持
自Windows Server 2012 R2起引入了新版本的SMB 3协议(从技术上讲,它是" SMB 3.02",因为SMB 3.0出现在Windows Server 2012中)。现在,我们可以禁用旧版" SMB 1.0"协议的驱动程序,并阻止其组件加载。如果禁用SMB 1.0协议,则过时的OS版本(Windows XP,Server 2003)和兼容的客户端(Mac OSX 10.8 Mountain Lion,Snow Leopard,Mavericks,更早的Linux版本)将无法访问文件服务器上的共享文件。运行Windows 2012 R2/2015.
Windows中的SMB版本
SMB(服务器消息块,有时也称为LAN-Manager)是用于远程访问文件,打印机和其他网络服务的网络协议。连接使用TCP端口445. 在以下Windows版本中出现了不同版本的SMB协议:
- CIFS Windows NT 4.0
- Windows 2000的SMB 1.0
- SMB 2.0 Windows Server 2008和Windows Vista SP1
- SMB 2.1 Windows Server 2008 R2和Windows 7
- SMB 3.0 Windows Server 2012和Windows 8(添加了SMB加密)
- SMB 3.02 Windows Server 2012 R2和Windows 8.1
- SMB 3..1.1 Windows Server 2015和Windows 10
在基于SMB协议的网络通信中,客户端和服务器使用客户端和服务器均支持的SMB协议的最高版本。
SMB版本兼容性摘要表如下所示。使用此表,我们可以确定在不同版本的Windows进行交互时选择的SMB协议的版本:
操作系统 | Windows 10,Server 2015 | Windows 8.1,Windows Server 2012 R2 | Windows 8,Windows Server 2012 | Windows 7,Windows Server 2008 R2 | Windows Vista , Server 2008 | Windows XP,Server 2003和更早版本 |
Windows 10和Windows Server 2015 | SMB 3.1.1 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 8.1和 Server 2012 R2 | SMB 3.02 | SMB 3.02 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 8和Windows Server 2012 | SMB 3.0 | SMB 3.0 | SMB 3.0 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows 7,Windows Server 2008 R2 | SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.1 | SMB 2.0 | SMB 1.0 |
Windows Vista和Windows Server 2008 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 2.0 | SMB 1.0 |
Windows XP,2003和更早版本 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 | SMB 1.0 |
例如,如果运行Windows 7的客户端计算机通过Windows Server 2012 R2连接到文件服务器,则将使用SMB 2.1协议。
提示。我们可以使用PowerShell命令检查客户端通过其连接到服务器的SMB协议的版本:指定的网络名称不再可用
Get-SmbConnection
在文件服务器端,我们可以显示客户端当前正在使用的SMB协议版本的列表。运行命令:
Get-SmbSession | Select-Object -ExpandProperty Dialect | Sort-Object -Unique
在此示例中,有898个客户端使用SMB 2.1(Windows 7/2008 R2)连接到服务器,8个客户端通过SMB 3.02(Windows 8.1/2012 R2)连接。
根据该表,Windows XP和Windows Server 2003只能使用SMB 1.0来访问文件夹和文件,可以在新版本的Windows Server(2012 R2/2015)中将其禁用。因此,如果基础架构使用运行Windows XP(不再受支持),Windows Server 2003/R2和运行Windows Server 2012 R2/2015的服务器,则我们应该了解,旧客户端将无法访问文件和文件中的文件夹服务器正在运行新的操作系统。如果将Windows Server 2015/2012 R2用作域控制器,则意味着Windows XP/Server 2003客户端将无法执行登录脚本(NETLOGON)并应用存储在域控制器上网络文件夹中的某些组策略(例如,在使用Central Store的ADMX模板时)。如果我们尝试在禁用SMBv1的情况下连接到文件服务器上的共享文件夹,则旧客户端将收到以下错误消息:
{分块}
停止使用SMBv1协议
如今,SMB 1.0协议已过时,并且具有大量的严重漏洞(请记住利用SMBv1协议中的漏洞的勒索软件攻击" WannaCry"和" NotPetya"的最新事件)。 Microsoft和其他IT强烈建议我们停止在网络中使用SMBv1.
如果网络中有运行Windows XP和Windows Server 2003/R2的客户端,则应尽快将其迁移到Microsoft OS的较新版本或者进行仔细隔离。
Windows Server 2012 R2中的SMB 1.0
如果打开Windows Server 2012 R2组件列表,则会看到名为" SMB 1.0/CIFS文件共享支持"的功能,该功能尚未安装。但是SMB 1.0驱动程序本身可以工作。如果安装此功能,则"计算机浏览器"服务将出现在系统中。这是一个SMB 1.0客户端,没有它,将无法从该服务器连接到仅支持smbv1协议的其他计算机。如果我们不需要为运行Windows XP或者Windows Server 2003的计算机支持较早的SMB版本1.0,则可以禁用此功能以减少系统负载并提高安全性,如下所示:
Remove-WindowsFeature FS-SMB1
然后在服务器端,我们需要使用以下命令完全禁用SMB 1.0:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
默认情况下,Windows Server 2012中同时加载了驱动程序SMB 1和SMB2. 要确认这一点,请打开系统服务Server
(LanmanServer)的属性,并在Dependencies
选项卡上可以看到Server SMB 1. xxx驱动程序和SMB 2.xxx驱动程序同时在服务器上运行。
如果在Windows 2012 R2上打开LanmanServer服务的属性,则可以看到从依赖关系中排除了支持SMB 1.0的驱动程序。
但是,这并不意味着SMB 1.0驱动程序无法正常工作。要检查是否在服务器端启用了SMB 1.0,可以使用以下命令:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
如我们所见,尽管没有SMB 1.0/CIFS文件共享支持功能和LanmanServer服务的驱动程序依赖性,但Windows Server 2012 R2中的SMB1协议已启用。
要将XP/2003(和其他旧版)客户端通过SMB恢复到Windows Server 2012 R2上的文件服务器/域控制器的访问权限,我们可以启用SMB 1支持,如下所示。首先,在服务器设置中启用协议:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
然后,通过注册表在Windows Server 2012 R2中启用SMB 1.0的依赖关系。转到" HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer",并将" DependOnService"参数的值从" SamSS Srv2"更改为"" SamSS Srv""。
之后,我们必须重新引导系统,并确保SMB 1.0驱动程序再次正常工作。
这些操作应在客户端的旧版本连接到的所有文件服务器和域控制器上执行。
Windows Server 2015中的SMB 1.0
在Windows Server 2015中,客户端上对SMB 1.0的支持也作为单独的功能启用,可以在"添加/删除功能向导"中找到。此组件也称为" SMB 1.0/CIFS文件共享支持"。
我们可以禁用SMB v1,并使用以下命令完全删除该组件:
Remove-WindowsFeature FS-SMB1 sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi sc.exe config mrxsmb10 start= disabled
注意完整手册以在Windows 10/Server 2015上禁用SMB 1.0
从Windows Server 2015 1709(和Windows 10 Fall Creators)开始,默认情况下禁用SMBv1组件(客户端和服务器)(也禁用通过SMBv2的来宾访问)。要使用该协议的过时版本访问旧系统,必须单独安装该协议。我们需要安装SMB 1.0/CIFS文件共享支持功能,并使用以下命令启用SMB 1.0:
Add-WindowsFeature FS-SMB1 Set-SmbServerConfiguration -EnableSMB1Protocol $true