我在将 Kerberos 密钥导出和导入 openafs 时遇到了麻烦。
我的第一个问题是,当使用addprinc
和ktadd
命令时kadmin.local
,加密密钥类型-e
选项似乎被忽略。例如,当我尝试添加 type 的键时,似乎会添加des-cbc-crc:v4
type 的键:aes256-cts-hmac-sha1-96
kadmin.local: ktadd -e des-cbc-crc:v4 -k /tmp/afs.ktab afs
Entry for principal afs with kvno 4, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/tmp/afs.ktab.
Entry for principal afs with kvno 4, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/tmp/afs.ktab.
同样的情况也发生在 addprinc 上,我尝试指定-e DES-CBC-CRC:md5
密钥类型,但这似乎被忽略了,最终得到了一个aes128-cts-hmac-sha1-96
密钥:
$ kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local: addprinc -policy service -randkey -e DES-CBC-CRC:md5 afs
WARNING: policy "service" does not exist
Principal "[email protected]" created.
kadmin.local: getprinc afs
Principal: [email protected]
Expiration date: [never]
Last password change: Mon May 27 18:22:21 EDT 2024
Password expiration date: [never]
Maximum ticket life: 0 days 10:00:00
Maximum renewable life: 7 days 00:00:00
Last modified: Mon May 27 18:22:21 EDT 2024 (root/[email protected])
Last successful authentication: [never]
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 2
Key: vno 1, aes256-cts-hmac-sha1-96
Key: vno 1, aes128-cts-hmac-sha1-96
MKey: vno 1
Attributes: REQUIRES_PRE_AUTH
Policy: service [does not exist]
kadmin.local:
此外,当我尝试使用 导入此密钥时asetkey
,我收到一条不可读的错误消息:
sudo asetkey add 4 /tmp/afs.ktab afs
asetkey: unknown RPC error (-1765328203) for keytab entry with Principal [email protected], kvno 4, DES-CBC-CRC/MD5/MD4
阅读asetkey
联机帮助页时,我看到强烈建议不要使用des-cbc-crc
密钥类型并使用rxkad-k5
扩展名:
A modern AFS cell should be using the rxkad-k5 extension, or risks terribly insecure operation (complete cell compromise for $100 in 1 day). The
keys used for rxkad-k5 operation are stored in the KeyFileExt. Cells not using the rxkad-k5 extension (i.e., stock rxkad) use keys of the des-cbc-
crc encryption type, which are stored in the KeyFile.
进一步阅读,KeyFileExt
手册页说尝试添加rxkad-k5
键需要指定一个krb5 encryption type number
,它与字符串标识符不同:
Using asetkey(8) to add rxkad-k5 keys to the KeyFileExt also requires specifying a krb5 encryption type number.
Since the encryption type must be specified by its number (not a symbolic or string name), care must be taken to determine the correct encryption
type to add.
我被很多相关的问题困扰着:
为什么
kadmin
似乎忽略我指定的加密类型?如何确定我的 openafs 是否正在使用该
rxkad-k5
扩展?我通过apt-cache search rxkad-k5
和搜索了 debian 软件包,rxkad
但什么也没找到。由于
aes256-cts-hmac-sha1-96
看起来像一个字符串标识符,我如何确定此加密的“krb5 加密类型编号”以便通过 asetkey 导入它?我注意到
openafs-krb5
是来自的一个单独的包openafs-{fileserver,dbserver,client}
。有没有推荐的方法来管理 debian 上的 openafs 身份验证而无需设置 kerberos?我发现
akeyconvert
声称可以帮助导入密钥from the krb5 keytab format to the KeyFileExt format
。我应该使用akeyconvert
它来将密钥转换afs.keytab
为 openafs 吗?
在阅读了有关 的更多信息后
akeyconvert
,我发现它就是我需要的工具,用于将密钥导入openafs
。该工具希望krb5
在 中找到输入密钥/etc/openafs/server/rxkad.keytab
,并将与 openafs 兼容的密钥输出到/etc/openafs/server/KeyFileExt
:MIT Kerberos 在 Krb5 1.17 中默认禁用了单 DES(可以
allow_weak_crypto
重新启用它),并在 Krb5 版本 1.18 中完全删除了单 DES 支持。不过,很可能您并不需要它;所有最新的 OpenAFS 版本(1.6.5 或更高版本,向后移植到 1.4.15+)都支持非 DES 服务密钥 - 如果您之前有
rxkad.keytab
,那么您已经在运行支持 rxkad-k5 的 OpenAFS 版本。rxkad-k5 和 rxkad-kdf 被添加到 OpenAFS 1.6.5(并且被反向移植到 1.4 系列的 1.4.15)。
使用的所有 OpenAFS 版本
KeyFileExt
(即 1.8.x)已经支持 rxkad-k5 和 rxkad-kdf。甚至原始的 rxkad-k5 也已经过时了,因为它仍然期望 KDC在 Kerberos 票证中返回 DES会话
aklog
密钥(因为 AFS rxkad 令牌格式只有 56 位会话密钥的空间)。由于现代 KDC 不再会发生这种情况,因此您实际上将使用一种名为rxkad-kdf的变体,它从 Kerberos 票证提供的任何强密钥中派生出 AFS 56 位会话密钥。(不过,无论怎样,它仍然是一个 56 位会话密钥......但至少它的生命周期非常有限 - 仍然比几个世纪以来无人轮换的 56 位服务密钥要好得多。)
OpenAFS 1.9 应该可以通过rxgk获得适当的 Kerberos 5 支持,但这还需要十年或二十年才能发布。
您可以在 IANA Kerberos 参数注册表中查找它。
不。这个包的存在可能是出于打包依赖性原因(Debian 喜欢将东西分开),和/或作为 OpenAFS kaserver 时代的遗物。
AFS 身份验证始终基于 Kerberos,但最初它有一个
kaserver
组件实现了稍微不兼容的 Kerberos IV的 AFS 风格(即原始的“rxkad”)。 kaserver 本质上是一个 Kerberos IV KDC,带有 AFS 风格的管理工具(“kas”命令类似于“pts”),当然还有 Ubik 数据库复制。(顺便说一下,这就是 AFS 的“仅 DES”限制的来源——Kerberos IV 仅支持 DES,AFS kaserver 也支持 DES,因此 rxkad 令牌的大小至今仅适合 56 位密钥。)
因此,从 Debian 打包的角度来看,在几个版本之前,您可以选择安装
aklog
直接从 kaserver 获取 rxkad 令牌的安装程序,以及安装aklog
获取 Krb5 票证并将其转换为 rxkad 令牌的安装程序。但由于 Krb4 如今已完全过时(除了仅限于单 DES 之外,它还存在一些关键问题),kaserver 已从 OpenAFS 中删除,您应该同时运行标准的 Kerberos 5 KDC。
是的,您应该使用
akeyconvert
,但如果您想使用 asetkey,可以这样做: