Kerberos 和 LDAP 复杂关系

Kerberos 和 LDAP 复杂关系

我无法理解 LDAP 和 Kerberos 之间的关系(概念上)。

我理解 LDAP 是一种目录服务,而 Kerberos 是一种身份验证服务。

我们还知道 LDAP 也能够存储密码,但 LDAP 的设计初衷是成为可公开访问的目录,不适合存储敏感信息。这就是为什么我们更愿意将身份验证委托给其他服务(如 Kerberos)。

现在我不明白的是这两个问题:

  1. 当用户尝试登录时,客户端会将请求发送到哪台服务器?我的直觉告诉我它一定是 Kerberos 服务器。如果是,那么 LDAP 服务器在哪里?
  2. 系统管理员在哪里设置权限?在这种情况下,我的直觉告诉我是 LDAP。我可以想象每个系统和/或服务可能都有一个条目,并且用户将通过组成员身份或直接获得对它们的访问权限。如果是,这是否意味着 LDAP 服务器(通过 phpLDAPadmin 等界面)将在 Kerberos 服务器中相应地设置组和用户?

我特别困惑,因为我在两个文档中都看到了 LDAP 和 Kerberos 之间的联系。LDAP 谈到将身份验证委托给 Kerberos这里,Kerberos 讨论了使用 LDAP 作为后端这里

我读过的所有文档都像是拼图碎片,我无法将它们拼凑在一起。如果有人能解释一下如何拼凑,我将不胜感激。

答案1

哦,好久不见了。看看我还能记得什么。

是的,这肯定会让人感到困惑,因为您可以使用 Kerberos 进行 LDAP 身份验证,也可以让 Kerberos 使用 LDAP 作为后端。虽然它们不是一回事,但当您尝试搜索时,通常很难区分正在讨论哪一个。我只能谈论使用 Kerberos 进行身份验证的 LDAP,因为我没有反过来的经验。

  1. 您的直觉是正确的,它使用 Kerberos 服务器。据我了解,客户端从 Kerberos 服务器为 LDAP 服务器请求 TGT(使用服务主体名称“ldap/[电子邮件保护]“或类似内容)。然后客户端可以使用它来登录 LDAP 服务器,因为它能够验证票证。客户端密码本身永远不会发送到 LDAP 服务器。
  2. 我认为如果您使用 LDAP 作为 Kerberos 的后端,情况就是这样。您可以在此处使用 LDAP 目录来保存各种事物的属性和值。当然,您不需要使用 LDAP 作为 Kerberos 的后端。

当他们开始谈论 SASL 时,事情变得更加复杂,因为很难分辨他们谈论的是 LDAP 前端还是后端的 SASL。换句话说,客户端是否使用它来向 LDAP 进行身份验证?还是 LDAP 使用它来将密码传递给另一个身份验证源?只是需要注意的警告。

另外:可以使用 LDAP 进行简单绑定,将密码发送到 LDAP 服务器,然后将密码传递给另一个身份验证源(如 Kerberos)。如果您正在执行类似操作,这很好,因为密码本身不存储在 LDAP 中,但由于简单绑定是明文,因此您需要确保在客户端和 LDAP 服务器之间使用 TLS。

希望这能有所帮助。听起来你基本上已经明白了。

答案2

在这两种情况下,你的直觉都是正确的。让我们逐一回答你的两个问题。

  1. 这里,kerberos 服务是验证系统。客户端将从 kerberos 服务器收到加密票证(当然是在身份验证成功后),然后将其提交给服务器以表明他们已通过身份验证。
  2. 这里,ldap 服务是授权系统。用户信息存储在目录中(例如 UID / GID 等)。本质上,这替换了 /etc/passwd 中的信息。ldap 服务器不会更新 kerberos 服务器中的任何信息。

答案3

这确实取决于您的设置。我已经为此苦苦思索了一段时间,但我并不是专家。

对于系统管理员来说,LDAP 和 Kerberos 之间的关系可能很简单,就像一台机器同时使用它们一样。您的设置可能很简单,只需通过 nsswitch.conf(以及 archlinux repo 中的 nss-pam-ldapd 等插件)使用 LDAP 作为 /etc/passwd 和 /etc/group 的来源,将 LDAP 中的 userPassword 属性保留为感叹号或星号(表示没有密码,无法登录)。

Kerberos KDC 为您想要的任何机器提供密码验证,其中系统登录集成将根据其提供的服务而有所不同。例如,如果它是一台只需要通过 ssh 访问的远程机器,LDAP 仍会提供与其他地方相同的信息,但 Kerberos 只需要 ssh 配置文件中的几行。在另一个需要完整登录集成的系统上,这可能会成为一个巨大的麻烦,因为它需要对 PAM 配置进行许多更改。这在 RHEL 客户端中使用 authconfig 很容易,但除非您熟悉 PAM,否则在其他地方这将是一个巨大的麻烦。不过,让它与 PAM 一起工作的好处是,大多数程序(如 ssh)都可以使用 PAM,所以您不必再担心 ssh 配置了。

换句话说,如果 KDC 宕机,系统将永远不会接受您的密码,无论是否正确(但它会因为 LDAP 知道您是用户),如果 LDAP 服务器宕机,系统将认为您的用户名不存在。

相关内容