自动 Kerberos 票证续订(无限期)

自动 Kerberos 票证续订(无限期)

我目前正在将我们的环境从 NIS 切换到 Kerberos + LDAP。

在这次迁移过程中,我遇到了以下情况。

我们通过 NFS 安装我们的家,这显然也应该采用 Kerberos 方式。但是,由于我们的用户都在终端服务器上登录,并且通常不会注销,而是暂停他们的会话或在后台运行长时间运行的任务,这会导致 Kerberos 票证迟早会过期,从而使 NFS 共享不可用。

为用户自动更新这些票的最佳选择是什么?

此外,我还想为以下情况做好准备:用户出差但仍在运行他们的工作(这可能比最长的 Kerberos 更新时间还要长),因此我需要为该用户获取一张全新的票证。在这种情况下,最好的选择是什么,而不会大幅延长票证的默认最大更新时间?

答案1

2018 年即将结束,我遇到了和你一样的问题。经过一番挖掘,我可以写一篇文章供后人参考。

tl; dr:

  • “无限更新”是不可能的,而且可能永远不会实现
  • 如果你使用密码登录,SSSD 将更新票证
  • SSSD 将在未来的某个时间点续订所有票证

首先,您不能“无限期地”使用。Kerberos 票证的最大可更新寿命是 KDC 服务器设置,没有任何东西可以让您在此时间之后更新一张票证。您唯一能做的就是存储用户凭据并代表他们请求一张新的票证。

话虽如此,你不应该这样做。你很可能正在运行“系统安全服务守护进程”,即 SSSD。如果你这样做了,你可以使用内置的续订选项krb5_renew_intervalkrb5_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_sssPAM模块,例如(但不限于):

  • 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)。

相关内容