使用 AD 身份验证从 Windows 10 工作站使用 Redhat IdM 身份验证访问 Samba

使用 AD 身份验证从 Windows 10 工作站使用 Redhat IdM 身份验证访问 Samba

我花了 5 天时间在 Google 上搜索、进行测试用例以及分析网络流量,以便有人能为我指明正确的方向或了解出了什么问题,然后在这里发布了这篇文章。

场景:
我们有一台在 CentOS 7.5 上运行的 samba 4.7 服务器,该服务器锁定到该特定操作系统版本以实现驱动程序兼容性,并加入由 RedHat IdM 为特定网络管理的域(我们称之为区域 B)。在另一个网络上,我们有 Windows 10 桌面、Ubuntu 桌面和 Windows 服务器(一些具有共享),它们加入到 Active Directory 域(我们称之为区域 A)。这两个域具有信任关系,因此来自 AD 区域的用户可以在位于 RedHat IdM 区域内的服务器上进行身份验证。

Samba ---> RedHat IdM <--- 信任 ---> Windows AD <--- Windows 10 / Ubuntu 18.04 / Windows Server

当前问题:
区域 A 中的 Windows 客户端无法验证区域 B 中的 Samba 服务器上的文件共享,但区域 A 中的 Linux 桌面可以。Windows 客户端可以使用 AD 林中的凭据成功通过 SSH 连接到 Samba 服务器。

目前已完成的故障排除:
1)进行了大量谷歌搜索,但无果而终。(也许我的谷歌搜索最近不太好)

2) 尝试使用未应用任何 GPO 的 Windows 10 客户端,结果导致失败。

3)比较从以下位置捕获的数据包:
Ubuntu Desktop 18.04(区域 A)到 Samba 服务器(区域 B)[成功]
Windows 10(区域 A)到 Samba 服务器(区域 B)[失败]
Windows 10(区域 A)到 Windows 服务器文件共享(区域 A)[成功]

数据包捕获的结果表明客户端和服务器协商使用的协议,在本例中为 SMB3_02。

协商后,Ubuntu 客户端立即向 samba 服务器发送会话设置请求,而 Windows 客户端则挂起并在几秒钟后发送超时。

在区域 A 捕获中将 Windows 10 添加到 Windows Server 时,客户端和服务器协商协议(SMB3_02),然后 Windows 10 发送会话设置请求并成功向 Windows 服务器进行身份验证。

Samba 配置全局部分(其他部分只有路径/ro 设置):

[global]
   workgroup = ZONEB
   realm = ZONEB.LAB
   dedicated keytab file = FILE:/etc/samba/samba.keytab
   kerberos method = dedicated keytab
   log file = /var/log/samba/log.%m
   security = ads
   max protocol = SMB3_02
   create mask = 0660
   directory mask = 0770

答案1

如果有人遇到这种情况,可以采用以下解决方案。

以下 DNS 条目不存在,并且从未出现在 IdM 端。

_kerberos._tcp.ZONEA._sites.dc._msdcs.ZONEB.LAB

我们添加了 ZONEB.LAB IdM DC 的条目,一切都开始正常工作。

相关内容