SMB 与 CIFS 协议详解:Windows 文件共享的核心

SMB 与 CIFS 协议详解:Windows 文件共享的核心

SMB(Server Message Block)是 Windows 环境中使用最广泛的文件共享协议。在企业内网中,用户只需在资源管理器地址栏输入 \\fileserver\project 就能访问共享目录,整个过程对使用者透明。这种"无感"的易用性,是 SMB 长期占据 Windows 文件共享主导地位的根本原因。

本文从协议演进、工作原理出发,涵盖服务器配置、Linux 客户端挂载、安全加固和常见攻击面,帮助你建立对 SMB/CIFS 协议的完整认知。


一、协议演进与版本脉络

理解 SMB 的第一步,是厘清 SMB、CIFS、Samba 三个概念之间的关系。

SMB(Server Message Block)最初由 IBM 在 1983 年设计,用于在局域网上共享文件和打印机。CIFS(Common Internet File System)是微软在 1996 年将 SMB 扩展到互联网场景时提出的名字,本质上是 SMB 的一种实现。由于微软的强势地位,“CIFS” 这个名称在很长时间内被等同于整个 SMB 协议族。但从技术角度看,CIFS 本身已经过时,现存的实现统称为 SMB。

SMB 经历了数次重大版本迭代:

版本 年份 关键改进
SMB 1.0 1983-至今 原始版本,麻雀虽小但存在严重安全缺陷
SMB 2.0 2006 重大重构,大幅简化协议头,支持更大读写块,显著提升性能
SMB 2.1 2010 引入 oplock leasing(锁租约),改善并发性能
SMB 3.0 2012 支持端到端加密( AES-128-GCM)、多通道、RDMA、集群故障转移
SMB 3.0.2 2014 禁止 SMB1 默认启用,安全性大幅提升
SMB 3.1.1 2015 引入 AES-256-GCM 加密、签名算法协商、Cluster Dialect Negotiation

目前最值得关注的是 SMB1 的遗留问题。SMB1 存在多个严重漏洞,最著名的包括 EternalBlue(NSA 泄露的漏洞利用,被 WannaCry 勒索软件使用)。SMB1 在 2017 年之后的主流操作系统中已默认禁用,但在部分老旧设备上仍可能处于开启状态,这是企业内网中的一个常见风险点。


二、协议工作原理

2.1 两种传输方式:端口 139 与 445

SMB 可以在两种不同的传输通道上工作,理解它们的区别有助于排查连接问题。

NetBIOS over TCP 139:这是 SMB 的传统传输方式,通过 NetBIOS 协议封装后跑在 TCP 139 端口。NetBIOS 是一种古老的命名和会话层协议,提供名称注册、广播查询等功能。这种方式适用于需要 NetBIOS 名称解析的老旧网络环境。

Direct TCP 445:这是现代 SMB 的主流传输方式,SMB 报文直接封装在 TCP 报文中,无需 NetBIOS 层。端口 445 是当前所有主流 Windows 和 Samba 版本使用的默认端口。

在实际排查中,如果客户端无法连接,应同时检查 139 和 445 端口是否可达。

2.2 协议交互五阶段

SMB 的完整交互流程分为五个阶段:

第一阶段:连接协商

客户端向服务器 TCP 445 端口发起连接,双方交换各自支持的 SMB 版本(dialect)。服务器返回自己支持的最高版本,客户端从中选择一个双方都支持的版本进行后续通信。这就是所谓的"Dialect Negotiation"(方言协商)。

协商完成后,双方确定使用哪个 SMB 版本进行通信。SMB 2.0 及之后的版本协议头大幅简化(从复杂的 SMB1 头变为固定长度的简洁头),这是 SMB 2.0 性能提升的重要因素之一。

第二阶段:身份认证

客户端提交用户凭证,服务器完成身份验证。支持两种主流认证方式:

  • NTLMv2:基于挑战-响应机制,密码以哈希形式传输,不会上传明文密码。在工作组(Workgroup)环境中使用。
  • Kerberos:基于票据机制,在 Active Directory 域环境中为首选。优势在于支持单点登录(SSO),用户一次登录后可访问所有授权资源,无需重复输入密码。

第三阶段:树连接建立

客户端向服务器请求访问特定共享路径,例如 \\192.168.1.10\data。服务器根据共享级别的权限设置(Share Permissions)和 NTFS 级别的 ACL(访问控制列表)进行双重校验,验证通过后返回唯一句柄(Tree ID)。后续所有对这个共享的操作,都通过这个 Tree ID 标识。

第四阶段:文件操作执行

客户端通过这个树连接执行具体的文件操作。每条指令都封装为 SMB 报文,主要操作包括:

CONNECT      → 建立树连接
TREE_CONNECT → 连接共享目录
CREATE       → 打开或创建文件/目录
READ         → 读取数据
WRITE        → 写入数据
QUERY_INFO   → 查询文件属性
SET_INFO     → 修改文件属性
CLOSE        → 关闭文件句柄
TREE_DISCONNECT → 断开树连接

第五阶段:会话终止

客户端发送会话结束请求,服务器释放分配的句柄和内存资源,TCP 连接关闭。

2.3 锁机制:Oplocks 与 Leasing

SMB 在网络环境下需要解决一个核心问题:客户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值