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

我正在尝试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记录.两台服务器都是时间同步的.

我可以使用已发布的keytab文件从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分钟后.

解决方法

我还从Achim Grolms的mod_auth_kerb教程开始学习Kerberos,这真是一篇很好的文档.

keytab文件仅替换密码身份验证.密码在文件中编码,这些字节用于KDC的身份验证质询.服务帐户上的任何密码更改都将使keytab身份验证无效,并且还会增加kvno编号.

要确认服务帐户SPN可用,我经常使用服务帐户密码进行身份验证:

kinit HTTP/mysite.mycorp.com@MYCORP.COM

如果失败,要确认服务帐户未被禁用,请尝试基本身份验证:

kinit account

如果无法进行身份验证,只需删除该帐户并使用其他登录名创建一个新帐户以避免麻烦.

另一个软件很可能 – 例如另一个系统具有针对同一SPN的旧生成的密钥表 – 尝试在此服务帐户上进行身份验证并因密码无效而禁用该帐户.

设置Kerberos SSO时,过快的操作可能会导致Active Directory中出现不一致.在配置过程中遇到的一般原则是遵循以下步骤:

>删除测试和生产系统的“旧”或“失败”服务帐户
>使用kvno检查您希望配置的SPN在领域中不再存在
>使用setspn -X检查多个帐户没有冲突的SPN
>为每个系统创建一个服务帐户,专用于一个完全合格的SPN,具有全新的登录名
>阻止服务帐户更改密码和密码到期
>让我们等待一段时间进行DC同步
>生成keytab时将密码设置为ktpass选项
>使用setspn -l帐户检查FQDN SPN和别名

以下是在DC上配置服务帐户的一组命令:

ktpass -princ HTTP/mysite.mycorp.com@MYCORP.COM -mapuser mysiteAccount@MYCORP.COM
  -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL
  -pass long!$longp2ass3word -out c:\temp\http-mysite-mycorp-com.keytab
setspn -a HTTP/mysite mysiteAccount
setspn -l mysiteAccount

如果在MMC和运行ktpass之间的不同DC上执行操作太快,无法在管理命令行中生成keytab,则DC同步可能会导致意外的结果,如您所描述的结果.因此,让我们在帐户创建之间等待一段时间,然后再使用ktpass和任何其他setspn命令.

并且在Linux上运行以检查一切是否正常的命令:

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

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...