Samba 4.13.17升级后Windows 10域登录出现Kerberos错误求助
解决方案
1. 调整Kerberos加密套件优先级(临时兼容方案)
更新后的krb5库可能对加密套件协商逻辑做了调整,与部分更新后的Win10客户端存在AES兼容性问题。修改/etc/krb5.conf,将rc4-hmac移至加密套件列表最前端:
[libdefaults] default_realm = DD.LAN default_tgs_enctypes = rc4-hmac aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des-cbc-crc des-cbc-md5 default_tkt_enctypes = rc4-hmac aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des-cbc-crc des-cbc-md5 permitted_enctypes = rc4-hmac aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des-cbc-crc des-cbc-md5
修改完成后重启相关服务:
systemctl restart krb5-kdc krb5-admin-server smbd nmbd winbind
2. 重置域控制器计算机账户密码
KRB_AP_ERR_MODIFIED错误的核心诱因之一是服务账户密码与KDC存储的密码不一致,更新操作可能触发了同步异常。执行以下命令重置:
# 使用net rpc工具重置信任密码 net rpc changetrustpw -U administrator%<你的域管理员密码> # 或者用samba-tool直接设置计算机账户密码 samba-tool computer password set DD-02A$ -U administrator
注意替换<你的域管理员密码>为实际密码,DD-02A$为受影响服务器的计算机账户名。
3. 检查并清理重复SPN记录
服务器名称大小写不一致(如dd-02a$和DD-02A$)可能导致重复SPN,引发令牌解密失败。执行以下命令排查:
ldbsearch -H /var/lib/samba/private/sam.ldb 'servicePrincipalName=*DD-02A*' servicePrincipalName
若发现重复记录,使用samba-tool删除多余条目:
samba-tool spn delete <重复的SPN内容> DD-02A$ -U administrator
4. 强制Win10客户端使用RC4-HMAC加密(针对受影响客户端)
若服务器端调整后仍有问题,在受影响的Win10客户端修改注册表:
- 打开注册表编辑器,导航至
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters - 创建DWORD值
SupportedEncryptionTypes,设置值为0x8000000(对应RC4-HMAC) - 重启客户端计算机
5. 回滚Kerberos库版本(应急方案)
若以上方案均无效,可暂时回滚krb5相关库至更新前版本:
apt install libkrb5-3=1.17-6ubuntu4.1 libgssapi-krb5-2=1.17-6ubuntu4.1 libkdb5-9=1.17-6ubuntu4.1 libk5crypto3=1.17-6ubuntu4.1 krb5-locales=1.17-6ubuntu4.1 krb5-user=1.17-6ubuntu4.1 libkadm5srv-mit11=1.17-6ubuntu4.1 libkrb5support0=1.17-6ubuntu4.1 libgssrpc4=1.17-6ubuntu4.1 libkadm5clnt-mit11=1.17-6ubuntu4.1
回滚后重启服务,观察是否恢复正常。
原因分析
- 本次更新的krb5库(1.17-6ubuntu4.2)调整了加密套件协商逻辑,与部分更新后的Win10客户端在AES加密套件兼容上出现冲突。
- Samba升级后,计算机账户密码同步机制出现临时异常,导致KDC存储的密码与服务器本地密码不匹配。
- 服务器名称大小写不一致引发重复SPN记录,干扰Kerberos令牌解密流程。
内容的提问来源于stack exchange,提问作者Soused
相关产品推荐
相关产品推荐

