Kerberos和多个SPN

时间:2017-09-13 13:26:54

标签: kerberos spn keytab upn ktpass

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

1)AD服务器

2)服务正在运行的server1

3)将运行相同服务的server2

所以我执行了setspn命令来协助单个“spn”用户:

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

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

然后我执行了comman 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 to“serviceX / server2.domain.com”将失败。

你们如何在不同的服务器上为相同的服务设置kerberos身份验证? 你创建了2个spn用户和2个keytabs吗? 我认为我需要在服务需要的1个密钥表中包含所有内容。 有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

朋友...

当您尝试绑定 SPN 时:

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

使用 UPN

spn

错误: 与“ serviceX / server2.domain.com”的连接失败。 表示某些问题,但不完全是在哪里或在哪里。我今天遇到了同样的问题,但是另一条日志显示了导致错误的主要原因:

无法设置属性“ userPrincipalName”

当我们尝试使用ktpass生成密钥表时,会显示此消息,我们没有想到,这是UPN对象具有如此多的属性,其中之一是 UserPrincipalName 。那么,为什么我们不能使用“ spn” 值设置属性 UserPrincipalName ?因为它已经在另一个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,则所有另一个keytab都将失效。每个SPN使用一个UPN。

我希望有帮助。