Samba 4.24.0 发布

经过六个月的开发,Samba 4.24.0 正式发布。它延续了 Samba 4 的发展,提供功能齐全的域控制器和 Active Directory 服务,兼容 Windows Server,并能为所有受支持的 Microsoft Windows 客户端版本(包括 Windows 11)提供服务。Samba 4 是一款多功能服务器产品,还提供文件服务器、打印服务和身份服务器 (winbind)。该项目的代码使用 C 语言编写,并以 GPLv3 许可证发布。

Samba 4.24 的主要变化:

  • 新增了一个 VFS 模块 vfs_aio_ratelimit,用于限制异步输入/输出 (AIO) 操作的速率。限制值可以以字节/秒或操作/秒为单位指定。当超过指定的限制值时,该模块会开始在异步操作中引入人为延迟,以维持在指定的上限值。
  • vfs_ceph_new VFS 模块现在支持 Keybridge RPC 协议和 FSCrypt 模式,用于加密 CephFS 文件系统中的数据和文件名。加密可以按目录启用。
  • vfs_streams_xattr VFS 模块允许在 Linux 系统上将 NTFS 备用数据流存储在扩展文件属性 (xattr) 中,该模块已更新,新增了“streams_xattr:max xattrs per stream”设置。此设置决定了用于数据存储的 xattr 文件的最大数量。在 Linux 系统上,xattr 的大小限制为 65536 字节,但 XFS 允许将多个 xattr 与单个文件关联,从而允许多个 xattr 存储最多 1 MB 的备用数据。
  • 已实现对身份验证相关信息的审计支持。“dsdb_password_audit”和“dsdb_password_json_audit”调试类已添加,用于在日志中反映 Active Directory 属性 altSecurityIdentities、dNSHostName、msDS-AdditionalDnsHostName、msDS-KeyCredentialLink 和 servicePrincipalName 的更改。
  • 新增对外部密码管理系统 Microsoft Entra ID 和 Keycloak 的支持,这些系统在更改密码时使用密码重置操作(SSPR,密码重置),而无需将旧密码传输到控制器。 领域为了强制执行密码过期策略,密码重置过程中会传递额外的参数(“密码策略提示”),从而使该操作被视为常规密码更改。Samba 现在在应用与密码相关的本地策略时会考虑这些参数。
  • 新增了对 Kerberos PKINIT KeyTrust 身份验证机制的支持。这使得“Windows Hello for Business Key-Trust 登录”方法能够与基于 Samba 和 Heimdal 的 KDC 域控制器上的 PKINIT 身份验证以及自签名密钥配合使用。samba-tool 实用程序中新增了“user|computer keytrust”命令,用于添加和查看公钥。公钥信息使用 msDS-KeyCredentialLink 属性存储在帐户中。
  • 基于 Samba 的域控制器和 Heimdal KDC 现在支持 Kerberos PKINIT 协议扩展,用于密钥映射(“Windows 强而灵活的密钥映射”),该扩展用于公钥身份验证。默认情况下,仅允许强制执行精确证书绑定(“强证书绑定强制执行 = 完全”),但也支持灵活映射(“强证书绑定强制执行 = 兼容性”),允许使用比用户帐户更新的证书。帐户的证书映射信息存储在 altSecurityIdentities 属性中。
  • 新增对“Kerberos PKINIT SID”协议扩展的支持,从而可以使用带有对象 SID 的证书进行身份验证。“user|computer generate-csr”命令已添加到 samba-tool 实用程序中,用于签署证书。
  • 默认的密钥分发中心 (KDC) 实现会返回一个包含用户权限数据的 PAC (权限属性证书) 结构,无论客户端请求中是否指定了 PA-PAC-REQUEST 字段。要恢复到之前的行为,可以使用“kdc always generate pac = no”设置。
  • KDC 新增了一个名为“kdc require canonicalization”的设置,当设置为“yes”时,客户端在访问时必须请求用户名规范化。 伺服器 身份验证 (AS_REQ)。如果未请求规范化,服务器将返回“用户未知”错误。在包含 Windows 用户的网络中,启用此新设置不会造成任何问题,因为 Windows 客户端默认始终请求规范化。

    强制规范化可以防范“美元票据”攻击。这种攻击利用了用户名可以以不同形式指定(“user”和“user$”)以及在规范化和非规范化表示中处理方式不同的特性。攻击的本质是,攻击者可以在 AD 中创建一个名为“root$”的计算机帐户,并使用该帐户向 KDC 发送请求,将用户名从“root”改为“root$”,从而获取票据。由于 KDC 无法找到用户“root”,因此会以用户“root$”的身份处理请求,并颁发一个票据,该票据可用于通过 SSH 或 NFS 以 root 用户身份连接到运行 SSSD 的 Linux 服务器。

  • 针对“美元票据”攻击,KDC 已针对禁用强制名称规范化请求的配置(默认情况下启用“kdc require canonicalization = no”)添加了变通方案。默认情况下,如果客户端未请求规范化且未找到要检查的名称,服务器会通过在名称后附加“$”字符来执行额外检查。新增的设置“kdc name match implicit dollar without canonicalization = no”允许您禁用此行为,并仅执行显式检查(在上述攻击的上下文中,服务器在请求“root”时将不会检查名称“root$”)。
  • 默认情况下,Heimdal KDC 仅向 Kerberos 服务发送规范化名称(PAC 中的 sAMAccountName),而不是原始 CNAME 值。要恢复旧的行为,请使用“krb5 acceptor report canonical client name = no”设置。
  • 为了完全防止美元票据攻击,我们建议设置以下设置:强制执行强证书绑定、完整 KDC、始终包含 PAC、是、KDC、要求规范化、是。
  • 为了阻止漏洞 CVE-2026-20833,默认 KDC 设置中的域加密方法已更改为 AES(“kdc default domain supported enctypes”设置已设置为“aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96”)。

来源: opennet.ru

添加评论