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
smb 3.1.1
smb 3.0.2
smb 3.0
smb 2.1
smb 2.0
smb 1.0
备注:早期的windows 10 和ws 2016 tp的smb版本是3.1
如何查看smb版本
在windows 8或ws 2012 以上,用带管理员的powershell输入:
smb各个版本介绍可以参考:https://en.wikipedia.org/wiki/server_message_block#smb_3.1.1
smb 3.1.1 新特性可以参考:https://blogs.technet.microsoft.com/josebda/2015/05/05/whats-new-in-smb-3-1-1-in-the-windows-server-2016-technical-preview-2/
其中比较关注的是smb 3.1.1 加密算法默认为aes-128-gcm,之前smb 3.0是用aes-128-ccm。
关于客户端smb升级问题
目前查找的资料显示,客户端自带的smb协议没办法通过升级来提高smb版本,也就是意味着在企业规划文件服务器的时候,需要考虑到企业客户端smb版本,对应的smb server,如上面smb版本列表。
关于smb server关闭低版本smb支持操作:
在windows 7和ws 008 r2,禁用smbv2,会停用以下功能:
请求复合 - 允许将多个smb 2请求作为单个网络请求发送
更大的读取和写入 - 更好地使用更快的网络
缓存文件夹和文件属性 - 客户端保留文件夹和文件的本地副本
持久句柄 - 如果存在临时断开连接,则允许连接透明地重新连接到服务器
改进的消息签名 - hmac sha-256将md5替换为散列算法
提高文件共享的可扩展性 - 每个服务器的用户数,共享数和打开文件数大大增加
支持符号链接
客户机操作锁租赁模式 - 限制客户机和服务器之间传输的数据,提高高延迟网络的性能并增加smb服务器可扩展性
大mtu支持 - 完全使用10gigabye(gb)以太网
提高能源效率 - 向服务器打开文件的客户端可以睡眠
在windows 8 和ws 2012 禁用smbv3.会停用以下功能:
透明故障转移 - 客户端在维护或故障转移期间重新连接而不中断群集节点
scale out - 对所有文件集群节点上的共享数据的并发访问
多通道 - 如果客户端和服务器之间有多条路径,则可以聚合网络带宽和容错
smb直接 - 增加了rdma网络支持,以实现非常高的性能,低延迟和低cpu利用率
加密 - 提供端到端加密,防止在不可信的网络上被窃听
目录租赁 - 通过缓存改进分支机构的应用程序响应时间
性能优化 - 小型随机读/写i / o的优化
在windows 8或ws 2012以上版本可以用powershell输入:
禁用smbv2和smbv3
禁用smbv1
ps:如果要恢复启用,就用$true值。
在windows vista或ws 2008以上版本用powershell输入:
ps:value的值,0表示禁用 ,1表示启用
在客户端禁用smb协议
禁止smbv1
启用smbv1
禁用smbv2和v3
启用smbv2和v3
分享下小案例
环境:windows server 2012 r2文件服务器
客户端:windows 7+10
问题描述:在服务器上设置共享文件夹,一开始用win10客户端测试共享文件夹,正常,后续没继续测试win7是否正常可以访问,后来开放给用户使用,发现win7用户无论怎么输入账号和密码,都显示拒绝访问,权限正常。
报错图:
导致问题的关键:共享文件夹启动加密数据
在2012中加密数据访问是加密数据来保护数据传输过程的安全性,以防止篡改和窃听攻击,用的加密算法是aes-128-ccm。所以旧版本smb2是用hmac-sha256根本就不支持。
解决方法:
方法1.去除加密数据访问,即可。(如果不考虑加密问题,则去除选择即可)
方法2.如果考虑加密问题,又想让smbv2版本的客户端能够正常访问,则在服务器上powershell输入:
rejectunencryptedaccess参数是如果客户端尝试链接到加密共享文件夹,不支持加密算法的客户端是否被拒绝访问。默认值是true
我们可以将其值配置为false
在powershell 输入:
结果就可以了
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/