我一直在尝试在 CentOS 7 机器上设置 SSSD,以便加入 Windows AD 进行用户管理。
我已设法使 Kerberos 独立于此设置运行,使用 LDAPS 作为传输协议。我还已使用 realm join 成功将计算机加入域。
这样就自动配置了sssd.conf,但是启动sssd之后发现后端启动失败。
我在日志中看到的唯一相关内容是:
(Thu Mar 21 19:45:43 2019) [sssd[be[SERC.LOCAL]]] [sasl_bind_send] (0x0080): Extended failure message: [SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Server not found in Kerberos database)]
我已经验证了相关机器上的 Kerberos rdns 已禁用。我还确保相关服务器存在于域中。两台机器上的时间也同步。
从域控制器获取服务器帐户的 TGT 似乎没有任何问题,尽管唯一的服务器端验证是 4768 事件,该事件似乎失败了。SSSD 日志表明它成功了,但是:
(Fri Mar 22 01:29:44 2019) [[sssd[ldap_child[13180]]]] [ldap_child_get_tgt_sync] (0x2000): credentials initialized
(Fri Mar 22 01:29:44 2019) [[sssd[ldap_child[13180]]]] [ldap_child_get_tgt_sync] (0x2000): keytab ccname: [FILE:/var/lib/sss/db/ccache_MYDOMAIN.LOCAL_TUJGh8]
(Fri Mar 22 01:29:44 2019) [[sssd[ldap_child[13180]]]] [sss_child_krb5_trace_cb] (0x4000): [13180] 1553178584.546015: Initializing FILE:/var/lib/sss/db/ccache_MYDOMAIN.LOCAL_TUJGh8 with default princ [email protected]
(Fri Mar 22 01:29:44 2019) [[sssd[ldap_child[13180]]]] [sss_child_krb5_trace_cb] (0x4000): [13180] 1553178584.546016: Storing [email protected] -> krbtgt/[email protected] in FILE:/var/lib/sss/db/ccache_MYDOMAIN.LOCAL_TUJGh8
(Fri Mar 22 01:29:44 2019) [[sssd[ldap_child[13180]]]] [ldap_child_get_tgt_sync] (0x2000): credentials stored
(Fri Mar 22 01:29:44 2019) [[sssd[ldap_child[13180]]]] [ldap_child_get_tgt_sync] (0x2000): Got KDC time offset
在我看来,这似乎是 TLS 问题。为 AD 配置 sssd 似乎强制使用端口 389,并使用 GSSAPI 进行加密。我尝试设置 ldap_uri 以使用 ldaps 明确连接,但这会被忽略,除非我将配置恢复为使用 ldap 进行所有操作,这样可以正常工作,但无法识别 AD 架构。
我不确定这里还能尝试什么。在线解决方案都指向 DNS 问题,但我确定 DNS 配置正确。
如果有帮助的话,SSSD 配置(其中一些是为了让 ldap 运行而添加的,因此可能有一些残留选项):
[domain/MY_DOMAIN.LOCAL]
debug_level=10
# enumerate = true
ad_hostname = SOME_COMPUTER.F.Q.D.N
ad_server = DOMAIN_CONTROLLER
ad_domain = MY_DOMAIN.LOCAL
auth_provider = ad
chpass_provider = ad
access_provider = ad
ldap_uri = ldaps://DOMAIN_CONTROLLER:636
ldap_tls_cacert = /etc/openldap/certs/mycert.cer
ldap_sasl_authid=SOME_COMPUTER$@MY_DOMAIN.LOCAL
ldap_sasl_canonicalize = false
ldap_schema = ad
# #krb5_realm = MY_DOMAIN.LOCAL
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
# #krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
access_provider = ldap
ldap_schema = rfc2307bis
提前致谢。