如何使用 PAM/Kerberos 身份验证(针对 CVS)在 Linux 中缓存身份验证?

如何使用 PAM/Kerberos 身份验证(针对 CVS)在 Linux 中缓存身份验证?

我们有几台 Linux 服务器,它们使用 PAM 和 Kerberos 5 在 Windows Active Directory 服务器上验证 Linux 用户密码。我们使用的 Linux 发行版是 CentOS 6。

在一个系统上,我们有几个版本控制系统,如 CVS 和 Subversion,它们都通过 PAM 对用户进行身份验证,以便用户可以使用他们的普通 Unix 或 Windows AD 帐户。

自从我们开始使用 Kerberos 进行密码验证以来,我们发现客户端计算机上的 CVS 建立连接的速度通常要慢得多。CVS 会对每个请求(例如 cvs diff、log、update...)进行用户身份验证。

是否可以缓存 kerberos 使用的凭据,这样每次用户执行 cvs 操作时就不需要询问 Windows AD 服务器?

我们的 PAM 配置 /etc/pam.d/system-auth 如下所示:

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_krb5.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_krb5.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_krb5.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_krb5.so

答案1

一个名为“ssd 的' 可以缓存(Kerberos)凭据以供离线(和缓存)登录。我不确定 sssd 在正常运行时(即非离线时)是否会使用缓存的 Kerberos 凭据,您必须尝试一下。

有关 sssd 的更多信息这里

答案2

任何通过 PAM 进行的身份验证都会存在此问题。避免此问题的唯一方法是对服务本身进行 Kerberos 化,而不是使用 pam 堆栈来实现身份验证。

一种方法是使用 ssh 访问 cvs 存储库并使用 kerberos 对 ssh 进行身份验证。(google ssh GSSAPI)。

如果您不想允许 ssh 访问托管 cvs 存储库的服务器,可以使用 CVS 服务器的 Kerberized 版本。有关示例,请参阅

http://compbio.soe.ucsc.edu/cvsdoc/cvs-manual/cvs_28.html

相关内容