PAM Ke​​rberos 和 RStudio

PAM Ke​​rberos 和 RStudio

我试图让 Kerberos PAM 提取票证,而不是在 CentOS 7 上的 RStudio 登录后销毁它。

我的rstudio文件/etc/pam.d/看起来像:

    #%PAM-1.0
    auth    required        pam_krb5.so retain_after_close debug
    session requisite       pam_krb5.so retain_after_close debug
    account required        pam_krb5.so debug

我知道 RStudio 与 PAM 堆栈通信良好,因为如果我删除第一行,RStudio 将无法登录。我还进行了其他操作,让我知道两者是同步的。

根据 RStudio 文档,如果我运行命令: pamtester --verbose rstudio <user> authenticate setcred open_session

输入密码后,会在/tmp调用中创建一张票证krb5cc_(uid),这正是我所期望的。我可以通过删除setcred告诉我这是关键组件的标志来使上面的 pamtester 行无法拉票。

查看 Keberos PAM 文档后发现,它的session执行效果与命令标志相同,auth但它使用命令pam_setcred(PAM_ESTABLISH_CRED)标志运行,这正是我想要的。同一文档说,如果我添加retain_after_close,则应保留票证。然而,这并没有发生,我什至不确定它是否真的在拉票。

感谢任何帮助,我已经尝试了 PAM 文件中几乎所有标志和参数的组合,但没有成功。 Kerberos 是一场噩梦。 LMK 我还能添加什么来帮助。不幸的是,日志文件没有用处,因为如果一行不被理解,PAM 会“默默地失败”,因此它们不会记录错误。

答案1

CentOS 的 pam_krb5 不支持retain_after_close。

答案2

我几乎逐字逐句地回答了同样的问题。结果是rstudio-server运行 Web 服务器的用户没有对/etc.

创建票证后,用户尝试写入该目录但无法写入。

测试仪工作正常,因为它是以提升的权限运行的。

答案3

伙计们,我刚刚意识到我已经弄清楚了这一点,但从未发布答案。简而言之,我要做的就是下载 MIT Kerberos 代码(用 C++ 编写,也称为 Black Magic)并找到将 kerberos 票证写到 /tmp 目录的代码部分,然后更改代码,以便它没有将 6 个随机字符添加到 Kerberos 票证的末尾,也没有注释掉任何涉及删除或销毁票证的部分。

我必须编译成共享库(pam_krb5.so 文件)并将修改后的代码放入我的 docker 容器中。然后它就起作用了。不幸的是,我不再参与该项目,也无法访问代码。真希望我把它放到我的 git 中。

附带说明一下,RStudio 的付费版本支持此罚款。如果您想使用免费版本,则必须执行此操作。如果您需要帮助查找代码中需要修改的区域,请联系我。

相关内容