我目前正在将我们的环境从 NIS 切换到 Kerberos + LDAP。
在这次迁移过程中,我遇到了以下情况。
我们通过 NFS 安装我们的家,这显然也应该采用 Kerberos 方式。但是,由于我们的用户都在终端服务器上登录,并且通常不会注销,而是暂停他们的会话或在后台运行长时间运行的任务,这会导致 Kerberos 票证迟早会过期,从而使 NFS 共享不可用。
为用户自动更新这些票的最佳选择是什么?
此外,我还想为以下情况做好准备:用户出差但仍在运行他们的工作(这可能比最长的 Kerberos 更新时间还要长),因此我需要为该用户获取一张全新的票证。在这种情况下,最好的选择是什么,而不会大幅延长票证的默认最大更新时间?
答案1
2018 年即将结束,我遇到了和你一样的问题。经过一番挖掘,我可以写一篇文章供后人参考。
tl; dr:
- “无限更新”是不可能的,而且可能永远不会实现
- 如果你使用密码登录,SSSD 将更新票证
- SSSD 将在未来的某个时间点续订所有票证
首先,您不能“无限期地”使用。Kerberos 票证的最大可更新寿命是 KDC 服务器设置,没有任何东西可以让您在此时间之后更新一张票证。您唯一能做的就是存储用户凭据并代表他们请求一张新的票证。
话虽如此,你不应该这样做。你很可能正在运行“系统安全服务守护进程”,即 SSSD。如果你这样做了,你可以使用内置的续订选项krb5_renew_interval
并krb5_renewable_lifetime
自动续订用户票证:
[domain/yourdomain.example.com]
krb5_renewable_lifetime = 90d
krb5_renew_interval = 500
您可以查看man 5 sssd-krb5
了解详情。通过这些设置,SSSD 会在您每次登录时要求可续订票证(最长有效期为 90 天)*,并且每 500 秒浏览一次票证列表*并续订可续订的现有票证。
自原始票证发出 90 天后,续订将失败,票证将丢失。但是,如果您在此期间登录*,您将从 SSSD 获得一张新票证 - 即使您在机器锁定屏幕上输入密码也是如此。
*) 到目前为止,一切都很顺利。不幸的是,也存在一些问题。
在我写这篇文章的时候,SSSD 只能续订以下票:它自己要求。这些都是通过pam_sss
PAM模块,例如(但不限于):
su $USER
在终端上打字- 通过图形 shell 登录系统
- 通过图形界面解锁屏幕
- 使用方法通过SSH登录
PasswordAuthentication
。
现在,该列表中明显缺少的是:
- 跑步
kinit
- 使用方法通过SSH登录
PubkeyAuthentication
。 - 使用方法通过SSH登录
GSSAPIAuthentication
。 - 通过 SSH 登录,同时该
GSSAPIDelegateCredentials
选项处于开启状态。
现在,事情变得相当尴尬,目前来说,这实际上意味着要么你强迫用户输入密码,要么你自己编写一个票证更新守护程序。目前我还没有找到其他方法来实现这一点,如果你找到了方法,请评论。
然而,这可能会变得容易得多。
SSSD 现在提供了一个“kerberos 缓存管理器”,即所谓的sssd-kcm基本上,它是一个小型服务器,它将存储票证在那里(KCM:
当您运行时klist
)而不是内核密钥环(KEYRING:
当您运行时klist
)或 /tmp 中的文件(FILE:
当您运行时klist
)。
在未来的某个时候,SSSD 希望能够更新全部实现票证更新时,票证(不仅仅是它自己请求的票证)将被删除sssd-kcm
。这还没有发生,并且被跟踪在问题 1723在 SSSD 错误跟踪器上。
如果您运行的是 Red Hat 系统(RHEL、CentOS、Fedora),那么 SSHD 还需要学习尊重所选的缓存创建机制。这在问题 1639376在 Red Hat 错误跟踪器上。
答案2
通过快速谷歌搜索,我此主题
如果您坚持要永久保留,则可以运行 cron 作业,定期获取新票证(使用 kinit)。