Kerberos 和 LDAP 登录

Kerberos 和 LDAP 登录

我想手动登录到 ldap 服务器。身份验证使用 Kerberos。我在那里注册了用户名和密码。

kinit username@servername

它工作正常,并创建了一个有效的 TGT,我可以使用来查看

klist

但之后该怎么做呢?如何使用 TGT 连接到 ldap 服务器?

我读到过,这里需要 keytab 文件。但我在 /etc/ 中没有生成 krb5.keytab 文件。

答案1

一如既往,“视情况而定”。我假设您正在使用某种 Linux。

对于一次性身份验证,只要您的 ldap 客户端支持 GSSAPI,您就可以使用 GSSAPI 机制。因此,一旦您成功 kinit 并且拥有 tgt 票证,您就可以使用类似这样的方法(使用公开可用的 freeipa 演示 (http://www.freeipa.org/page/Demo):

$ kinit [email protected]
$ kinit [email protected]
Password for [email protected]: 
$ klist 
Ticket cache: KEYRING:persistent:1000:1000
Default principal: [email protected]

Valid starting       Expires              Service principal
04/20/2016 18:30:56  04/21/2016 18:30:51  krbtgt/[email protected]
    renew until 04/27/2016 18:30:51
]$ ldapsearch -LLL -Y GSSAPI -h ipa.demo1.freeipa.org -b cn=users,cn=accounts,dc=demo1,dc=freeipa,dc=org "(nsaccountlock=TRUE)" uid nsaccountlock
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 56
SASL data security layer installed.
[@lap0405 ~]$ klist 
Ticket cache: KEYRING:persistent:1000:1000
Default principal: [email protected]

Valid starting       Expires              Service principal
04/20/2016 18:31:09  04/21/2016 18:30:51  ldap/[email protected]
    renew until 04/27/2016 18:30:51
04/20/2016 18:31:09  04/21/2016 18:30:51  ldap/ipa.demo1.freeipa.org@
    renew until 04/27/2016 18:30:51
04/20/2016 18:30:56  04/21/2016 18:30:51  krbtgt/[email protected]
    renew until 04/27/2016 18:30:51

如您所见,我可以使用 kerberos 票证进行绑定,但没有结果,因为那里没有锁定的帐户。但它成功了。

使用 keybabs 并不复杂,但您需要先检索一个(或让别人为您检索一个)。执行此操作的方法因 kerberos 供应商而异(对于 AD kerberos,通常使用 ktpass.exe 获取它,在与 AD kerberos 通信的 Linux 上,您可以使用 msktutil (https://fuhm.net/software/msktutil/) 不是所有发行版都提供的标准软件,但效果非常好,对于 freeipa kerberos 域上的 linux 主机,您可以使用 ipa-getkeytab (http://www.freeipa.org/page/V4/Keytab_Retrieval),在标准 MIT kerberos 上,您可以使用 ktutil (http://web.mit.edu/kerberos/krb5-latest/doc/admin/admin_commands/ktutil.html)。

获得 keytab 后,需要使用 kinit -k -t /path/to/keytab_file -c /path/to/kerberos/cache[电子邮件保护]

之后,您可以使用 KRB5CCNAME 环境变量,您需要在脚本中使用 -c 开关将其指向您保存 keytab 缓存的路径,以便向 ldap 服务器进行身份验证。显然,票证将在几个小时后过期,因此您需要使用 cron 或 k5start 进行更新。

您不想使用 /etc/krb5.keytab 文件;这是主机文件(计算机加入 Kerberos 域时也是用户)。您需要一个特定于您需求的应用程序/用户密钥表。

相关内容