我正在尝试使用 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
我进行了更新,然后退出领域,然后加入领域。这帮我解决了问题。我按照互联网上能找到的所有方法(包括上述方法)操作,但似乎什么都没起作用,直到我这样做。
祝你好运。