局域网文件服务器-Samba


Samba是用来实现SMB协议的一种软件,由澳大利亚的Andew Tridgell开发,是一种在Linux(Unix)环境下运行的免费软件。是一款实现Uinx/Linux与Windows系统文件共享、打印机共享等非常强大的SMB软件,其理念为"Opening Windows to a Wider World"。

可用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结。在目前的版本(v3),不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的网域、扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。
Samba是许多服务以及协议的实现,其包括TCP/IP上的NetBIOS(NBT)、SMB、CIFS (SMB的增强版本)、DCE/RPC或者更具体来说MSRPC(网络邻居协议套件)、一种 WINS服务器(也被称作NetBIOS Name Server(NBNS))、NT 域协议套件(包括NT Domain Logons、Secure Accounts Manager(SAM)数据库、Local Security Authority(LSA)服务、NT-style打印服务(SPOOLSS)、NTLM以及近来出现的包括一种改进的Kerberos协议与改进的轻 型目录访问协议(LDAP)在内的Active Directory Logon服务)。以上这些服务以及协议经常被错误地归类为NetBIOS或者SMB,Samba也能够用于共享打印机。
Samba能够为选定的Unix目录(包括所有子目录)建立网络共享,该功能使得Windows用户可以像访问普通Windows下的文件夹那样来通过网络访问这些Unix目录。
通过使用Samba,Linux系统可以实现如下功能:
文件服务和打印服务(在Linux和WinNT之间系统之间提供打印机和磁盘的共享)
登陆服务器,使用Windows客户能注册到网络上
作为主要域控制器和域中成员的功能
WINS服务器以及浏览功能
支持SSL(Secure Socket Layer)
支持SWAT (Samba Web Administration Tool )
Samba除了支持Linux(Unix)和WinNT之外,还支持DOS、IBM OS/2、Macintosh 等操作系统。
SMB概念了解
Samba 是用来实现SMB的一种软件,在这里在了解一下SMB(Server Message Block,服务信息块)。SMB协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和 Linux机器提供文件系统、打印服务或是其他一些信息。
SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这 两种协议运行在TCP/IP的通信协议上,且使用NetBIOS nameserver让用户的Linux机器可以在Windows的网络邻居里被看到,所以就可以和WinNT主机在网络上相互沟通,共享文件与服务了。
目前Microsoft正在开发一种新的文件和打印共享协议--CIFS(Common Internet Files System,通用网络文件协议),该协议支持TCP/IP和DNS等协议,能在www上支持文件和打印共享。在CIFS下服务器实际上是DNS名,由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的。目前CIFS还没有得到广泛的应用。现在在Linux和WinNT之间的文件 共享注意还是SMB和NFS。
Samba和NFS的区别是什么
Samba 是DEC开始开发的,用于在不同的Unix机器间进行资源共享,采用udp协议。后来基于tcp重新开发后,效率有了很大提高,它使用的协议是SMB。微 软不愿意交License费,在windows系统中对该协议重新进行了实现。既然samba和windows中的网络邻居都使用SMB协议。那它自然主 要用于在windows和unix之间共享资源,资源包括文件、打印机等等。
NFS是SUN开发的,用于UNIX机器之间的资源共享。其设置相当容易,主要是配置/etc/exports文件,然后运行exportfs -a来共享出来,现在NFS已经成为UNIX/LINUX上的标配。
两者的文档都说自己的效率高一些,从经验来看,nfs的效率要稍微高一些,只是差别不是太大。从配置来看:samba比较复杂,nfs比较简单。但是复杂有复杂的道理,它让我们能够灵活的配置。
SMB(Server Message Block)是一个早期的计算机网络协议,用于在计算机之间共享文件、打印机和其他资源。随着时间的推移,SMB协议也经历了多次更新和改进。SMB 1.0最早出现在1984年,而SMB 2.0和SMB 3.0则分别于2006年和2012年推出。以下是它们的主要功能和版本信息:
SMB 1.0:
年代:1984年
功能:文件和打印机共享、消息传输、远程过程调用等。
版本:也称为CIFS(Common Internet File System),由微软开发。Windows操作系统中默认启用SMB 1.0,但其存在多个安全漏洞,不建议使用。
SMB 2.0:
年代:2006年
功能:更快的性能、更好的可扩展性、更好的容错性、加密支持等等。SMB 2.0还引入了一种新的状态量度方法,称为Compound TCP(CTCP),以自适应地调整网络速度,从而优化传输性能。
版本:Windows Vista及以上系统默认启用SMB 2.0,Mac OS X 10.7及以上版本也支持SMB 2.0。
SMB 3.0:
年代:2012年
功能:进一步扩展和改进了SMB 2.0的特性,提供了更高的性能和更好的安全性。其中最显著的变化是引入了SMB Direct协议,这是一种使用远程直接内存访问(RDMA)技术实现的高性能数据传输方式,可以直接在内存中传输数据,避免了网络协议和操作系统的开销。
版本:Windows 8及以上系统默认启用SMB 3.0,Mac OS X 10.9及以上版本也支持SMB 3.0。
总的来说,随着SMB协议的不断更新和改进,每个版本都提供了更多的功能和改善,以确保更好的性能、可靠性和安全性。如果可能,建议使用更新的SMB版本。
目前广泛使用的 SMB 协议有以下几个主要版本:
SMB 1.0:也称为 CIFS(Common Internet File System),是最早的 SMB 协议版本,最初由 IBM 开发。尽管在过去得到了广泛应用,但由于安全性和性能方面的局限性,现在已经逐渐被淘汰。
SMB 2.0:这是对 SMB 协议进行了全面重新设计的版本,引入了更好的性能、可靠性和安全性。SMB 2.0 首次出现在 Windows Vista 和 Windows Server 2008 中。
SMB 2.1:这是对 SMB 2.0 的轻微修改和扩展,主要用于改进性能和修复一些问题。SMB 2.1 首次出现在 Windows 7 和 Windows Server 2008 R2 中。
SMB 3.0:这是当前最新的版本,引入了许多新特性,包括加密传输、持久化句柄、远程 VSS 等,大大提高了性能和安全性。SMB 3.0 首次出现在 Windows 8 和 Windows Server 2012 中。
SMB 3.1.1:这是目前最新的SMB协议版本,引入了一些新的特性,包括预取、加密性能提升、安全性增强等。SMB 3.1.1 进一步改进了SMB 3.0版本的性能和安全性。
SMB Direct:也称为 SMB over RDMA(Remote Direct Memory Access),它允许SMB协议直接在RDMA网络上运行,从而提供了更高的性能和更低的CPU开销。
SMB Multichannel:这是一种SMB协议的特性,允许多个网络连接并行使用,以提高带宽和容错能力。
SMB Encryption:SMB 3.0及更新版本引入了对数据传输的加密支持,通过加密可以保护数据的机密性和完整性。
SMB over QUIC 是 Windows Server 2022 中的一个新特性,它支持通过基于 UDP 的 Quick UDP Internet Connections (QUIC) 协议来进行 SMB 流量传输。这项特性允许通过互联网加速访问文件共享,并可能替代 VPN。SMB over QUIC 利用 TLS 1.3 进行传输层安全性保护,并使用由 Google 开发的 SPDY 协议实现多路复用,允许通过单一连接传输不同的数据流,从而显著减少加载时间。此外,QUIC 还提供了诸如唯一序列号、前向纠错、拥塞控制和身份验证等功能。
然而,SMB over QUIC 也存在一些限制。例如,它仅适用于 Windows Server 2022 Azure Edition,并且在 Microsoft 云中可用,或在 Azure Stack HCI 上的虚拟机中运行。普通的 Hyper-V 服务器则不支持。此外,QUIC 的数据包头部包含的明文信息少于 TCP 连接,这使得故障排除、流量控制或网络管理变得更加困难。还有关于拥塞控制的问题,可能会影响传输速率,尽管目前还在对此进行优化。
SMB over QUIC 的配置可以通过 Windows Admin Center (WAC) 或 PowerShell 完成。配置时需要选择 SSL 证书,并设置允许客户端连接的地址。高级设置中还包括激活 SMB 加密以及允许对命名管道的访问等选项。
需要注意的是,SMB over QUIC 曾存在一个重要漏洞(CVE-2023-24898),位于 srvnet.sys 驱动程序中,可能导致未经身份验证的互联网攻击者对 Windows Server 2022 机器发起远程拒绝服务(DoS)攻击。这个漏洞仅影响使用 SMB over QUIC 的服务器,且只影响 Windows Server 2022 Azure Edition。Akamai 已向微软通报了这一漏洞,微软也在 2023 年 5 月的“周二补丁日”发布了对应的安全补丁。
当涉及SMB协议时,还有一些相关的重要概念和技术需要考虑:
SMB文件共享:SMB协议最常见的用途是用于在网络上共享文件和打印机。通过SMB协议,用户可以访问位于远程计算机上的文件、文件夹和打印机,实现资源共享和数据交换。
SMB安全性:随着对网络安全的日益关注,SMB协议的安全性也越来越重要。在新的SMB版本中,加密传输、数字签名验证等安全机制得到了加强,以保护数据不受未经授权的访问和篡改。
SMB管理:针对SMB协议的管理,包括访问控制、共享设置、性能优化等方面,有许多工具和方法可供管理员使用,以确保系统的正常运行和安全性。
SMB在云存储中的应用:随着云计算的发展,SMB协议在云存储中的应用也变得越来越普遍。例如,许多云存储服务提供商支持SMB协议,使用户可以轻松地将其本地存储与云存储进行集成。
总的来说,SMB协议作为一种重要的网络文件共享协议,在网络环境中扮演着至关重要的角色。随着技术的不断发展,SMB协议也在不断演进和改进,以满足现代网络环境下对文件共享和数据交换的需求。
以下是SMB 1.0、SMB 2.0和SMB 3.0之间的主要区别和更新:
传输速度对比
在SMB 1.0中,数据传输速度的上限受到多种因素的制约,例如网络带宽、硬件配置、文件大小和数量等等。通常情况下,SMB 1.0的最大传输速度约为100 Mbps(每秒传输1亿位),这主要取决于以太网硬件的限制。但需要注意的是,由于SMB 1.0已经过时,并存在安全漏洞,因此不建议使用它进行数据传输。如果你需要进行文件共享或数据传输,建议升级到更高版本的SMB协议。
SMB 2.0及以上的版本在吞吐量和性能方面都有了显著的改进。根据Microsoft的官方文档,SMB 2.0的理论最大速度约为2 Gbps(每秒传输2亿位),而SMB 3.0甚至可以达到10 Gbps的传输速度。当然,实际的速度还是会受到一些因素的影响,例如网络拥塞、负载均衡、硬盘IO、CPU使用率等等。
SMB 1.0:是最早的SMB版本,最初由IBM开发。它使用广泛,但安全性较差,存在多个漏洞,这些漏洞可以被黑客用来进行攻击。因此,建议不要使用SMB 1.0。
SMB 2.0:是SMB协议的重大更新,增加了许多新特性和改进,包括更快的性能、更好的可扩展性、更好的容错性、加密支持等等。SMB 2.0还引入了一种新的状态量度方法,称为Compound TCP(CTCP),以自适应地调整网络速度,从而优化传输性能。
SMB 3.0:进一步扩展和改进了SMB 2.0的特性,提供了更高的性能和更好的安全性。其中最显著的变化是引入了SMB Direct协议,这是一种使用远程直接内存访问(RDMA)技术实现的高性能数据传输方式,可以直接在内存中传输数据,避免了网络协议和操作系统的开销。
总的来说,SMB 2.0和SMB 3.0的主要改进在于性能、可靠性和安全性方面。这两个版本相比SMB 1.0有更好的支持大文件传输和高带宽网络的能力。同时,SMB 3.0提供了更强大的加密、认证和授权功能,以保护数据的安全性。如果可能,建议使用更新的SMB版本。
最新版本:4.x
v4.10的亮点是支持异步刷新请求、基于GnuTLS的backupkey部署、多活动目录改进、添加了一个WINSnsswitch模块、以及对SMB3多通道的实验性支持。发行说明中写到:“来自SMB2/3客户端的刷新请求会被异步处理,且不会阻止其它请求的处理。请注意Samba的‘严格同步’(strict sync)必须设置为'是'。”
Samba 4.4命令行工具也迎来了新的技能,比如在‘samba-tool domain demote’子命令下的‘--remove-other-dead-server’选项,以及‘samba-tool sites’和‘samba-tool drs clone-dc-database’这两个子命令。此外,Samba 4.4还迎来了其它一些小改进,比如pdbedit、smbstatus、smbget、the s4-rpc_server、ntlm_auth、vfs_offline、KCC、Samba DNS server等组件的变动。
最后,某些组件也在本次发行版中被移除,比如public headers、vfs_smb_traffic_analyzer和vfs_scannedonly。添加了透明文件压缩;通过 Windows Explorer "previous versions" 对话框访问 "Snapper" 快照;更好的集群支持等等。4.4版本的发布也意味着不再支持 Samba 3 版本。包括了 pre-fork 的改进,KDC 现在支持 pre-fork 进程模型,DCERPC 现在支持 pre-fork NETLOGIN 进程。pre-fork 模型现在重启了失败进程以及其他进程模型的改进。新版本带来了 GPO 的改进、脱机域的备份、组成员身份的统计、JSON 日志的增强及其他改动。
2024年9月,距离上个版本 v4.20 发布5个月后,Samba 正式推出了其最新版本 v4.21。本次更新主要集中在安全性方面的改进和功能的增强,带来了显著的安全性提升和多项新功能,进一步巩固了其在跨平台文件共享和打印服务中的重要地位。
强化安全设置:此次更新对 “valid users”、“invalid users”、“read list” 和 “write list” 这些安全设置进行了重要的强化。过去,在处理用户或组名时,如果系统无法解析这些名称,这些项会被跳过,且不会发出任何通知,可能导致意外的访问权限泄露。在 v4.21 中,这种情况得到了改善。如果与域控制器的通信出现问题导致名称无法解析,系统将记录错误日志,并拒绝连接尝试,从而避免潜在的安全隐患。
支持 LDAP TLS/SASL 通道绑定:v4.21 还引入了对 LDAP TLS/SASL 通道绑定的支持,这是现代网络安全实践中不可或缺的一项功能。这项增强功能允许在 TLS 连接上进行更安全的 SASL 绑定,极大提升了身份验证的安全性。
新增功能和改进:除了安全增强外,v4.21 还带来了一些新功能和改进。例如,在计算机密码更改后,系统会自动更新 keytab,从而提高依赖 Samba 进行身份验证的网络服务的稳定性。此外,新版本还新增了一个 DNS 主机名配置选项,进一步改善了 Samba 在 Active Directory 环境中的集成,使域加入和服务注册的流程更加顺畅。
支持 Group Managed Service Accounts (gMSA):对于高级配置管理者,新版本加入了对 Group Managed Service Accounts (gMSA) 的支持。这项功能为跨多个服务器的服务账户管理提供了更安全、易管理的方式,非常适合大规模部署。
为未来增强功能做铺垫:v4.21 还为未来的功能增强做好了准备。例如新的 vfs-to-cephfs 桥接模块将取代旧的 CephFS 实现,承诺提供更好的性能和更强的安全选项。
v4.22 版于2025年3月上旬发布,这次更新带来了多项改进,尤其是在性能优化和身份验证方面。大致如下:
SMB3 目录租约(Directory Leases):提升性能,减少请求
本次更新的一大亮点是 SMB3 目录租约(Directory Leases),这项功能允许客户端缓存目录列表,从而减少对服务器的 SMB 请求量。这对于高流量环境来说,能够带来显著的性能提升。需要注意的是,该功能默认 在非集群模式下启用,但 在集群模式下关闭,其行为可通过新的全局参数 smb3 directory leases 进行配置。
Azure Entra ID 认证支持(实验性)
v4.22 还 实验性地 引入了 Azure Entra ID 认证,通过名为 himmelblaud 的 Rust 组件提供基本的身份验证支持。该功能可在 smb.conf 配置文件中启用,并新增了多个全局参数,例如 himmelblaud_sfa_fallback、himmelblaud_hello_enabled 和 himmelblaud_hsm_pin_path,方便用户进行个性化调整。
提升 Active Directory 相关操作的性能
在 Active Directory 相关操作方面,v4.22 增大了 LDB 索引缓存大小,显著加快了 离线 AD 操作 的速度,使 Samba 部署和架构升级的速度提高了数倍。此外,管理员现在可以使用 基于 TCP 的 LDAP rootDSE 查询 来获取域控制器信息,而不再依赖传统的 无连接 LDAP 查询(UDP 端口 389)。这种新方式在 防火墙阻止 UDP 流量 的环境下尤为有用。为了兼容不同的网络需求,Samba 还新增了 client netlogon ping protocol 参数,允许用户在 无连接 LDAP(CLDAP) 和 基于 TCP 的 LDAP 查询 之间进行切换。
弃用的旧功能
与每次重大更新一样,v4.22 也移除了部分过时功能,其中包括:
1.nmbd proxy logon —— 这一旧机制早已被 Samba4 内置的 NBT 服务器取代,因此被移除。
2.cldap port —— 由于 CLDAP 默认只使用 UDP 端口 389,过去允许配置自定义端口的功能已被移除,以避免历史实现中的不一致问题。
3.fruit:posix_rename —— 该功能曾用于 macOS 目录重命名,但由于与 Windows 客户端存在兼容性问题,因此已被废弃。
官方主页:http://www.samba.org/

可用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结。在目前的版本(v3),不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的网域、扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。
Samba是许多服务以及协议的实现,其包括TCP/IP上的NetBIOS(NBT)、SMB、CIFS (SMB的增强版本)、DCE/RPC或者更具体来说MSRPC(网络邻居协议套件)、一种 WINS服务器(也被称作NetBIOS Name Server(NBNS))、NT 域协议套件(包括NT Domain Logons、Secure Accounts Manager(SAM)数据库、Local Security Authority(LSA)服务、NT-style打印服务(SPOOLSS)、NTLM以及近来出现的包括一种改进的Kerberos协议与改进的轻 型目录访问协议(LDAP)在内的Active Directory Logon服务)。以上这些服务以及协议经常被错误地归类为NetBIOS或者SMB,Samba也能够用于共享打印机。
Samba能够为选定的Unix目录(包括所有子目录)建立网络共享,该功能使得Windows用户可以像访问普通Windows下的文件夹那样来通过网络访问这些Unix目录。
通过使用Samba,Linux系统可以实现如下功能:
文件服务和打印服务(在Linux和WinNT之间系统之间提供打印机和磁盘的共享)
登陆服务器,使用Windows客户能注册到网络上
作为主要域控制器和域中成员的功能
WINS服务器以及浏览功能
支持SSL(Secure Socket Layer)
支持SWAT (Samba Web Administration Tool )
Samba除了支持Linux(Unix)和WinNT之外,还支持DOS、IBM OS/2、Macintosh 等操作系统。
SMB概念了解
Samba 是用来实现SMB的一种软件,在这里在了解一下SMB(Server Message Block,服务信息块)。SMB协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和 Linux机器提供文件系统、打印服务或是其他一些信息。
SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这 两种协议运行在TCP/IP的通信协议上,且使用NetBIOS nameserver让用户的Linux机器可以在Windows的网络邻居里被看到,所以就可以和WinNT主机在网络上相互沟通,共享文件与服务了。
目前Microsoft正在开发一种新的文件和打印共享协议--CIFS(Common Internet Files System,通用网络文件协议),该协议支持TCP/IP和DNS等协议,能在www上支持文件和打印共享。在CIFS下服务器实际上是DNS名,由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的。目前CIFS还没有得到广泛的应用。现在在Linux和WinNT之间的文件 共享注意还是SMB和NFS。
Samba和NFS的区别是什么
Samba 是DEC开始开发的,用于在不同的Unix机器间进行资源共享,采用udp协议。后来基于tcp重新开发后,效率有了很大提高,它使用的协议是SMB。微 软不愿意交License费,在windows系统中对该协议重新进行了实现。既然samba和windows中的网络邻居都使用SMB协议。那它自然主 要用于在windows和unix之间共享资源,资源包括文件、打印机等等。
NFS是SUN开发的,用于UNIX机器之间的资源共享。其设置相当容易,主要是配置/etc/exports文件,然后运行exportfs -a来共享出来,现在NFS已经成为UNIX/LINUX上的标配。
两者的文档都说自己的效率高一些,从经验来看,nfs的效率要稍微高一些,只是差别不是太大。从配置来看:samba比较复杂,nfs比较简单。但是复杂有复杂的道理,它让我们能够灵活的配置。
SMB(Server Message Block)是一个早期的计算机网络协议,用于在计算机之间共享文件、打印机和其他资源。随着时间的推移,SMB协议也经历了多次更新和改进。SMB 1.0最早出现在1984年,而SMB 2.0和SMB 3.0则分别于2006年和2012年推出。以下是它们的主要功能和版本信息:
SMB 1.0:
年代:1984年
功能:文件和打印机共享、消息传输、远程过程调用等。
版本:也称为CIFS(Common Internet File System),由微软开发。Windows操作系统中默认启用SMB 1.0,但其存在多个安全漏洞,不建议使用。
SMB 2.0:
年代:2006年
功能:更快的性能、更好的可扩展性、更好的容错性、加密支持等等。SMB 2.0还引入了一种新的状态量度方法,称为Compound TCP(CTCP),以自适应地调整网络速度,从而优化传输性能。
版本:Windows Vista及以上系统默认启用SMB 2.0,Mac OS X 10.7及以上版本也支持SMB 2.0。
SMB 3.0:
年代:2012年
功能:进一步扩展和改进了SMB 2.0的特性,提供了更高的性能和更好的安全性。其中最显著的变化是引入了SMB Direct协议,这是一种使用远程直接内存访问(RDMA)技术实现的高性能数据传输方式,可以直接在内存中传输数据,避免了网络协议和操作系统的开销。
版本:Windows 8及以上系统默认启用SMB 3.0,Mac OS X 10.9及以上版本也支持SMB 3.0。
总的来说,随着SMB协议的不断更新和改进,每个版本都提供了更多的功能和改善,以确保更好的性能、可靠性和安全性。如果可能,建议使用更新的SMB版本。
目前广泛使用的 SMB 协议有以下几个主要版本:
SMB 1.0:也称为 CIFS(Common Internet File System),是最早的 SMB 协议版本,最初由 IBM 开发。尽管在过去得到了广泛应用,但由于安全性和性能方面的局限性,现在已经逐渐被淘汰。
SMB 2.0:这是对 SMB 协议进行了全面重新设计的版本,引入了更好的性能、可靠性和安全性。SMB 2.0 首次出现在 Windows Vista 和 Windows Server 2008 中。
SMB 2.1:这是对 SMB 2.0 的轻微修改和扩展,主要用于改进性能和修复一些问题。SMB 2.1 首次出现在 Windows 7 和 Windows Server 2008 R2 中。
SMB 3.0:这是当前最新的版本,引入了许多新特性,包括加密传输、持久化句柄、远程 VSS 等,大大提高了性能和安全性。SMB 3.0 首次出现在 Windows 8 和 Windows Server 2012 中。
SMB 3.1.1:这是目前最新的SMB协议版本,引入了一些新的特性,包括预取、加密性能提升、安全性增强等。SMB 3.1.1 进一步改进了SMB 3.0版本的性能和安全性。
SMB Direct:也称为 SMB over RDMA(Remote Direct Memory Access),它允许SMB协议直接在RDMA网络上运行,从而提供了更高的性能和更低的CPU开销。
SMB Multichannel:这是一种SMB协议的特性,允许多个网络连接并行使用,以提高带宽和容错能力。
SMB Encryption:SMB 3.0及更新版本引入了对数据传输的加密支持,通过加密可以保护数据的机密性和完整性。
SMB over QUIC 是 Windows Server 2022 中的一个新特性,它支持通过基于 UDP 的 Quick UDP Internet Connections (QUIC) 协议来进行 SMB 流量传输。这项特性允许通过互联网加速访问文件共享,并可能替代 VPN。SMB over QUIC 利用 TLS 1.3 进行传输层安全性保护,并使用由 Google 开发的 SPDY 协议实现多路复用,允许通过单一连接传输不同的数据流,从而显著减少加载时间。此外,QUIC 还提供了诸如唯一序列号、前向纠错、拥塞控制和身份验证等功能。
然而,SMB over QUIC 也存在一些限制。例如,它仅适用于 Windows Server 2022 Azure Edition,并且在 Microsoft 云中可用,或在 Azure Stack HCI 上的虚拟机中运行。普通的 Hyper-V 服务器则不支持。此外,QUIC 的数据包头部包含的明文信息少于 TCP 连接,这使得故障排除、流量控制或网络管理变得更加困难。还有关于拥塞控制的问题,可能会影响传输速率,尽管目前还在对此进行优化。
SMB over QUIC 的配置可以通过 Windows Admin Center (WAC) 或 PowerShell 完成。配置时需要选择 SSL 证书,并设置允许客户端连接的地址。高级设置中还包括激活 SMB 加密以及允许对命名管道的访问等选项。
需要注意的是,SMB over QUIC 曾存在一个重要漏洞(CVE-2023-24898),位于 srvnet.sys 驱动程序中,可能导致未经身份验证的互联网攻击者对 Windows Server 2022 机器发起远程拒绝服务(DoS)攻击。这个漏洞仅影响使用 SMB over QUIC 的服务器,且只影响 Windows Server 2022 Azure Edition。Akamai 已向微软通报了这一漏洞,微软也在 2023 年 5 月的“周二补丁日”发布了对应的安全补丁。
当涉及SMB协议时,还有一些相关的重要概念和技术需要考虑:
SMB文件共享:SMB协议最常见的用途是用于在网络上共享文件和打印机。通过SMB协议,用户可以访问位于远程计算机上的文件、文件夹和打印机,实现资源共享和数据交换。
SMB安全性:随着对网络安全的日益关注,SMB协议的安全性也越来越重要。在新的SMB版本中,加密传输、数字签名验证等安全机制得到了加强,以保护数据不受未经授权的访问和篡改。
SMB管理:针对SMB协议的管理,包括访问控制、共享设置、性能优化等方面,有许多工具和方法可供管理员使用,以确保系统的正常运行和安全性。
SMB在云存储中的应用:随着云计算的发展,SMB协议在云存储中的应用也变得越来越普遍。例如,许多云存储服务提供商支持SMB协议,使用户可以轻松地将其本地存储与云存储进行集成。
总的来说,SMB协议作为一种重要的网络文件共享协议,在网络环境中扮演着至关重要的角色。随着技术的不断发展,SMB协议也在不断演进和改进,以满足现代网络环境下对文件共享和数据交换的需求。
以下是SMB 1.0、SMB 2.0和SMB 3.0之间的主要区别和更新:
传输速度对比
在SMB 1.0中,数据传输速度的上限受到多种因素的制约,例如网络带宽、硬件配置、文件大小和数量等等。通常情况下,SMB 1.0的最大传输速度约为100 Mbps(每秒传输1亿位),这主要取决于以太网硬件的限制。但需要注意的是,由于SMB 1.0已经过时,并存在安全漏洞,因此不建议使用它进行数据传输。如果你需要进行文件共享或数据传输,建议升级到更高版本的SMB协议。
SMB 2.0及以上的版本在吞吐量和性能方面都有了显著的改进。根据Microsoft的官方文档,SMB 2.0的理论最大速度约为2 Gbps(每秒传输2亿位),而SMB 3.0甚至可以达到10 Gbps的传输速度。当然,实际的速度还是会受到一些因素的影响,例如网络拥塞、负载均衡、硬盘IO、CPU使用率等等。
SMB 1.0:是最早的SMB版本,最初由IBM开发。它使用广泛,但安全性较差,存在多个漏洞,这些漏洞可以被黑客用来进行攻击。因此,建议不要使用SMB 1.0。
SMB 2.0:是SMB协议的重大更新,增加了许多新特性和改进,包括更快的性能、更好的可扩展性、更好的容错性、加密支持等等。SMB 2.0还引入了一种新的状态量度方法,称为Compound TCP(CTCP),以自适应地调整网络速度,从而优化传输性能。
SMB 3.0:进一步扩展和改进了SMB 2.0的特性,提供了更高的性能和更好的安全性。其中最显著的变化是引入了SMB Direct协议,这是一种使用远程直接内存访问(RDMA)技术实现的高性能数据传输方式,可以直接在内存中传输数据,避免了网络协议和操作系统的开销。
总的来说,SMB 2.0和SMB 3.0的主要改进在于性能、可靠性和安全性方面。这两个版本相比SMB 1.0有更好的支持大文件传输和高带宽网络的能力。同时,SMB 3.0提供了更强大的加密、认证和授权功能,以保护数据的安全性。如果可能,建议使用更新的SMB版本。
最新版本:4.x
v4.10的亮点是支持异步刷新请求、基于GnuTLS的backupkey部署、多活动目录改进、添加了一个WINSnsswitch模块、以及对SMB3多通道的实验性支持。发行说明中写到:“来自SMB2/3客户端的刷新请求会被异步处理,且不会阻止其它请求的处理。请注意Samba的‘严格同步’(strict sync)必须设置为'是'。”
Samba 4.4命令行工具也迎来了新的技能,比如在‘samba-tool domain demote’子命令下的‘--remove-other-dead-server’选项,以及‘samba-tool sites’和‘samba-tool drs clone-dc-database’这两个子命令。此外,Samba 4.4还迎来了其它一些小改进,比如pdbedit、smbstatus、smbget、the s4-rpc_server、ntlm_auth、vfs_offline、KCC、Samba DNS server等组件的变动。
最后,某些组件也在本次发行版中被移除,比如public headers、vfs_smb_traffic_analyzer和vfs_scannedonly。添加了透明文件压缩;通过 Windows Explorer "previous versions" 对话框访问 "Snapper" 快照;更好的集群支持等等。4.4版本的发布也意味着不再支持 Samba 3 版本。包括了 pre-fork 的改进,KDC 现在支持 pre-fork 进程模型,DCERPC 现在支持 pre-fork NETLOGIN 进程。pre-fork 模型现在重启了失败进程以及其他进程模型的改进。新版本带来了 GPO 的改进、脱机域的备份、组成员身份的统计、JSON 日志的增强及其他改动。
2024年9月,距离上个版本 v4.20 发布5个月后,Samba 正式推出了其最新版本 v4.21。本次更新主要集中在安全性方面的改进和功能的增强,带来了显著的安全性提升和多项新功能,进一步巩固了其在跨平台文件共享和打印服务中的重要地位。
强化安全设置:此次更新对 “valid users”、“invalid users”、“read list” 和 “write list” 这些安全设置进行了重要的强化。过去,在处理用户或组名时,如果系统无法解析这些名称,这些项会被跳过,且不会发出任何通知,可能导致意外的访问权限泄露。在 v4.21 中,这种情况得到了改善。如果与域控制器的通信出现问题导致名称无法解析,系统将记录错误日志,并拒绝连接尝试,从而避免潜在的安全隐患。
支持 LDAP TLS/SASL 通道绑定:v4.21 还引入了对 LDAP TLS/SASL 通道绑定的支持,这是现代网络安全实践中不可或缺的一项功能。这项增强功能允许在 TLS 连接上进行更安全的 SASL 绑定,极大提升了身份验证的安全性。
新增功能和改进:除了安全增强外,v4.21 还带来了一些新功能和改进。例如,在计算机密码更改后,系统会自动更新 keytab,从而提高依赖 Samba 进行身份验证的网络服务的稳定性。此外,新版本还新增了一个 DNS 主机名配置选项,进一步改善了 Samba 在 Active Directory 环境中的集成,使域加入和服务注册的流程更加顺畅。
支持 Group Managed Service Accounts (gMSA):对于高级配置管理者,新版本加入了对 Group Managed Service Accounts (gMSA) 的支持。这项功能为跨多个服务器的服务账户管理提供了更安全、易管理的方式,非常适合大规模部署。
为未来增强功能做铺垫:v4.21 还为未来的功能增强做好了准备。例如新的 vfs-to-cephfs 桥接模块将取代旧的 CephFS 实现,承诺提供更好的性能和更强的安全选项。
v4.22 版于2025年3月上旬发布,这次更新带来了多项改进,尤其是在性能优化和身份验证方面。大致如下:
SMB3 目录租约(Directory Leases):提升性能,减少请求
本次更新的一大亮点是 SMB3 目录租约(Directory Leases),这项功能允许客户端缓存目录列表,从而减少对服务器的 SMB 请求量。这对于高流量环境来说,能够带来显著的性能提升。需要注意的是,该功能默认 在非集群模式下启用,但 在集群模式下关闭,其行为可通过新的全局参数 smb3 directory leases 进行配置。
Azure Entra ID 认证支持(实验性)
v4.22 还 实验性地 引入了 Azure Entra ID 认证,通过名为 himmelblaud 的 Rust 组件提供基本的身份验证支持。该功能可在 smb.conf 配置文件中启用,并新增了多个全局参数,例如 himmelblaud_sfa_fallback、himmelblaud_hello_enabled 和 himmelblaud_hsm_pin_path,方便用户进行个性化调整。
提升 Active Directory 相关操作的性能
在 Active Directory 相关操作方面,v4.22 增大了 LDB 索引缓存大小,显著加快了 离线 AD 操作 的速度,使 Samba 部署和架构升级的速度提高了数倍。此外,管理员现在可以使用 基于 TCP 的 LDAP rootDSE 查询 来获取域控制器信息,而不再依赖传统的 无连接 LDAP 查询(UDP 端口 389)。这种新方式在 防火墙阻止 UDP 流量 的环境下尤为有用。为了兼容不同的网络需求,Samba 还新增了 client netlogon ping protocol 参数,允许用户在 无连接 LDAP(CLDAP) 和 基于 TCP 的 LDAP 查询 之间进行切换。
弃用的旧功能
与每次重大更新一样,v4.22 也移除了部分过时功能,其中包括:
1.nmbd proxy logon —— 这一旧机制早已被 Samba4 内置的 NBT 服务器取代,因此被移除。
2.cldap port —— 由于 CLDAP 默认只使用 UDP 端口 389,过去允许配置自定义端口的功能已被移除,以避免历史实现中的不一致问题。
3.fruit:posix_rename —— 该功能曾用于 macOS 目录重命名,但由于与 Windows 客户端存在兼容性问题,因此已被废弃。
官方主页:http://www.samba.org/
该文章最后由 阿炯 于 2025-03-09 11:38:55 更新,目前是第 4 版。