什么是SMB1?为什么要禁用它?

SMB(服务器消息块)是一种网络层协议,主要用于 Windows 上共享文件、打印机以及网络连接计算机之间的通信 。该协议主要由 IBM/Microsoft 创建,其第一个实现是在 DOS/Windows NT 3.1 中 。此后,SMB 成为几乎所有 Windows 版本的一部分,即 XP、Vista、7、8、10、11 。SMB 协议甚至出现在 Windows 的服务器版本中 。尽管 SMB 协议是 Windows 原生协议,但也受 Linux(通过 SAMBA)和 macOS 支持 。
中小企业工作机制在最简单的形式中,SMB 客户端计算机使用 SMP 端口(端口 445)连接到 SMB 服务器,以便在 SMB 身份验证成功后访问基于 SMB 的共享 。一旦建立了 SMB 连接,就可以执行文件协作、打印机共享或任何其他基于网络的操作 。
SMB协议的历史SMB 协议是由 IBM 的一个小组在 1980 年代开发的 。为了满足多年来不断变化的网络需求,SMB 协议经历了多种变体的演变,称为版本或方言 。该协议仍然是 LAN 或工作场所中最常用的资源共享协议之一 。
SMB 协议方言或版本为了与不断变化的 IT 环境兼容,SMB 协议在其最初实施的 SMB 协议基础上经历了许多改进 。最值得注意的是:

  • SMB 1创建于 1984 年,用于在 DOS 上共享文件 。
  • CIFS(或通用 Internet 文件系统)于 1996 年由 Microsoft 作为 Windows 95 中的 Microsoft 版本的 SMB 引入 。
  • SMB 2于 2006 年作为 Windows Vista 和 Windows Server 2008 的一部分发布 。
  • SMB 2.1于 2010 年随 Windows Server 2008 R2 和 Windows 7 一起推出 。
  • SMB 3于 2012 年与 Windows 8 和 Windows Server 2012 一起发布 。
  • SMB 3.02于 2014 年与 Windows 8.1 和 Windows Server 2012 R2 一起首次亮相 。
  • SMB 3.1.1于 2015 年随 Windows 10 和 Windows Server 2016 一起推出 。
SMBv1【什么是SMB1?为什么要禁用它?】SMBv1 由 IBM 在 1980 年代开发,并在 1990 年代由 Microsoft 重新命名为 CIFS 并增加了功能 。虽然在当时 SMB 1 取得了巨大的成功,但它并不是为当今的互联世界开发的(就像那个时代开发的所有软件应用程序一样),毕竟从那时起已经过去了 30 多年的信息革命 。微软在 2013 年贬低了 SMBv1,默认情况下,它不再安装在 Windows 和 Windows 服务器版本上 。
由于其技术过时,SMBv1 非常不安全 。它有许多漏洞利用/漏洞,其中许多允许在目标机器上远程控制执行 。尽管网络安全专家曾就 SMB 1 漏洞发出警告,但臭名昭著的 WannaCry 勒索软件攻击清楚地表明了这一点,因为该攻击针对的是 SMBv1 中发现的漏洞 。
由于存在这些漏洞,建议禁用 SMB1 。有关 SMB1 漏洞的更多详细信息,请访问 Malwarebytes 博客页面 。用户可以使用 Metasploit 自行检查 SMB1 漏洞(尤其是 EternalBlue) 。
SMBv2 和 SMBv3SMBv2 和 SMBv3 为 SMB 协议提供以下增强功能(而 SMB 1 缺少这些功能):
  • 预认证完整性
  • 安全方言协商
  • 加密
  • 不安全的访客身份验证阻止
  • 更好的消息签名
一些用户可能会自然而然地想到一个问题,如果他们的系统有 SMBv2 或 3,它不会覆盖用户机器上 SMB 1 的漏洞吗?但答案是否定的,因为这些对 SMB 的增强功能以??不同的方式工作并使用不同的机制 。如果在具有 SMBv2 和 3 的计算机上启用了 SMBv1,则这可能会使 SMBv2 和 3 容易受到攻击,因为 SMB 1 无法控制中间人 (MiTM) 攻击 。攻击者只需要在他这边屏蔽 SMBv2 和 3,并且只使用 SMB 1 在目标机器上执行他的恶意代码 。
禁用 SMB 1 的影响除非有必要(对于运行 Windows XP 的机器或使用 SMB 1 的遗留应用程序),所有网络安全专家都建议在系统和组织级别禁用 SMBv1 。如果网络中不存在 SMBv1 应用程序或设备,则不会受到任何影响,但并非在所有情况下都是如此 。禁用 SMBv1 的每个场景可能不同,但 IT 管理员在禁用 SMB 1 时可能会考虑以下因素:
  • 主机和应用程序之间未加密或签名的通信
  • LM 和 NTLM 通信
  • 低(或高)级别客户端之间的文件共享通信
  • 不同操作系统之间的文件共享通信(如 Linux 或 Windows 之间的通信)
  • 遗留软件应用程序和基于 SMB 的固定通信应用程序(如 Sophos、NetApp、EMC VNX、SonicWalls、vCenter/vSphere、Juniper Pulse Secure SSO、Aruba 等) 。
  • 打印机和打印服务器
  • Android 与基于 Windows 的应用程序的通信
  • 基于 MDB 的数据库文件(这些文件可能会因 SMBv2 SMBv3 而损坏,而 SMBv1 对这些文件至关重要) 。
  • 使用 SMB 1 的备份或云应用程序
禁用 SMB 的方法 1可以使用多种方法来禁用 SMB1,用户可以使用最适合其场景的方法 。
默认禁用Windows 10 Fall Creators Update 及更高版本默认禁用 SMBv1 。Windows 11 默认禁用 SMB 1 。对于服务器版本,Windows Server 版本 1709 (RS3) 及更高版本默认禁用 SMB1 。要检查 SMB1 的当前状态:
  1. 单击Windows,搜索PowerShell,右键单击它,然后在子菜单中选择Run as Administrator 。
  2. 现在执行以下命令:获取 SmbServerConfiguration | 选择 EnableSMB1Protocol、EnableSMB2Protocol
请记住,Microsoft 已通过 Windows 更新自动删除 SMB 1,但如果用户重新启用,则该协议将来可能不会被禁用,从而使机器容易受到攻击 。
使用 Windows 10、8 或 7 的控制面板
  1. 单击Windows,搜索并打开控制面板 。
  2. 现在选择程序并打开打开或关闭 Windows 功能 。
  3. 然后取消选中SMB 1.0/CIFS 文件共享支持并单击应用 。
  4. 现在重新启动您的系统,SMB 1 将在您的系统上被禁用 。
使用 Windows 11 的可选功能菜单
  1. 右键单击Windows并打开设置 。
  2. 现在,在左窗格中,前往Apps,然后在右窗格中打开Optional Features 。
  3. 然后向下滚动并在“相关设置”下单击“更多 Windows 功能” 。
  4. 现在,在显示的菜单中,取消选中SMB 1.0/CIFS 文件共享支持并单击应用 。
  5. 然后重新启动您的 PC,重新启动后,SMBv1 将在 PC 上被禁用 。
使用 PowerShell以上两种方法可能满足最大用户的要求,但在服务器系统上,管理员可能必须使用 PowerShell(尽管,步骤在客户端机器上也可以正常工作) 。
  1. 单击Windows,搜索PowerShell,右键单击它,然后选择Run as Administrator 。
  2. 现在执行以下命令:Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force或者禁用-WindowsOptionalFeature -Online -FeatureName smb1protocol或者设置 SmbServerConfiguration-EnableSMB1Protocol $false或在服务器上删除 WindowsFeature -Name FS-SMB1或者设置 SmbServerConfiguration-EnableSMB1Protocol $false
  3. 然后重新启动系统,重新启动后,系统的 SMB 1 将被禁用 。
使用系统的注册表编辑器没有 PowerShell 的服务器机器(如 Windows Server 2003)上的管理员可以使用注册表编辑器禁用 SMB 1,尽管这些步骤在客户端机器上也能正常工作 。
警告:
请格外小心并自行承担风险,因为编辑系统的注册表是一项熟练的任务,如果操作不当,您可能会危及系统、数据或网络 。
  1. 单击Windows,搜索Regedit,右键单击它,然后在子菜单中选择Run as Administrator 。
  2. 现在导航到以下路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  3. 然后,在右窗格中,双击SMB1并将其值设置为0 。有些用户,例如 Windows 7,可能必须创建 SMB1 DWORD(32 位)值并将其值设置为 0 。
禁用 SMBv2 或 3由于 SMB 1 的威胁级别,一些用户可能会决定禁用 SMBv2 或 3,此时这是不必要的 。如果用户禁用 SMBv2 或 3,他可能会失去:
  • 本地缓存
  • 大型文件共享网络
  • 故障转移
  • 符号链接
  • 10GB 以太网
  • 带宽限制
  • 多通道容错
  • 过去 3 年中发现的安全和加密改进
用户绑定使用 SMB1以下情况可能会强制用户使用 SMB 1:
  • 使用 Windows XP 或 Windows Server 机器的用户
  • 用户需要使用需要系统管理员通过网上邻居浏览的老旧管理软件 。
  • 使用带有旧固件的旧打印机的用户可以“扫描共享” 。
只有在没有其他可能的情况下才使用 SMB1 。如果应用程序或设备需要 SMBv1,那么最好找到该应用程序或设备的替代品(目前看起来成本很高,但从长远来看是有益的,只需询问遭受 WannaCry 攻击的用户或组织) 。
所以,就是这样 。如果您有任何疑问或建议,请不要忘记在评论中联系我们 。