AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 777234
Accepted
user84207
user84207
Asked: 2024-05-28 07:17:50 +0800 CST2024-05-28 07:17:50 +0800 CST 2024-05-28 07:17:50 +0800 CST

帮助将 Kerberos 密钥导入 openafs

  • 772

我在将 Kerberos 密钥导出和导入 openafs 时遇到了麻烦。

我的第一个问题是,当使用addprinc和ktadd命令时kadmin.local,加密密钥类型-e选项似乎被忽略。例如,当我尝试添加 type 的键时,似乎会添加des-cbc-crc:v4type 的键: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.

我被很多相关的问题困扰着:

  1. 为什么kadmin似乎忽略我指定的加密类型?

  2. 如何确定我的 openafs 是否正在使用该rxkad-k5扩展?我通过apt-cache search rxkad-k5和搜索了 debian 软件包,rxkad但什么也没找到。

  3. 由于aes256-cts-hmac-sha1-96看起来像一个字符串标识符,我如何确定此加密的“krb5 加密类型编号”以便通过 asetkey 导入它?

  4. 我注意到openafs-krb5是来自的一个单独的包openafs-{fileserver,dbserver,client}。有没有推荐的方法来管理 debian 上的 openafs 身份验证而无需设置 kerberos?

  5. 我发现akeyconvert声称可以帮助导入密钥from the krb5 keytab format to the KeyFileExt format。我应该使用akeyconvert它来将密钥转换afs.keytab为 openafs 吗?

kerberos
  • 2 2 个回答
  • 14 Views

2 个回答

  • Voted
  1. user84207
    2024-05-28T08:02:02+08:002024-05-28T08:02:02+08:00

    在阅读了有关 的更多信息后akeyconvert,我发现它就是我需要的工具,用于将密钥导入openafs。该工具希望krb5在 中找到输入密钥/etc/openafs/server/rxkad.keytab,并将与 openafs 兼容的密钥输出到/etc/openafs/server/KeyFileExt:

    sudo cp /tmp/afs.ktab /etc/openafs/server/rxkad.keytab
    sudo akeyconvert -all
    
    $ sudo asetkey list
    rxkad_krb5      kvno    ? enctype ?; key is: ????????????????????????????????
    rxkad_krb5      kvno    ? enctype ?; key is: ????????????????????????????????????????????????????????????????
    All done.
    
    • 1
  2. Best Answer
    u1686_grawity
    2024-06-09T01:00:46+08:002024-06-09T01:00:46+08:00

    为什么 kadmin 似乎忽略我指定的加密类型?

    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 版本。

    如何确定我的 openafs 是否使用 rxkad-k5 扩展?我通过 apt-cache search rxkad-k5 和 rxkad 搜索了 debian 软件包,但什么也没找到。

    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 支持,但这还需要十年或二十年才能发布。

    由于 aes256-cts-hmac-sha1-96 看起来像一个字符串标识符,我如何确定此加密的“krb5 加密类型编号”,以便通过 asetkey 导入它?

    您可以在 IANA Kerberos 参数注册表中查找它。

    我注意到 openafs-krb5 是一个独立于 openafs-{fileserver,dbserver,client} 的软件包。有没有推荐的方法来管理 debian 上的 openafs 身份验证而无需设置 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 声称可以帮助将密钥从 krb5 keytab 格式导入到 KeyFileExt 格式。我应该使用 akeyconvert 将我的 afs.keytab 密钥转换为 openafs 吗?

    是的,您应该使用akeyconvert,但如果您想使用 asetkey,可以这样做:

    #!/usr/bin/env bash
    
    # https://www.iana.org/assignments/kerberos-parameters/kerberos-parameters.xhtml
    declare -A etypes=(
        ["aes256-cts-hmac-sha1-96"]=18
        ["aes128-cts-hmac-sha1-96"]=17
        ["des3-cbc-sha1"]=16
        ["arcfour-hmac"]=23
    )
    
    declare keytab="/etc/openafs/server/rxkad.keytab"
    declare ThisCell=$(< /etc/openafs/ThisCell)
    
    # NOTE: This expects the MIT flavor of `klist`.
    klist -ekt "$keytab" | while read -r kvno _ _ princ etype; do
        princ=${princ%%@*}
        if [[ "$princ" == "afs/$ThisCell" ]]; then
            etype=${etype//[()]}
            etype_id=${etypes[$etype]}
            if [[ "$etype_id" ]]; then
                (set -x; asetkey add rxkad_krb5 "$kvno" "$etype_id" "$keytab" "$princ")
            else
                echo "$0: unknown etype $etype" >&2
            fi
        fi
    done
    
    • 0

相关问题

  • krb5.keytab 条目需要具有大写的服务类型

  • Samba 4.11 和 des-cbc-md5

  • centos 和 kerberized nfs 工作正常,但仅适用于 nfs3

  • Kerberos 领域名称的要求是什么?

  • 在 Kerberos 数据库中找不到主机/远程主机名@REALM.COM

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve