Kerberos 和多个 SPN

Kerberos and multiple SPNs

我设法为 1 台服务器设置了 Kerberos 身份验证并且已启动 运行 正常。现在我有一个项目,我必须按如下方式将另一台服务器添加到 Kerberos 配置中:

1) 广告服务器

2) 服务器 1,其中服务为 运行

3) server2 其中相同的服务将是 运行

所以我执行了 setspn 命令将两者都分配给单个 "spn" 用户:

setspn -s serviceX/server1.domain.com@DOMAIN.COM spn

setspn -s serviceX/server2.domain.com@DOMAIN.COM spn

然后我执行命令ktpass:

ktpass -princ serviceX/server1.domain.com@DOMAIN.COM -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -mapuser serviceX\spn -out C:\keytab +rndPass

接下来我应该怎么做才能让它发挥作用? 如何为server2执行ktpass? 当我对 server2 尝试相同的命令时,我收到警告:

警告:无法设置 UPN serviceX/server2。domain.com ptype 1 vno 10 etype 0x12 kinits 到 "serviceX/server2.domain.com" 将失败。

你们如何为同一服务但在不同服务器上设置 kerberos 身份验证? 您是否创建了 2 个 spn 用户和 2 个密钥表? 我想我需要在 1 个密钥表中包含所有内容,因为服务需要它。 有帮助吗?

您可以 运行 serviceX 在两个不同的服务器上 使用相同的密钥表 通过使用绑定到用户的 SPN目录中的帐户而不是每个服务器。为此,您将 SPN 绑定到虚拟服务器名称(又名 "VIP")而不是真实服务器名称。在我目前的组织中,我们一直这样做。因此,由于 SPN 将在 DNS 中使用虚拟服务器名称,您只需配置负载平衡器,将对该虚拟名称的任何查询发送到它后面的真实服务器 "answering" 到该名称。所以在这种情况下,不必担心服务器 1 和服务器 2 都有唯一的密钥表,您只需为我将称为 server-vip 的内容创建一个密钥表,然后复制相同的密钥表两台服务器的密钥表。如果您没有负载均衡器,那么您可以仅使用 DNS 循环来完成此操作。所以下面的例子将是你新的 keytab 创建语法,注意只有一件事发生了变化。这很好的另一个原因是因为它可以适应服务器的变化。当您最终停用服务器 1 和服务器 2 时,您可以轻松地将密钥表复制到服务器 3 和服务器 4。

ktpass -princ serviceX/server-vip.domain.com@DOMAIN.COM -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -mapuser serviceX\spn -out C:\keytab +rndPass

朋友...

当您尝试绑定 SPN:

serviceX/server-vip.domain.com@DOMAIN.COM

UPN

spn

错误:kinits 到 "serviceX/server2.domain.com" 将失败。 表明存在一些问题,但不确切是哪里或如何。我今天遇到了同样的问题,但是另一个日志揭示了错误的主要原因:

设置失败属性'userPrincipalName'

当我们尝试使用 ktpass 生成密钥表时,会显示此消息,我们没有想到的是,UPN 对象有这么多属性,其中之一是 UserPrincipalName.那么为什么我们不能将属性 UserPrincipalName 设置为 "spn" 值呢?因为它已经在另一个 UPN 属性中配置了!不幸的是,您需要验证您的 UPN 的所有属性,搜索 "spn" 值。

您可以使用 adsiedit 进行手动搜索:

adsiedit.msc

或者与搜索 userPrincipalName 属性的用户进行循环:

$users = get-aduser -filter *
foreach ($var in $users) { $var | select Name, UserprincipalName | fl }

我发现我的 "UserPrincipalName" 属性 在另一个 UPN 中配置错误,因此我解决了这个问题。

► 每个 UserPrincipalName 需要配置与您的 UPN 相同的名称。

UPN=s_user_http,然后 UserPrincipalName=s_user_http@YOUR_DOMAIN,验证一下!

回答您的问题: 一个 UPN 可以是多个 SPN,但它很危险,如果你不小心增加了 kvno,所有其他的 keytabs 都会失效。每个 SPN 使用一个 UPN。

希望对您有所帮助。