Kerberos Keytab:在 Active Directory 上为 MSA 创建密钥表时出现错误

问题描述 投票:0回答:1

我正在尝试使用 AD 域控制器上的 ktpass 命令在活动目录上为

MSA
创建密钥表。

我使用的命令是:

ktpass /princ ldap/[email protected] /mapuser TEST\KrbNeerajMSA /crypto AES256-SHA1 /ptype KRB5_NT_PRINCIPAL /out KrbNeerajMSA.keytab /kvno 0 +rndPass

执行此命令时出现的错误是:

Successfully mapped ldap/KrbNeerajMSA to KrbNeerajMSA$.
WARNING: Account KrbNeerajMSA$ is not a user account (uacflags=0x1041).
WARNING: Resetting KrbNeerajMSA$'s password may cause authentication problems if KrbNeerajMSA$ is being used as a server.

Reset KrbNeerajMSA$'s password [y/n]?  y
Aborted.

我也尝试过:

ktpass /princ ldap/[email protected] /mapuser TEST\KrbNeerajMSA /crypto AES256-SHA1 /ptype KRB5_NT_PRINCIPAL /out KrbNeerajMSA.keytab /kvno 0

执行此命令后出现的错误是:

Targeting domain controller: WIN-FMCL.Test.lab
Using legacy password setting method
Successfully mapped ldap/KrbNeerajMSA to KrbNeerajMSA$.
WARNING: Account KrbNeerajMSA$ is not a user account (uacflags=0x1041).
WARNING: Resetting KrbNeerajMSA$'s password may cause authentication problems if KrbNeerajMSA$ is being used as a server.

Reset KrbNeerajMSA$'s password [y/n]?  y
Aborted.

注意:

TEST\KrbNeerajMSA
实际上是
MSA
。相同的命令适用于普通服务帐户(有密码)。

  1. 首先,我想了解为 MSA 创建 Keytab 并使用它在非 Windows 计算机上进行身份验证是否是有效的用例?
  2. 我的用例是为部署在网络上某处的 Java LDAP 客户端提供无密码身份验证。另外,我使用 MSA 的原因是这将消除密码管理的要求,从此密钥表将保持有效。
  3. 如果我使用普通服务帐户,则在重置服务帐户密码后必须定期更换密钥表文件(..由于任何原因......)。
  4. 这就是为什么我觉得使用 MSA 会更好,但是,我现在感觉这可能不是一个正确的用例,因为 MSA 旨在用于 Windows 计算机的身份验证(如果我错了,请纠正我)并且不适用于非 Windows 机器,我打算使用它。
  5. 据我了解,ktpass 需要 /pass 参数,并且由于对于 MSA,密码由 AD 本身管理,因此不需要提供任何密码,并且像我在第一个命令中所做的那样重置它可能会或可能不会总是成功,并且将取决于 AD 配置。
active-directory kerberos keytab gmsa
1个回答
1
投票

首先,我想了解为 MSA 创建 Keytab 并使用它在非 Windows 计算机上进行身份验证是否是有效的用例?

不,您需要一个非 MSA 帐户。

如果我使用普通服务帐户,则在重置服务帐户密码后必须定期更换密钥表文件(..由于任何原因......)。

MSA 也是如此。 Kerberos 密钥(进入密钥表的内容)只是从密码派生而来,因此如果密码更改,旧密钥表将自动不再有效。

如果您的服务器是维护 MSA 密码的服务器(我认为 Samba 不支持这一点,但我们假设它支持),那么更新 MSA 密码的同一软件将负责从新密码生成密钥表。

(如果是 gMSA,您同样需要一些软件来从 AD 获取/解密密码 - 就像 Windows 一样 - 并将新密钥放入服务密钥表中。)

此外,我使用 MSA 的原因是这将消除密码管理的要求,从此密钥表将保持有效。

不,不会。事实恰恰相反。

MSA 并没有消除密码管理;它们只是消除了系统管理员的“手动”密码管理,但其明确的“目的”是管理密码;如上所述,每次更改密码时,密钥表必须相应更新。 据我了解,ktpass 需要 /pass 参数,并且由于对于 MSA,密码由 AD 本身管理,因此不需要提供任何密码,并且像我在第一个命令中所做的那样重置它可能会或可能不会总是成功,并且将取决于 AD 配置。

如果我正确理解 MSA,它们的密码不是“由 AD”管理的 - 相反,实际使用 MSA 的计算机的任务是时不时地更改其密码

1

;即与计算机帐户发生的情况完全相同。所以该帐户肯定仍然有密码,只是没有设置为“asdf123!”不再由系统管理员操作。

1(我怀疑这对于 gMSA 来说可能是不正确的,但尽管如此,即使是 gMSA 也有一个密码,机器可以检索该密码以获取票证。)

核心点是: Kerberos 密钥源自帐户的密码。

(对于 AD 和非 AD Kerberos 都是如此。)如果密码更改,帐户的 Kerberos 密钥也会更改,因此密钥表也不可避免地会更改
必须改变。

© www.soinside.com 2019 - 2024. All rights reserved.