SMB由来

 

        服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够计算机文件、打印机、串行端口和通讯等资源。它也提供经认证的进程间通信机能。它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network。

 

SMB版本

OS

Windows 10

WS 2016

Windows 8.1

WS 2012 R2

Windows 8

WS 2012

Windows 7

WS 2008 R2

Windows Vista

WS 2008

Previous

versions

Windows 10

WS 2016

SMB 3.1.1

SMB 3.0.2

SMB 3.0

SMB 2.1

SMB 2.0

SMB 1.0

Windows 8.1

WS 2012 R2

SMB 3.0.2

SMB 3.0.2

SMB 3.0

SMB 2.1

SMB 2.0

SMB 1.0

Windows 8

WS 2012

SMB 3.0

SMB 3.0

SMB 3.0

SMB 2.1

 

SMB 2.0

SMB 1.0

Windows 7

WS 2008 R2

SMB 2.1

 

SMB 2.1

SMB 2.1

SMB 2.1

SMB 2.0

SMB 1.0

Windows Vista

WS 2008

SMB 2.0

SMB 2.0

SMB 2.0

SMB 2.0

SMB 2.0

SMB 1.0

Previous

versions

SMB 1.0

SMB 1.0

SMB 1.0

SMB 1.0

SMB 1.0

SMB 1.0

备注:早期的Windows 10 和WS 2016 TP的SMB版本是3.1

 

如何查看SMB版本

在Windows 8或WS 2012 以上,用带管理员的Powershell输入:

 

其中比较关注的是SMB 3.1.1 加密算法默认为AES-128-GCM,之前SMB 3.0是用AES-128-CCM。

 

关于客户端SMB升级问题

目前查找的资料显示,客户端自带的SMB协议没办法通过升级来提高SMB版本,也就是意味着在企业规划文件服务器的时候,需要考虑到企业客户端SMB版本,对应的SMB Server,如上面SMB版本列表。

 

关于SMB Server关闭低版本SMB支持操作:

 

 
 

 

分享下小案例

环境:Windows Server 2012 R2文件服务器

客户端:Windows 7+10

问题描述:在服务器上设置共享文件夹,一开始用Win10客户端测试共享文件夹,正常,后续没继续测试Win7是否正常可以访问,后来开放给用户使用,发现Win7用户无论怎么输入账号和密码,都显示拒绝访问,权限正常。

报错图

Windows Server之浅谈SMB以及SMB小案例分享_SMB_02

Windows Server之浅谈SMB以及SMB小案例分享_Windows_03

导致问题的关键:共享文件夹启动加密数据

Windows Server之浅谈SMB以及SMB小案例分享_Windows_04

在2012中加密数据访问是加密数据来保护数据传输过程的安全性,以防止篡改和窃听攻击,用的加密算法是AES-128-CCM。所以旧版本SMB2是用HMAC-SHA256根本就不支持。

解决方法

方法1.去除加密数据访问,即可。(如果不考虑加密问题,则去除选择即可)

方法2.如果考虑加密问题,又想让SMBV2版本的客户端能够正常访问,则在服务器上Powershell输入:

Get-SmbServerConfiguration
  • 1.
 

Windows Server之浅谈SMB以及SMB小案例分享_Windows_05

RejectUnencryptedAccess参数是如果客户端尝试链接到加密共享文件夹,不支持加密算法的客户端是否被拒绝访问。默认值是True

我们可以将其值配置为false

在powershell 输入:

Set-SmbServerConfiguration -RejectUnencryptedAccess $False
  • 1.
 

Windows Server之浅谈SMB以及SMB小案例分享_Windows_06

结果就可以了

Windows Server之浅谈SMB以及SMB小案例分享_SMB_07

PS:方法2的命令是对整个SMBServer配置的,此方法一般是作为过渡用的,如果客户端版本都是SMB 3.1,建议把RejectUnencryptedAccess配置为True

如果对SMB 感兴趣可以参考:https://blogs.technet.microsoft.com/josebda/2015/04/30/smb3-networking-links-for-windows-server-2012-r2/