运行ktpass.exe后,Kerberos服务只能运行30分钟

Modified on: Mon, 11 Nov 2019 16:00:02 +0800

我正在尝试Kerberize Apache服务器,并允许创建的服务器主体登录到Active Directory。我已经按照在线提供的众多教程之一,它似乎工作正常。我在项目的Linux方面,而企业IT在Windows方面。

IT为我提供了服务帐户和服务主体。在这个例子中,我将其称为HTTP/mysite.mycorp.com@MYCORP.COM。他们为我提供了一个用于所述主体的keytab文件,其中包括在AD服务器上运行名为ktpass.exe的工具。

我已经验证了AD / KDC的KVNO和keytab文件是否匹配。一切都很好。

主机名有一个正确的DNS A记录,以及IP的正确PTR记录。两台服务器都是时间同步的。

我可以使用已发布的密钥表文件从AD / KDC请求上述服务主体的票证,如下所示:

kinit -k -t http.keytab HTTP/mysite.mycorp.com@MYCORP.COM

这很有效。我获得了一张票,我可以使用这张票来查询AD / LDAP目录。 keytab也非常适合运行Single Signon Apache站点,这部分是本练习的目标。

半小时过去了。

尝试使用上述kinit命令登录现在失败,显示以下消息:

Client not found in Kerberos database

我无法作为服务主体进行身份验证,就像在AD服务器上删除了主体一样。

现在它变得奇怪了,至少对我而言:

根据请求,AD管理员再次运行ktpass.exe工具,为我的服务构建一个新的密钥表文件。 KVNO(密钥版本号)在服务器上递增,导致我们的Apache测试服务器停止验证Kerberos单点登录。我目前的配置是预期的。令我们所有人感到惊讶的是,现在kinit命令再次起作用。我们又买了半个小时,然后又停止了工作。

我们的IT部门在这里不知所措,他们猜测这是AD服务器本身的问题。我在考虑它的配置,但据他们说,他们的设置中没有任何半小时的限制。

我已关注http://www.grolmsnet.de/kerbtut/(请参阅第7节)但是我发现的所有文档中的方法似乎都是相同的。我没有发现服务主体的时间限制。

编辑:这似乎是一个复制问题。虽然复制过程中未报告任何错误,但服务帐户的SPN值已从“HTTP/mysite.mycorp.com@MYCORP.COM”更改(还原?)到“name-of-service-account@mycorp.com “30分钟后。

作者:,Saustrup

最佳答案

感谢您的所有投入,伙计们。我们让微软参与其中,他们帮助我们调试了AD方面的身份验证过程。一切都按预期工作,但三十分钟后就失败了。

当我们进行远程调试会话时,参与者注意到服务帐户的UPN / SPN突然从HTTP/mysite.mycorp.com@MYCORP.COM转发到 service-account@mycorp.com 即可。经过大量的挖掘,包括调试AD复制,我们找到了罪魁祸首:

有人制作了一个定期运行的脚本(或者可能是事件,因为它在运行ktpass.exe后正好是30分钟),它将UPN / PSN更新为“确保云连接”。我没有关于这样做的原因的任何补充信息。

脚本已更改为允许以@ mycorp.com结尾的现有UPN / SPN值,从而有效地解决了问题。

调试此类问题的提示:

  • 确保身份验证中的所有参与者都支持相同的加密类型。避免使用DES - 它过时且不安全。
  • 确保在服务帐户上启用AES-128和AES-256加密
  • 请注意,即使您启用了任何AES加密,在服务帐户上启用DES也意味着“仅对此帐户使用DES”。搜索 UF_USE_DES_KEY_ONLY 以获取详细信息。
  • 确保UPN / SPN值是当前的并且与发布的密钥表文件中的值匹配(即通过LDAP查找)
  • 确保keytab文件中的KVNO(密钥版本号)与服务器上的on匹配
  • 检查服务器和客户端之间的流量(即使用tcpdump和/或WireShark)
  • 在AD端启用身份验证调试 - 检查日志
  • 在AD端启用复制调试 - 检查日志

再次感谢您的意见。

作者:Saustrup

相关问答

添加新评论