【问题标题】:Kerberos aes-256 encryption not workingKerberos aes-256 加密不起作用
【发布时间】:2017-09-26 05:24:56
【问题描述】:

服务器是 RHEL7,Kerberos 是 AD (Windows)。我只是 KDC 的客户。

Arcfour-hmac 工作正常,但是当我将加密类型更改为 aes-256 并设置新的密钥表时,kinit 仍然有效,但 kvno 无效。即使用户似乎有一张有效的票(在 klist 中),他也无法再启动服务了。

我无权访问 Kerberos AD,但它似乎已正确配置为使用 aes-256,因为最终用户(在 Windows 计算机上)已请求此加密类型的票证。

我的 krb5.conf :

[libdefaults]
default_realm = TOTO.NET
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
default_tkt_enctypes = aes256-cts aes128-cts des-cbc-md5 des-cbc-crc
default_tgs_enctypes = aes256-cts aes128-cts des-cbc-md5 des-cbc-crc
permitted_enctypes = aes256-cts aes128-cts des-cbc-md5 des-cbc-crc

[realms]
TOTO.NET = {
  kdc = kdc1.toto.net
  kdc = kdc2.toto.net
  admin_server = kdc1.toto.net
}

[domain_realm]
.toto.net = TOTO.NET
toto.net = TOTO.NET

这里是我尝试使用 kvno 获取票时遇到的错误:

[2477332] 1493147723.961912: Getting credentials myuser@TOTO.NET -> nn/myserver@TOTO.NET using ccache FILE:/tmp/krb5cc_0 
[2477332] 1493147723.962055: Retrieving myuser@TOTO.NET -> nn/myserver@TOTO.NET from FILE:/tmp/krb5cc_0 with result: -1765328243/Matching credential not found (filename: /tmp/krb5cc_0) 
[2477332] 1493147723.962257: Retrieving myuser@TOTO.NET -> krbtgt/TOTO.NET@TOTO.NET from FILE:/tmp/krb5cc_0 with result: 0/Success 
[2477332] 1493147723.962267: Starting with TGT for client realm: myuser@TOTO.NET -> krbtgt/TOTO.NET@TOTO.NET 
[2477332] 1493147723.962274: Requesting tickets for nn/myserver@TOTO.NET, referrals on 
[2477332] 1493147723.962309: Generated subkey for TGS request: aes256-cts/17DF 
[2477332] 1493147723.962363: etypes requested in TGS request: aes256-cts, aes128-cts 
[2477332] 1493147723.962504: Encoding request body and padata into FAST request 
[2477332] 1493147723.962575: Sending request (1716 bytes) to TOTO.NET 
[2477332] 1493147723.962725: Resolving hostname kdc1.TOTO.NET 
[2477332] 1493147723.963054: Initiating TCP connection to stream ip_of_kdc1:88 
[2477332] 1493147723.964205: Sending TCP request to stream ip_of_kdc1:88 
[2477332] 1493147724.3751: Received answer (329 bytes) from stream ip_of_kdc1:88 
[2477332] 1493147724.3765: Terminating TCP connection to stream ip_of_kdc1:88 
[2477332] 1493147724.3846: Response was not from master KDC 
[2477332] 1493147724.3879: Decoding FAST response 
[2477332] 1493147724.3965: TGS request result: -1765328370/KDC has no support for encryption type

klist -ket mykeytab

Keytab name: FILE:nn.service.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   1 01/01/1970 01:00:00 nn/myserver01@TOTO.NET (aes256-cts-hmac-sha1-96)
   1 03/22/2017 16:34:55 nn/myserver02@TOTO.NET (aes256-cts-hmac-sha1-96)

感谢您的帮助

【问题讨论】:

  • 在您的服务器上存在 keytab 的同一目录中,请运行以下命令,然后使用结果重新编辑您的问题:klist -k -t -e "filename of keytab "
  • 您究竟是如何“使用 kvno 获取票证”的?我不明白你的意思。
  • @T-Heron kvno 命令几乎总是请求一张票。特别是,它通过请求作为服务的委托人的票证并从票证结构的未加密部分打印 kvno 来确定 TGS 用于为给定委托人签发票证的 kvno。
  • 我的回答能回答你的问题吗?请留下反馈,这是本网站的工作方式。

标签: authentication encryption aes kerberos rhel


【解决方案1】:

请您的 AD 管理员在与 keytab 关联的 AD 帐户上启用对 AES-256 加密类型的支持。要查找该帐户,请运行以下命令:

setspn -Q nn/myserver01@TOTO.NET

输出将告诉您帐户的名称。它将以 CN=xxx 开头,其中“xxx”是 AD 帐户的名称。要在 AD 帐户上启用对 AES-256 加密类型的支持,请告诉您的 AD 管理员必须选中“此帐户支持 Kerberos AES 256 位加密”复选框,该复选框位于“帐户”选项卡下,一直位于底部。

【讨论】:

  • 有趣的是,我刚刚尝试过这个,而我的 pure-aes-256 密钥表仍然无法预授权。 RC4-hmac 密钥表工作正常。还有什么可以干扰/禁用基于 aes256 的身份验证的吗?
  • @RickMoritz - 我会让你的查询成为一个新问题,并链接回这个。包括您环境的所有完整详细信息,包括 AD 版本和确切的错误消息。
  • 这个解决方案对任何人都有效吗?我怀疑。我已经在帐户上启用了 AES-256,但没有解决问题。
  • @RickMoritz 你有想过这个吗?我也有同样的问题。如果我使用 keytab,则只有 RC4 有效。使用 AES,只有当我尝试手动以同一用户身份启动时,它才能正常工作,但不能使用 keytab。
【解决方案2】:

我最近才遇到这个问题并且能够解决它。

对我们来说,AD 使用的盐与 Kerberos 客户端默认使用的盐不同。

即在使用 ktutil 时: addent -password -p servicepuppetnp@AMER.EXAMPLE.COM -k 4 -e arcfour-hmac admspike_white@AMER.EXAMPLE.COM 的密码:

生成一个 keytab 文件,我可以使用它作为该主体进行 kinit。鉴于:

ktutil: addent -password -p admspike_white@AMER.EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96 admspike_white@AMER.EXAMPLE.COM 的密码:

没有生成允许成功 kinit 的 keytab 文件。 (预授权失败)。

我必须这样做:

ktutil: addent -password -p admspike_white@AMER.EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96 -f admspike_white@AMER.EXAMPLE.COM 的密码:

告诉 ktutil 从 AD DC 获取 salt 信息。然后它使用正确的盐。这会生成一个允许成功 kinit 的 keytab 文件。

【讨论】:

    猜你喜欢
    • 2018-08-23
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 2013-08-24
    相关资源
    最近更新 更多