为什么使用 testsaslauthd 时会出现“在 Kerberos 数据库中未找到服务器”的情况?

为什么使用 testsaslauthd 时会出现“在 Kerberos 数据库中未找到服务器”的情况?

我正在尝试使用 OpenLDAP 通过 SASL 设置 Kerberos 身份验证。据我了解,我需要/etc/krb5.keytab从我正在使用的 KDC 中获取主机密钥表,然后{SASL}user@realm获取给定用户的 LDAP 密码属性。从>没有人>用户101(带密码)似乎可以与 Linux KDC 配合使用。通过以下方式测试 SASLtestsaslauthd也成功了:用户101使用 Linux KDC。

然而,一旦我将密钥表和服务器切换到生产 KDC(下面的 2012 Server AD.MYCORP.COM),我就会得到Kerberos 数据库中未找到服务器在 auth 日志中。一些搜索显示 rDNS 问题可能是罪魁祸首。我添加了rdns = false我的krb5.conf和其他一些设置,试图确定这一点,但没有成功。我可以得到 AD.MYCORP.COM 的正向 DNS 回复,但反向使用不同的主机名返回。

Windows 管理员向我发送了这个错误日志,其时间戳与 Linux 身份验证日志中的错误最接近。这似乎表明存在加密算法问题,而不是 DNS。他正在重置服务帐户的密码,但尚未收到回复: 在处理目标服务器 host/auth-test-ldap.mynet.net 的 TGS 请求时,帐户[电子邮件保护]没有合适的密钥来生成 Kerberos 票证(丢失的密钥的 ID 为 8)。请求的 etype 为 18。帐户可用的 etype 为 23 -133 -128 18 17。更改或重置 SVC-KEYTAB-MYNET2 的密码将生成正确的密钥。

DNS 最有可能是问题所在吗?还有其他方法可以在 Linux 端进行调试吗?使用 Windows KDC 和 keytab 的配置和日志如下。

/etc/krb5.conf

[libdefaults]
   default_realm = AD.MYCORP.COM
   krb4_config   = /etc/krb.conf
   krb4_realms   = /etc/krb.realms
   kdc_timesync  = 1
   ccache_type   = 4
   forwardable   = true
   proxiable     = true

   default_tkt_enctypes = aes256-cts-hmac-sha1-96
   default_tgs_enctypes = aes256-cts-hmac-sha1-96
   permitted_enctypes   = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md

   rdns             = false
   dns_lookup_realm = false
   dns_lookup_kdc   = false

[login]
   krb4_convert     = true
   krb4_get_tickets = false

[realms]
   AD.MYCORP.COM = {
                   kdc          = ad.mycorp.com
                   admin_server = ad.mycorp.com
                 }

[domain_realm]
   .ad.mycorp.com = AD.MYCORP.COM
   ad.mycorp.com  = AD.MYCORP.COM

kinit 与 keytab 和 host principal 一起工作

# kinit -k host/[email protected]

klist 缓存,看起来不错

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: host/[email protected]

Valid starting       Expires              Service principal
11/02/2020 09:10:48  11/02/2020 19:10:48  krbtgt/[email protected]
        renew until 11/03/2020 09:10:48

测试用户授权

# read -s PASS; testsaslauthd -u user101 -p $PASS -s ldap

/var/log/auth.log

Nov  2 09:11:07 auth-test-ldap saslauthd[714]: auth_krb5: krb5_mk_req(): Server not found in Kerberos database (-1765328377)
Nov  2 09:11:07 auth-test-ldap saslauthd[714]: auth_krb5: k5support_verify_tgt
Nov  2 09:11:07 auth-test-ldap saslauthd[714]: do_auth         : auth failure: [user=user101] [service=ldap] [realm=] [mech=kerberos5] [reason=saslauthd internal error]

答案1

我进行了更新,然后退出领域,然后加入领域。这帮我解决了问题。我按照互联网上能找到的所有方法(包括上述方法)操作,但似乎什么都没起作用,直到我这样做。

祝你好运。

相关内容