tl;dr - 我如何使用领域或 sssd(未安装 klist)检查用户的 kerberos 票证的详细信息以确认它们正在按照我试图配置的方式进行更新?
嗨 - 我在 Debian 11 系统上,该系统是 AD/域,并结合了 SSSD 和领域。值得注意的是,我没有任何软件包提供我在以前的平台上熟悉的“kinit”、“klist”等命令。
每次域用户登录时,他们都会获得一张新的 kerberos 票证,我相信通过在 /tmp 中创建一个新文件来判断,类似于“/tmp/krb5cc_1922807467_vhNkj5”。这允许他们使用 Windows 凭据访问网络资源。我注意到门票似乎会在 12-24 小时后过期,因此我正在寻找一种方法来请求有效期更长的门票,直到我的域将提供的最大值为止,和/或自动更新现有门票并获得新门票。这样我就可以允许用户使用 cron 安排任务并保证有效的票证可用。
我在 /etc/sssd/sssd.conf 中编辑了一些设置,试图增加可再生生命周期并设置票据的更新间隔并重新启动 sssd 服务。现在我一直在尝试确认这些设置已被采用——我无法找到一种方法来列出活动票证的详细信息。我可以看到我每次登录时都在创建我的票证文件,但无法判断它是否在我为测试目的设置的短时间间隔内更新。
有没有办法使用 sssd、realm 或我可能已经安装/启用的其他东西来显示用户的票证状态/详细信息?如果没有,是否有另一个我可以安装的包(例如提供 klist 的东西)不会破坏我现有的领域/sssd 配置并且不需要 AD 管理员凭据?最终,我只想要一种方法来确认我的尝试是否有效。
安装 klist。对于 MIT Kerberos,包是
krb5-user
无害的;由于 SSSD 无论如何需要,它的依赖项(krb5 库)已经安装。在不太可能的情况下,您的系统可能正在使用 Heimdal Kerberos(这不是默认设置,但受Debian 支持),等效的软件包将是
heimdal-clients
.最后,您可以将
scp
票证缓存到另一个系统并klist -c <path>
在那里运行(基于文件的缓存格式甚至在 MIT Krb5 和 Heimdal 系统之间也是兼容的)。不,它们旨在与 Kerberos 发行版中的标准工具一起工作,即您通常希望安装常规工具
klist
。24 小时通常是我期望域提供的最长期限。(更长的生命周期会增加被盗门票的影响,如果这种情况发生的话,因为不可能撤销仍然有效的门票——这就是为什么他们有一个单独的“可更新”生命周期,需要再次联系 KDC 以延长有效期。)
但是,最长可更新生命周期通常为 7 或 14 天,之后有必要再次提供凭证(密码、智能卡)。让 cronjobs 在无人看管的情况下工作更长时间需要系统存储初始凭据(例如 Windows 服务或计划任务如何要求您以明文形式提供帐户密码)。
除了 SSSD 之外,还有几种现有方法可以做到这一点。(实际上,我不确定 Debian 中的 SSSD 版本是否可以自行更新用户票证;我认为这是后来添加的,即便如此,也仅适用于 SSSD 管理的
KCM:
缓存类型,而不适用于基于文件的缓存。)依赖交互式登录期间获得的票证很可能没有意义(因为迟早有人会在票证过期前忘记登录)。相反,让用户明确存储他们的实际密码——对于 Linux,它将以密钥表的形式存储派生密钥(而不是明文密码)。毕竟,如果您信任系统为用户永久存储 Kerberos TGT,那么也可以信任同一个系统来保护该用户的密码。
一旦你有了一个 keytab(可以使用 的
addent -f
子命令创建ktutil
),有多种方法可以让 cronjob使用该 keytab:gssproxy 守护进程,它有点像 ssh-agent,但用于 Kerberos。它带有一个 NFS 示例,它使用存储在的密钥表代表
/var/lib/gssproxy/clients/<uid>.keytab
配置为使用它的程序自动获取票证(对于使用常规 libkrb5 的程序,这意味着GSS_USE_PROXY=1
在环境中)。gssproxy 的优势之一是可以为其提供用户自己无法访问的密钥表,类似于 ssh-agent 不允许提取解密密钥的方式。
最近的 libkrb5 中内置的“客户端凭据”功能允许您将密钥表放置在
/var/lib/krb5/user/<uid>/client.keytab
(或由 定义的某些自定义位置KRB5_CLIENT_KTNAME=
),libkrb5 将使用它来根据需要获取票证。与 gssproxy 不同,这确实需要作业可读密钥表。
k5start
软件包中的工具,kstart
一个使用密钥表获取票证并在其运行过程中保持票证更新的程序。一个基本的
kinit -k -t <keytab>
cronjob,每隔几个小时重新获取一次票证。(如果你确实想依赖现有的缓存,同一个
kstart
Debian 软件包也有一个krenew
类似于k5start
except 的工具,只是用来更新现有的票证。)