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

Bla*_*aws 8 security linux nfs kerberos mitkerberos

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

在这次迁移期间,我现在遇到了以下情况。

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

为用户自动续订这些票证的最佳选择是什么?

此外,我想为用户离开旅行但仍在运行他们的工作(这可能比最长的 Kerberos 更新时间更长)的情况做好准备,因此我需要为该用户获取一张全新的票证。在这种情况下,如果不大量延长门票的默认最大续订时间,最好的选择是什么?

fat*_*yte 9

现在是 2018 年底,我遇到了和你一样的问题。经过一番挖掘,我可以为后验提供一篇文章。

tl; 博士:

  • “无限更新”不可能,也可能永远不会
  • 如果您使用密码登录,SSSD 将更新门票
  • SSSD 将在未来某个时候更新所有门票

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

话虽如此,你不应该这样做。您可能正在运行“系统安全服务守护程序”或 SSSD。如果这样做,您可以使用内置的续订选项krb5_renew_intervalkrb5_renewable_lifetime自动续订用户票证:

[domain/yourdomain.example.com]
krb5_renewable_lifetime = 90d
krb5_renew_interval = 500
Run Code Online (Sandbox Code Playgroud)

您可以查看man 5 sssd-krb5详细信息。使用这些设置,SSSD 将在您每次登录*时请求可更新的票证(最长有效期为 90 天),并且每 500 秒浏览一次票证列表* 并更新可更新的现有票证。

自原始客票起90天后,续订将失败,客票丢失。但是,如果您同时登录*,您将从 SSSD 获得一张新票 - 即使您在机器锁定屏幕中输入密码也是如此。

*) 到目前为止,太棒了。不幸的是,有一些问题适用。

在我写这篇文章的时候,SSSD 只能更新它自己请求的票证。这些都是通过pam_sssPAM 模块的登录,例如(但不限于):

  • su $USER在你的终端上打字
  • 通过图形外壳登录到您的系统
  • 通过图形外壳解锁屏幕
  • 使用PasswordAuthentication方法通过SSH登录。

现在这个列表中明显缺少的是:

  • 跑步 kinit
  • 使用PubkeyAuthentication方法通过SSH登录。
  • 使用GSSAPIAuthentication方法通过SSH登录。
  • GSSAPIDelegateCredentials选项打开时通过 SSH 登录。

现在这让事情变得很尴尬,目前它本质上意味着要么强迫用户输入密码,要么自己编写票证续订守护程序。我目前还没有找到另一种方法来完成这项工作,如果你找到了一种方法,请任何人发表评论。

然而,这可能会变得容易一些。

SSSD 现在提供了一个“kerberos 缓存管理器”,一个称为sssd-kcm的 KCM 。基本上,它是一个小型服务器,将在那里存储票证(KCM:当您运行时klist)而不是内核密钥环(KEYRING:当您运行时klist)或 /tmp 中的文件(FILE:当您运行时klist)。

在未来的某个时候,SSSD 有望在实现票证更新时更新所有票证(不仅仅是它自己请求的sssd-kcm票证)。这还没有发生,并且在 SSSD 错误跟踪器的issue 1723 中进行了跟踪。

如果您运行的是基于 Red Hat 的系统(RHEL、CentOS、Fedora),那么 SSHD 还需要学会尊重所选的缓存创建机制。这在 Red Hat bugtracker上的issue 1639376 中进行了跟踪。


str*_*ine 0

快速谷歌搜索给了我这个线程

如果您坚持永久的事情,您可以运行一个 cron 作业来定期获取新票证(使用 kinit)。