2

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

1) 广告服务器

2) 运行服务的 server1

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 kinit 设置为“serviceX/server2.domain.com”将失败。

你们如何为相同的服务但​​在不同的服务器上设置 kerberos 身份验证?您是否创建 2 个 spn 用户和 2 个 keytab?我认为我需要将所有内容都放在 1 个 keytab 中,因为服务需要它。有什么帮助吗?

4

2 回答 2

2

您可以使用与目录中的用户帐户而不是每个服务器绑定的 SPN,使用相同的密钥表在两台不同的服务器上运行serviceX 。为此,您将 SPN 绑定到虚拟服务器名称(也称为“VIP”)而不是真实名称。在我现在的组织中,我们一直这样做。因此,由于 SPN 将在 DNS 中使用虚拟服务器名称,因此您只需配置负载平衡器,将对该虚拟名称的任何查询发送到它背后的真实服务器“回答”该名称。因此,在这种情况下,您不必担心 server1 和 server2 都具有唯一的 keytab,您只需为我将称为server-vip的内容创建一个 keytab,然后将相同的密钥表复制到两台服务器。如果您没有负载均衡器,那么您可以仅使用 DNS 轮询来执行此操作。因此,下面的示例将是您的新 keytab 创建语法,请注意只有一件事发生了变化。这很好的另一个原因是它对服务器更改具有弹性。当您最终停用 server1 和 server2 时,您可以轻松地将 keytab 复制到 server3 和 server4。

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

于 2017-10-16T00:40:29.037 回答
0

朋友...

当您尝试绑定SPN时:

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

UPN

spn

错误:“serviceX/server2.domain.com”的 kinit 将失败。指出一些问题,但不完全是在哪里或如何。我今天遇到了同样的问题,但是另一个日志显示了错误的主要原因:

无法设置属性“userPrincipalName”

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

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

adsiedit.msc

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

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

我解决了在另一个 UPN 中发现我的“UserPrincipalName”属性配置错误的问题。

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

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

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

我希望这会有所帮助。

于 2019-11-13T23:59:43.147 回答