我正在为一位即将在 1400 个远程站点部署 samba4 的客户设置测试环境,但遇到了一个问题。毕竟,我的工作就是遇到问题然后解决问题。
活动目录
- 林根和单域:main.adlab.netdirect.ca
- 在 Windows 2008 R2 上创建
- 2008 年法甲联赛
- 2008 德国足球甲级联赛
总部
- AD1:Windows 2008 R2 DC
- AD2:Windows 2008 R2 DC
- Windows 7 专业版客户端
分支机构
- SLES11SP2(已全面更新!)配备 Samba 4(来自 sernet 的 4.1.1-7.suse111 软件包)
- Samba 4 配置为 RODC
我已经配置了密码复制策略,允许某些帐户缓存在 RODC 上,然后将这些帐户填充到 RODC 中:
sles-shire:~ # samba-tool rodc preload 'win7-shire$' --server main.adlab.netdirect.ca
Replicating DN CN=WIN7-SHIRE,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca
Exop on[CN=WIN7-SHIRE,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca] objects[1] linked_values[2]
sles-shire:~ # samba-tool rodc preload 'win7-shire-2$' --server main.adlab.netdirect.ca
Replicating DN CN=WIN7-SHIRE-2,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca
Exop on[CN=WIN7-SHIRE-2,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca] objects[1] linked_values[1]
sles-shire:~ # samba-tool rodc preload 'bilbo' --server main.adlab.netdirect.ca
Replicating DN CN=Bilbo Baggins,OU=Shire,OU=Offices,DC=main,DC=adlab,DC=netdirect,DC=ca
Exop on[CN=Bilbo Baggins,OU=Shire,OU=Offices,DC=main,DC=adlab,DC=netdirect,DC=ca] objects[1] linked_values[2]
我知道这些凭据被缓存在 RODC 上,因为如果我删除站点链接,我就可以使用缓存的用户登录,但不能使用其他用户登录:
michael@sles-shire:~> smbclient //sles-shire.main.adlab.netdirect.ca/sysvol -U michael
Enter michael's password:
session setup failed: NT_STATUS_IO_TIMEOUT
michael@sles-shire:~> smbclient //sles-shire.main.adlab.netdirect.ca/sysvol -U bilbo
Enter bilbo's password:
Domain=[MAIN] OS=[Unix] Server=[Samba 4.1.1-SerNet-SuSE-7.suse111]
smb: \> ls
. D 0 Mon Nov 18 16:09:44 2013
.. D 0 Mon Nov 18 16:11:15 2013
main.adlab.netdirect.ca D 0 Wed Nov 20 17:54:13 2013
因此身份验证工作正常!但当我尝试登录 Windows 7 PC (WIN7-SHIRE) 时,出现错误:
发生了一个内部的错误。
哎呀。谢谢。如果我输入错误的密码,我会得到:
用户名或密码不正确。
因此身份验证正在进行,但 Windows 7 不喜欢某物。我在事件日志中看到这些错误,我认为它们与此问题有关:
安全系统检测到服务器 ldap/sles-shire.main.adlab.netdirect.ca 的身份验证错误。身份验证协议 Kerberos 的故障代码为“发生内部错误。(0xc00000e5)”。
安全系统检测到服务器 DNS/sles-shire.main.adlab.netdirect.ca 的身份验证错误。身份验证协议 Kerberos 的故障代码为“发生内部错误。(0xc00000e5)”。
如果我是已经登录并尝试使用网络服务我得到:
安全系统检测到服务器 cifs/sles-shire.main.adlab.netdirect.ca 的身份验证错误。身份验证协议 Kerberos 的故障代码为“发生内部错误。(0xc00000e5)”。
我的服务器上的 krb5.conf:
[libdefaults]
default_realm = MAIN.ADLAB.NETDIRECT.CA
dns_lookup_realm = true
dns_lookup_kdc = true
[realms]
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
真正的关键在于:
当网站链接向上。我可以使用以下帐户登录域 PC:不是缓存在 RODC 上,但如果它们在 RODC 上,我会收到相同的错误。
我已确保 AD DNS 中所有适当的 SRV 记录都已到位。我通过将分支机构中的 Windows 2008 R2 DC 提升为 RODC 角色并确保 Windows 和 Samba RODC 中存在所有适当的 DNS 记录来确保这一点。
(有些需要手动添加,因为它们还没有被 Samba 添加:
SRV _ldap._tcp.${SITE}._sites.DomainDnsZones.${DNSDOMAIN} ${HOSTNAME} 389
SRV _ldap._tcp.${SITE}._sites.ForestDnsZones.${DNSFOREST} ${HOSTNAME} 389
) (必须关闭括号)
那么…哪里出了问题?我该如何修复它?
SPN 信息
> dsquery * "CN=SLES-SHIRE,OU=Domain Controllers,DC=main,DC=adlab,DC=netdirect,DC=ca" -attr servicePrincipalName
servicePrincipalName
ldap/SLES-SHIRE;
ldap/4116d553-d66b-4c8b-9a60-90380ac69c04._msdcs.main.adlab.netdirect.ca;
ldap/SLES-SHIRE.main.adlab.netdirect.ca/main.adlab.netdirect.ca;
HOST/SLES-SHIRE.main.adlab.netdirect.ca/main.adlab.netdirect.ca;
ldap/SLES-SHIRE.main.adlab.netdirect.ca;
ldap/SLES-SHIRE.main.adlab.netdirect.ca/MAIN;
HOST/SLES-SHIRE.main.adlab.netdirect.ca/MAIN;
RestrictedKrbHost/SLES-SHIRE.main.adlab.netdirect.ca;
RestrictedKrbHost/SLES-SHIRE;
GC/SLES-SHIRE.main.adlab.netdirect.ca/main.adlab.netdirect.ca;
HOST/SLES-SHIRE.main.adlab.netdirect.ca;HOST/SLES-SHIRE;
> dsquery * "CN=WIN7-SHIRE,CN=Computers,DC=main,DC=adlab,DC=netdirect,DC=ca" -attr servicePrincipalName
servicePrincipalName
TERMSRV/WIN7-SHIRE.main.adlab.netdirect.ca;
TERMSRV/WIN7-SHIRE;
RestrictedKrbHost/WIN7-SHIRE;
HOST/WIN7-SHIRE;
RestrictedKrbHost/WIN7-SHIRE.main.adlab.netdirect.ca;
HOST/WIN7-SHIRE.main.adlab.netdirect.ca;
答案1
虽然可能性不大,但我会尝试:在我看来,在安全级别设置方面,win7 和基于 samba 的 RODC 之间存在一些不兼容性。我还认为 win 7 上的一些默认安全设置过于严格,samba 不支持。我将尝试通过更改本地策略来放宽 win 7 上的安全设置:计算机配置->Windows 设置->安全设置->本地策略->安全选项。
通常的嫌疑人包括但不限于:
Microsoft 网络客户端:对通信进行数字签名(如果服务器同意) Microsoft 网络客户端:向第三方 SMB 服务器发送未加密的密码 网络安全:LAN Manager 身份验证级别 网络安全:LDAP 客户端签名要求 网络安全:基于 NTLM SSP(包括安全 RPC)的客户端的最低会话安全性 要求消息保密性 要求 NTLMv2 会话安全性 要求 128 位加密
答案2
看起来问题可能与探索性/测试安装中的所有死角和松散的电线有关。
从实际配置过程恢复环境并重新进行 AD 和 RODC 设置后,该场景完美运行,没有任何问题!