【网络协议】网络文件共享协议SMB(Server Message Block)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: SMB协议允许在局域网(LAN)或广域网(WAN)上共享文件、打印机和其他资源。

@[TOC]

SMB协议名词解释

SMB(Server Message Block)是一种用于文件共享、打印服务以及其他资源访问的网络协议。

它最初由IBM贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统。后来被微软采用和推广。

SMB协议允许在局域网(LAN)或广域网(WAN)上共享文件、打印机和其他资源。

SMB的起源与发展

SMB协议最初由IBM开发,并在1980年代中期作为Microsoft的LAN Manager产品的一部分被引入。随着时间的推移,SMB经历了多个版本的发展和改进。

早期的版本包括SMBv1(也称为CIFS,Common Internet File System),SMBv2,SMBv3等。现在最新的主要版本是SMBv3.1.1。

虽然现在SMB也已经发展了多个高级版本,但是SMBv1仍然还在被大量使用。特别时Windows 7、Windows 8、Windows 2008、Windows 2012等比较主流的旧版本操作系统。

SMB主要实现的功能

文件共享
SMB允许网络上的客户端访问和修改远程服务器上的文件和目录。目前100%的企业都会将文件共享,并且默认选用SMB协议实现。很多企业也在尝试使用FTP、SFTP、HTTPS等方式来取代,但是仍然还无法撼动SMB在文件共享中的地位。
打印服务
除了文件共享外,SMB还支持网络打印机的共享和管理。这是SMB诞生的基本作用之一。但是鉴于互联网微信、WPS等软件的普及和用于文件传输,更多的文件打印机已经改为基于IPP等协议来传输打印数据。
高兼容性
SMB设计为跨平台的协议,支持多种操作系统,包括Windows、Linux、macOS和其他Unix-like系统。不过非Windows系统,需要开源的SMB软件支持,比如samba。
安全
SMBv2及以后的版本引入了更强大的安全特性,如签名和加密,以提高数据传输的安全性。包括最新的SMB over quic,也改变使用传统的445端口来通信,而采用更安全的443来进行通信。
性能优化
随着版本的升级,SMB协议不断优化,提高了文件传输的效率和可靠性,例如通过引入多通道、大文件支持和压缩等功能。举个简单的例子,从支持Windows SMB共享的服务器下载大容量的文件,最高速率可以达到80MB/s,通过修改SMB相关limit参数,还可以再提高传输速率。

SMB各个版本及特性

SMB(Server Message Block)有多个历史版本,每个版本都引入了不同的特性和改进。


SMBv1
这是最早的SMB版本,具有基本的文件和打印服务功能,它包含了基本的文件访问、目录浏览和打印功能。
但安全性较低且性能有限。目前SMBv1存在非常严重的漏洞和弱点,安全性很低,强烈建议关闭SMBv1协议的使用。具体方法可以参考:网络安全管理-检查和关闭勒索病毒传播的通讯协议

Disable SMBv1 according to the vendor instructions in Microsoft KB2696547. Additionally, block SMB directly by blocking TCP port 445 on all network boundary devices. For SMB over the NetBIOS API, block TCP ports 137 / 139 and UDP ports 137 / 138 on all network boundary devices.

根据微软官网公布的资讯,SMBv1 在 Windows 10 和 Windows Server 2019 及更高版本中不再默认安装,并且支持自动删除和手动删除等:

  • SMBv1 现在具有可单独卸载的客户端和服务器子功能。
  • 全新安装后,Windows 10 企业版、Windows 10 教育版和Windows 10 工作站专业版默认不再包含 SMBv1 客户端或服务器。
  • 全新安装后,Windows Server 2019及更高版本默认不再包含 SMBv1 客户端或服务器。
  • 全新安装后,Windows 10 家庭版和 Windows 10 专业版默认不再包含SMBv1 服务器。
  • 全新安装后,Windows 11 默认不包含 SMBv1 服务器或客户端。
  • 全新安装后,Windows 10家庭版和 Windows 10 专业版默认仍包含 SMBv1 服务器。 如果 SMBv1 客户端总共 15天未使用(不包括计算机关闭的时间),它会自动卸载自身。
  • Windows 10 家庭版和 Windows 10专业版的就地升级和预览体验成员外部测试版最初不会自动删除 SMBv1。 Windows 评估 SMBv1客户端和服务器的使用情况,如果其中任何一个总共 15 天未使用(不包括计算机关闭的时间),Windows 将自动卸载它。
  • Windows10 企业版、Windows 10 教育版和 Windows 10 工作站专业版的就地升级和预览体验成员外部测试版不会自动删除SMBv1。 管理员必须决定在这些托管环境中卸载 SMBv1。
  • 15 天后自动删除 SMBv1 是一次性操作。 如果管理员重新安SMBv1,则不会进一步尝试卸载它。
  • SMB 版本 2.02、2.1、3.0、3.02 和 3.1.1 功能仍完全受支持,并默认包含在SMBv2 二进制文件中。
  • 由于计算机浏览器服务依赖于 SMBv1,因此,如果卸载 SMBv1 客户端或服务器,则会卸载该服务。这意味着资源管理器网络无法再通过旧版 NetBIOS 数据报浏览方法显示 Windows 计算机。
  • SMBv1 仍然可以在所有版本的Windows 10 和 Windows Server 2016 中重新安装。

SMBv2
在Windows Vista和Windows Server 2008中引入,增加了许多新特性,如:大文件支持、多信用量、增强错误处理和性能改进。
具体表现在:

  • 它改进了文件传输的效率,支持更快的数据传输和更可靠的连接。
  • 支持更快的数据传输和更少的网络延迟。
  • 对比SMB1,SMB2具有更强的安全性,包括更好的加密和认证机制。

SMBv3
SMB3是SMB协议的最新版本,它在SMB2的基础上进一步提升了性能和安全性,并引入了一些新特性。

具体是在Windows 8和Windows Server 2012中引入,增加了:AES-128加密、连续可用性快照、多通道和 Scale-Out 文件服务器支持。

在Windows 10和Windows Server 2016中引入了SMBv3.1.1版本,增加了对AES-128-GCM和AES-256-GCM加密的支持,以及对预读取和写入缓存的改进。


SMB协议与其他系统的兼容性

在Windows系统中,SMB是默认的文件共享协议,SMB的各个版本可以同时共存。

但在非Windows系统中,如Linux和macOS,因为默认没有SMB协议,需要通过诸如Samba这样的开源软件实现SMB协议的兼容。比较典型的是Ubuntu通过samba协议实现的文件共享,与Windows文件共享相似性非常高。

SMB的重大安全漏洞

由于SMBv1存在已知的非常严重的安全问题,微软官方和安全服务商都强烈建议禁用SMBv1并使用更高版本(如SMBv2或SMBv3)以提高共享网络的安全性。此外,现代SMB版本提供了加密选项,可以进一步保护数据在传输过程中的安全。

Windows 如何禁用SMBv1

1,Server端用powershell禁用

Server可以通过power shell禁用SMBv1

Set-SmbServerConfiguration -EnableSMB1Protocol $false

如果需要启用,则执行:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

2,客户端禁用方法

客户端禁用SMBv1可以通过cmd指令实现:

sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled

如果需要启用,在客户端用Windows cmd指令启用:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto

安全的SMB over QUIC

SMB over QUIC 的设计主要为远程办公、移动设备用户和高安全性组织提供“SMB VPN”。 服务器证书通过在Internet 的 UDP 端口 443 而不是传统的 TCP 端口 445 创建 TLS 1.3 加密的隧道。 这样,加密隧道内所有 SMB 流量(包括隧道内的身份验证和授权)都不会在底层网络暴露。

在运行 Windows Server 2022 数据中心:Azure 版及以后的版本,均会支持SMB over QUIC。但是客户端需要至少是Windows 11的操作系统。

默认情况下,文件服务器管理员必须主动选择启用 SMB over QUIC。并且客户端无法通过建立连接的方式强制文件服务器启用 SMB over QUIC。

而且默认情况下,Windows 客户端不会default通过SMB over QUIC的方式来请求文件服务器,只有通过如下指令指定:
CMD指令:

 NET USE /TRANSPORT:QUIC

Power Shell指令:

 New-SmbMapping -TransportType QUIC

总的来说,SMB协议是一个关键的网络基础设施组件,它使得不同设备和操作系统之间的文件和打印资源共享变得简单和高效。随着技术的发展,SMB协议也在持续演进,以满足更高的性能、安全性和互操作性需求。

目录
相关文章
|
2天前
|
算法 自动驾驶 物联网
解读蜂窝网络中的频谱共享技术
解读蜂窝网络中的频谱共享技术
16 5
|
2天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
17 3
|
8天前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
37 8
|
6天前
|
网络协议
UDP协议在网络通信中的独特应用与优势
UDP(用户数据报协议)作为关键的传输层协议,在网络通信中展现出独特优势。本文探讨UDP的无连接性及低开销特性,使其在实时性要求高的场景如视频流、在线游戏中表现优异;其不保证可靠交付的特性赋予应用程序自定义传输策略的灵活性;面向报文的高效处理能力及短小的包头设计进一步提升了数据传输效率。总之,UDP适用于高速、实时性强且对可靠性要求不高的应用场景,为网络通信提供了多样化的选择。
|
8天前
|
网络协议 网络架构 数据格式
TCP/IP基础:工作原理、协议栈与网络层
TCP/IP(传输控制协议/互联网协议)是互联网通信的基础协议,支持数据传输和网络连接。本文详细阐述了其工作原理、协议栈构成及网络层功能。TCP/IP采用客户端/服务器模型,通过四个层次——应用层、传输层、网络层和数据链路层,确保数据可靠传输。网络层负责IP寻址、路由选择、分片重组及数据包传输,是TCP/IP的核心部分。理解TCP/IP有助于深入掌握互联网底层机制。
35 2
|
17天前
|
缓存 网络协议 网络性能优化
C语言 网络编程(二)TCP 协议
TCP(传输控制协议)是一种面向连接、可靠的传输层协议,通过校验和、序列号、确认应答等机制确保数据完整性和可靠性。通信双方需先建立连接,再进行通信,采用三次握手建立连接,四次挥手断开连接。TCP支持任意字节长度的数据传输,具备超时重传、流量控制及拥塞控制机制。三次握手用于同步序列号和确认双方通信能力,四次挥手则确保双方均能完成连接关闭操作,保证数据传输的可靠性。
|
17天前
|
网络协议 视频直播 C语言
C语言 网络编程(三)UDP 协议
UDP(用户数据报协议)是一种无需建立连接的通信协议,适用于高效率的数据传输,但不保证数据的可靠性。其特点是无连接、尽力交付且面向报文,具备较高的实时性。UDP广泛应用于视频会议、实时多媒体通信、直播及DNS查询等场景,并被许多即时通讯软件和服务(如MSN/QQ/Skype、流媒体、VoIP等)采用进行实时数据传输。UDP报文由首部和数据部分组成,首部包含源端口、目的端口、长度和校验和字段。相比TCP,UDP具有更高的传输效率和更低的资源消耗。
|
20天前
|
监控 安全 网络安全
深入理解SNMP:网络管理的关键协议
【8月更文挑战第31天】
54 1
|
2天前
|
Python
HTTP协议不再是迷!Python网络请求实战,带你走进网络世界的奥秘
本文介绍了HTTP协议,它是互联网信息传递的核心。作为客户端与服务器通信的基础,HTTP请求包括请求行、头和体三部分。通过Python的`requests`库,我们可以轻松实现HTTP请求。本文将指导你安装`requests`库,并通过实战示例演示如何发送GET和POST请求。无论你是想获取网页内容还是提交表单数据,都能通过简单的代码实现。希望本文能帮助你在Python网络请求的道路上迈出坚实的一步。
9 0
|
14天前
|
网络协议
网络协议概览:HTTP、UDP、TCP与IP
理解这些基本的网络协议对于任何网络专业人员都是至关重要的,它们不仅是网络通信的基础,也是构建更复杂网络服务和应用的基石。网络技术的不断发展可能会带来新的协议和标准,但这些基本协议的核心概念和原理将继续是理解和创新网络技术的关键。
29 0