升级到 ubuntu 20 后出现 krb5 kinit 错误

升级到 ubuntu 20 后出现 krb5 kinit 错误

我有一台 Ubuntu 18.04 计算机,我通过 openafs 和 kinit (krb5) 连接到 AFS 文件系统(作为客户端),由我的公司托管(基于 MIT Kerberos)。这很有效,这里是日志:

KRB5_TRACE=/dev/stdout kinit -V username
Using default cache: /tmp/krb5cc_5864_3P0GQm
Using principal: [email protected]
Getting initial credentials for [email protected]
Sending unauthenticated request
Sending request (198 bytes) to DOMAIN.COM
Resolving hostname SERVER.DOMAIN.COM
Sending initial UDP request to dgram IP:PORT
Received answer (572 bytes) from dgram IP:PORT
Response was not from master KDC
Salt derived from principal: DOMAIN.COMusername
Getting AS key, salt "DOMAIN.COMusername", params ""
Password for [email protected]: 
AS key obtained from gak_fct: des3-cbc-sha1/****
Decrypted AS reply; session key is: des-cbc-crc/****
FAST negotiation: unavailable
Initializing FILE:/tmp/krb5cc_5864_3P0GQm with default princ [email protected]
Storing [email protected] -> krbtgt/[email protected] in FILE:/tmp/krb5cc_5864_3P0GQm
Warning: Your password will expire in XXX days
Authenticated to Kerberos v5

今天,我通过 do-release-upgrade 升级到 Ubuntu 20.04 和 22.04,成功完成后,AFS 驱动器仍然安装良好且可读,但 kinit 身份验证停止工作(已经在 20.04 中),出现此错误,在 20.04 和 22.04 中完全相同:

KRB5_TRACE=/dev/stdout kinit -V username
Using default cache: /tmp/krb5cc_1001
Using principal: [email protected]
Getting initial credentials for [email protected]
Error loading plugin module pkinit: 2/unable to find plugin [/usr/lib/x86_64-linux-gnu/krb5/plugins/preauth/pkinit.so]: No such file or directory
Sending unauthenticated request
Sending request (201 bytes) to DOMAIN.COM
Resolving hostname SERVER.DOMAIN.COM
Sending initial UDP request to dgram IP:PORT
Received answer (127 bytes) from dgram IP:PORT
Response was not from primary KDC
Received error from KDC: -1765328370/KDC has no support for encryption type
Retrying AS request with primary KDC
Getting initial credentials for [email protected]
Sending unauthenticated request
Sending request (201 bytes) to DOMAIN.COM (primary)
kinit: KDC has no support for encryption type while getting initial credentials

知道如何解决这个导致无法验证的错误吗?

以下是相关软件包的版本比较:

krb5-config: 2.6 http://archive.ubuntu.com/ubuntu bionic/main amd64
krb5-user: 1.16-2ubuntu0.2 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64
openafs-krb5: 1.8.8.1-3~ppa0~ubuntu18.04.2 http://ppa.launchpad.net/openafs/stable/ubuntu bionic/main amd64
openafs-modules-dkms: 1.8.8.1-3~ppa0~ubuntu18.04.2 http://ppa.launchpad.net/openafs/stable/ubuntu bionic/main amd64
openafs-client: 1.8.8.1-3~ppa0~ubuntu18.04.2 http://ppa.launchpad.net/openafs/stable/ubuntu bionic/main amd64

对比

krb5-config: 2.6+nmu1ubuntu1 http://archive.ubuntu.com/ubuntu jammy/main amd64
krb5-user: 1.19.2-2 http://archive.ubuntu.com/ubuntu jammy/universe amd64
openafs-krb5: 1.8.8.1-3~ppa0~ubuntu22.04.2 http://ppa.launchpad.net/openafs/stable/ubuntu jammy/main amd64
openafs-modules-dkms: 1.8.8.1-3~ppa0~ubuntu22.04.2 http://ppa.launchpad.net/openafs/stable/ubuntu jammy/main amd64
openafs-client: 1.8.8.1-3~ppa0~ubuntu22.04.2 http://ppa.launchpad.net/openafs/stable/ubuntu jammy/main amd64

可能相关:1 2 3

提前致谢。

答案1

贵公司的 Kerberos 领域配置为使用非常加密类型过时;这与你发现的 AD 帖子的问题类似,只是有问题的加密类型不是 RC4,而是单 DES(即des-cbc-crc)。对单 DES 的支持已完全移除来自 MIT Kerberos 1.18 及更高版本,并且无法在本地重新启用它。

(DES3 和 RC4 仍然处于“有点可以接受”的范围内,因此 Krb5 1.20 仍然支持“des3-cbc-sha1”加密类型。另一方面,使用 56 位密钥的单 DES 完全可以“在几个方面被破解”。小时“范围,因此删除它更为紧急。由于您在 kinit 而不是 aklog 期间看到错误,并且由于密码更改不会使其消失,这意味着全部的Kerberos 领域基本上在单 DES 会话密钥上运行。)

我唯一的解决办法建议删除 KDC 上配置的 enctype 限制(至少支持 des3)——如果你的站点至少使用 OpenAFS 1.4.15 或 1.6.5(均于 2013 年发布),并且rxkad-kdf扩展,aklog 会自动将 des3 或 aes 会话密钥转换为 AFS 服务器可接受的内容。(公平地说,它仍然是 56 位,因为这是 rxkad 所能处理的全部 - 但至少它仅限于 AFS 而不是整个领域。)

不过,由于您的 KDC 运行在 SL4 上(2011 年停止支持),我有点怀疑 AFS 服务器在过去十年中也没有进行过任何更新,所以您唯一剩下的选择就是降级libkrb5并希望不会出现任何问题。(降级 krb5-user 以匹配库可能也是必要的,但这不是密码支持所在的地方。)

debootstrap(您还可以使用并创建 Ubuntu 18.04 容器systemd-nspawn并将其用于 Kerberos 事务......)

相关内容