文件和打印机共享的背后,与时俱进的SMB协议

共享

最早接触文件共享概念还是在学校机房中使用NetWare局域网的时候,后来随着Windows NT操作系统的兴起,网络通信协议NWLink从此淡出市场,加上Unix服务器操作系统的地位,TCP/IP 通信协议簇大获成功,成就了今天遍布全球的Internet网络。

今天当用户使用Windows桌面操作系统时,文件和打印机共享需求相当普遍,在局域网范围内的资源共享一般不会涉及到安全问题,然而,一旦接入互联网,那么由资源共享所引发的安全问题应得到足够重视,否则,共享资源、共享数据和计算机本身都可能受到来自互联网的入侵、渗透和破坏。

文件和打印机等资源共享的背后,是基于TCP/IP协议之上的文件共享协议,即SMB/CIFS协议,早期SMB v1.0协议最初被设计为在NetBIOS over TCP/IP(NBT)上运行,使用端口TCP 139进行会话服务,端口TCP/UDP 137进行名称服务,端口UDP 138进行数据报服务。

安全

默认情况下为了兼容性,NBT在Windows系统中默认安装并启用,文件共享和相关信息会暴露在整个网络上,在本地网络中不是一个大问题,但如果暴露在互联网上,就产生相当安全风险。中间人(MITM)和NetBIOS名称服务(NBNS)欺骗攻击在支持NTB的网络中很常见。

SMB协议可能依赖NetBIOS与不支持通过TCP/IP直接托管SMB的旧设备通信,但如果没有老旧设备,则应当彻底关闭NetBIOS支持。虽然现在主流Windows操作系统上的NetBIOS(NBT)是一种完全独立于SMB的服务,它不依赖SMB的任何东西,是over TCP/IP之上的,SMB协议在通过NBT运行时依赖于139端口,不建议这样做。对于通过TCP/IP直接托管SMB时,端口号为TCP 445。Windows操作系统默认为同时开启139和445端口,哪个先响应就用哪个通信。

SMB协议的早期版本在WannaCry勒索软件攻击中通过一个名为EternalBlue的零日漏洞被利用。WannaCry利用了使用过时的SMB协议版本的传统版本的Windows电脑。WannaCry是一种网络蠕虫,它的传输机制旨在自动传播。传输代码扫描易受EternalBlue攻击的系统,然后安装DoublePulsar(一种后门工具),并执行病毒副本。

一台受感染的计算机将搜索其Windows网络中接受TCP端口135-139或445流量的设备,表明该系统被配置为运行SMB,然后它将启动一个与设备的SMB v1连接,并使用缓冲区溢出来控制系统,并安装攻击的勒索软件组件。这意味着WannaCry可以在没有受害者参与的情况下自动传播。微软公司此后发布了对Windows XP、Windows Server 2003、Windows 8、Windows Vista、Windows 7、Windows 8.1、Windows 10、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012和Windows Server 2016的安全更新,以防止这一漏洞。

历史

SMB最初是由IBM的Barry Feigenbaum在1983年设计的,目的是将DOS INT 21h本地文件访问变成一个网络文件系统,最初被设计为使用IP端口139和UDP端口137和138在TCP/IP(NBT)上的NetBIOS之上运行。

在NetBIOS会话服务上运行的软件应用程序通过TCP端口139的NetBIOS名称来定位和识别对方。微软将SMB协议与他们1990年开始开发的LAN Manager产品合并,并继续在Windows for Workgroups中为该协议增加功能。1996年,微软发起了一项倡议,将SMB重新命名为通用互联网文件系统(CIFS),并增加了更多的功能,包括支持符号链接、硬链接、更大的文件大小,并初步尝试支持通过TCP 445端口的直接连接,而不需要NetBIOS作为传输方式。

到了微软Windows 2000,微软已经将SMB改为通过445端口操作。SMB仍然使用445端口。

SMB 1.0性能很差,微软官方解释说1.0只是一个块级而不是流式协议,是为小型局域网设计的。SMB 2.0,通过将其数百条命令和子命令减少到19条,提高了协议的效率。微软继续投资于改善SMB的性能和安全性。与Windows 8和Windows Server 2012一起推出的SMB 3.0带来了几个重大变化,增加了功能,提高了SMB2的性能,特别是在虚拟化数据中心。此外它还引入了一些安全方面的改进,如端到端加密和新的基于AES的签名算法。

服务

SAMBA最初是SMB服务器,但由于SMB服务器是一个实际的产品,所以不得不改名。SMB是CIFS的前身。SMB(服务器信息块)和CIFS(通用互联网文件系统)是协议。Samba实现了CIFS网络协议。Samba服务可以提供文件和打印共享服务,也可以作为Windows域服务器,并与Windows系统无缝对接。Samba通常被称为网络文件系统,可以安装在各种操作系统平台上,包括Linux、大多数常见的UNIX平台、OpenVMS和OS/2。

区别

SMB协议对应着文件系统SMBFS,起源于Samba项目,这个文件系统已经被废弃,但为了向后兼容,还没有被删除,但没有人维护,而Linux操作系统对文件系统CIFS提供了原生支持,不依赖Samba服务。

优化

如果有类似的硬件,Samba服务在速度上肯定会比其他系统有竞争力,只要配置得当,优于NFS和FTP。以下都是重要的性能配置选项,开启后可以成倍提高网络文件共享读写速度。

#修改samba服务配置文件smb.conf,在global节添加以下配置
read raw = yes  #允许samba以64KB块大小进行读写
write raw =yes
socket options = TCP_NODELAY #不等确认收到就继续发送数据
socket options = IPTOS_LOWDELAY #用吞吐量换取低延迟,影响路由器

实际测评表明,TCP_NODELAY 配置选项可以翻倍提升性能,其实真正的原因是微软操作系统所实现的TCP/IP协议栈在发送TCP ACK时很慢,开启这个配置后绕过了这个BUG。

一般使用如下命令测试Samba服务的配置文件是否正确。

# testparm /etc/samba/smb.conf
# smbcontrol all reload-config  #强制配置立即生效
# smbcontrol all reload-printers #强制刷新打印机
展开阅读全文

页面更新:2024-05-20

标签:协议   微软   与时俱进   文件系统   端口   打印机   最初   操作系统   性能   服务器   文件   系统   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top