使用 AD/Kerberos 进行身份验证/授权的 Linux 服务器是否需要计算机帐户?

使用 AD/Kerberos 进行身份验证/授权的 Linux 服务器是否需要计算机帐户?

我对使用 Active Directory (AD) 和 Kerberos 的 Linux 服务器是否需要创建计算机帐户感到困惑?
Linux 服务器作为一台机器是否需要加入 AD 域,并且这样做时是否需要拥有计算机帐户才能从 AD 获得身份验证/授权服务?

以下是一些要求:

  • 能够使用 Linux 服务器的 AD 进行基于用户和组成员身份的身份验证。
  • 能够将本地 Linux UID/GID 号码映射到 AD 用户和组名(今天我们使用非 AD LDAP 服务器,并且我们为用户和组帐户保留 UID/GID 号码。理想情况下,我想继续这种做法)。
  • 能够将 Linux Sudoer 权限映射到 AD 组。
  • 使用开源或社区工具/插件(如 SSSD),而不是付费商业产品(如 Centrify)。

我担心在 AD 中为私有云服务器创建/删除大量 Linux 计算机帐户的麻烦,因为这些帐户可能不会存在那么长时间;但我希望享受使用 AD 的中央用户帐户存储的好处。

注意:我正在使用 RHEL 和 Centos 6-7 Linux 服务器以及带有 2008R2 功能级别的 AD 的 Windows Server 2012。

答案1

这里有两个不同的考虑因素:
1)身份验证(密码验证)
2)授权(身份映射/组成员身份等)

对于客户端:
您可以通过 Kerberos 从匿名客户端(无域加入/主机凭据)进行身份验证(密码检查)。但是,如果没有主机凭据(/etc/krb5.keytab),您将无法进行 GSSAPI SSO 和 KDC 验证。

为了获得授权,您需要能够对 AD-DC 进行 LDAP 绑定/查找。一般来说,AD 不允许匿名 LDAP 绑定,因此您需要某种客户端凭据。要么是明确创建和维护的服务帐户,要么是主机凭据(由域加入创建/维护)。

在您的 ldap.conf 或 sssd.conf 文件中,您可以列出明确的服务帐户凭据或告诉它使用主机凭据。如果您有主机凭据并在 sssd 中使用“ad”id_provider,您将获得诸如自动主机凭据维护等优势。

请注意,如果您想使用 AD 作为授权服务,则需要向您想要在 Unix/Linux 客户端上使用的每个用户帐户添加 rfc2307 样式信息(例如 uidNumber、gidNumber 等)。

对于服务器:
如果它们要提供任何基于 Kerberized/GSSAPI 的服务,则它们必须具有主机凭据(已加入域)并在 AD 中的计算机帐户中具有有效的 UPN/SPN 记录。将 AD 视为提供 Kerberos KDC 功能。

例如:
如果您有一个基于 Kerberized 的 NFSv4 文件服务器,则不仅需要有一个“host/FQDN”SPN,还需要在帐户中以及服务器上的 krb5.keytab 文件中有一个“nfs/FQDN”SPN。

答案2

对于 SSSD,这取决于配置。对于 id_provider=ad,是的,您需要使用 realmd 加入域。但是如果您不想加入域,没有什么可以阻止您使用 id_provider=ldap。如果您自己配置 SID,甚至 ID 映射也可以工作。

答案3

是的,他们需要计算机帐户。这些是通过“加入”域来创建的。

(想想 Centrify、Powerbroker 等,尽管这里不推荐具体的产品。)

特别是,如果您在 Active Directory 中没有帐户,它将在任何情况下都不允许您进行身份验证,无论您是计算机还是用户。

编辑:只是想澄清一下 - 如果您打算对服务器本身进行身份验证,那么它们需要计算机帐户。如果您打算仅对登录到这些服务器的用户进行身份验证,那么理论上您只能拥有用户帐户,前提是您的 PAM 配置为仅允许提供通过 AD 检查的用户名和密码的用户登录。

相关内容