Windows AD及其关键标签文件

Windows AD and Its Key tab File

我只是有一个简单的问题。 我有 windows 个活动目录。 我已经使用命令从中创建了密钥选项卡文件:

ktpass /princ host/User1.contoso.com@CONTOSO.COM /mapuser User1 /pass MyPas$w0rd /out machine.keytab /crypto all /ptype KRB5_NT_PRINCIPAL /mapop set

根据我的理解,此文件由用户名及其加密格式的密码组成。 当我尝试使用此 keytab 文件进行身份验证时,请求仅由文件提供或这将进一步与 Windows AD 通信以进行身份​​验证。

我问的原因是因为我超时了,如果它与 AD 连接,我也在考虑这个方向,因为 AD 完全在不同的 VPC 中。

这里发生了一些事情。人们通常根据 HTTP、SSH 等实际服务而不是 HOST 进行身份验证。 HOST 就是机器本身。

话虽这么说,这里还有一些事情要发生。您没有在密钥表中定义主机名 - 您在其中有一个用户名。 HOST/ 在这种情况下应该映射到 DNS 主机名,而不是用户名(在您的情况下,User1.contoso.com)。在其最简单的形式中,Kerberos 旨在允许用户原则(像您这样的人,用户)对网络上的服务进行身份验证(这将在 KDC 和密钥表中表示为服务原则)。在更复杂的场景中,它是服务到服务,但我认为你在这里谈论的是用户到服务。我认为在这种情况下,Kerberos 变得混乱并超时,因为“host/User1.contoso.com”在 KDC 上不存在,或者您没有名为 User1.constoso.com 的机器在 DNS 中,或两者。您仍然可以将 Kerberos SPN 映射到 User1,但是 HOST 需要对应网络中的一台机器。而不是 host/User1.contoso.com@CONTOSO.COM,我会将 User1 替换为 Kerberos 将对其进行身份验证的实际机器名称。例如,如果机器名为 Server1,则 re-create keytab 如下所示。还请在创建密钥表时将 Kerberos 域名附加到服务原则;您在给出的示例中将其遗漏了。最后,Kerberos 服务应该写成大写,所以使用 HOST 而不是 host。要解决此问题:

  1. 像这样从用户 1 中删除 SPN:

    setspn -D host/User1.contoso.com@CONTOSO.COM User1

  2. Re-create keytab 如下所示(我做了三处修改)然后试试 再次:

    ktpass /princ HOST/server1.contoso.com@CONTOSO.COM /mapuser user1@CONTOSO.COM /pass MyPas$w0rd /out machine.keytab /crypto all / ptype KRB5_NT_PRINCIPAL /mapop 集

注意:keytab 从不 与 AD 通信。它所做的是解密入站 Kerberos 服务票据以告知用户是谁。我在这里有一个关于这个机制的 write-up:https://social.technet.microsoft.com/wiki/contents/articles/36470.active-directory-using-kerberos-keytabs-to-integrate-non-windows-systems.aspx.