有谁熟悉使用 kerberos5 又称 pam_krb5.so 库在 /etc/pam.d/sudo 中验证 sudo 命令的可能性?
您好,kerberos 专家:)
我已经在 Debian Bookworm 上安装了 kerberos 服务器:
krb5-kdc/stable-security,now 1.20.1-2+deb12u2
krb5-kdc-ldap/stable-security,now 1.20.1-2+deb12u2
krb5-pkinit/stable-security,now 1.20.1-2+deb12u2
krb5-user/stable-security,now 1.20.1-2+deb12u2
使用 GSSAPI 和 Kerberos 对我网络上的任何主机进行 SSH 身份验证都很顺利。到目前为止没有问题。但是,当尝试通过 SSH 登录到 kerberos 服务器本身时,我无法让它工作,我不确定这里的问题是什么。
这是ssh -vvv ns01
从另一台主机(此例为 192.168.10.7)尝试登录 kerberos 服务器本身时显示的内容:
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
KDC returned error string: NO PREAUTH
并在尝试登录时在服务器上进行 krb5kdc 调试登录:
Aug 09 09:08:51 ns01.example.com krb5kdc[4557](info): TGS_REQ (8 etypes {aes256-cts-hmac-sha1-96(18), aes128-cts-hmac-sha1-96(17), aes256-cts-hmac-sha384-192(20), aes128-cts-hmac-sha256-128(19), DEPRECATED:des3-cbc-sha1(16), DEPRECATED:arcfour-hmac(23), camellia128-cts-cmac(25), camellia256-cts-cmac(26)}) 192.168.10.7: NO PREAUTH: authtime 0, etypes {rep=UNSUPPORTED:(0)} [email protected] for host/[email protected], Generic error (see e-text)
当远程登录到网络内的另一台服务器时,这是 krb5kdc 在这种情况下记录的内容(成功):
Aug 09 09:10:39 ns01.example.com krb5kdc[4557](info): TGS_REQ (1 etypes {aes256-cts-hmac-sha1-96(18)}) 192.168.10.7: ISSUE: authtime 1723186107, etypes {rep=aes256-cts-hmac-sha1-96(18), tkt=aes256-cts-hmac-sha1-96(18), ses=aes256-cts-hmac-sha1-96(18)}, [email protected] for krbtgt/[email protected]
服务器本身上的 keytab 与任何其他远程 ssh 主机一样:
Keytab name: FILE:/etc/krb5.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
4 09.08.2024 08:16:50 host/[email protected] (aes256-cts-hmac-sha1-96)
4 09.08.2024 08:16:50 host/[email protected] (aes128-cts-hmac-sha1-96)
对于如何进一步调试这个问题,有什么想法吗?
谢谢
要让计算机在不重新启动计算机的情况下更新其组成员身份,您可以使用命令清除 kerberos 票证klist -li 0x3e7 purge
。随后的gpupdate
或gpresult
将反映新的组成员资格。
但是,这似乎不适用于域控制器。为什么?
票证已成功清除,但后续gpresult /r
未反映更改。
从 Fedora 38 升级到 39 会导致使用 kerberos ( sec=krb5
) 从 Synology NAS 挂载 NFSv4 共享。使用
mount -v -t nfs -o nfsvers=4,minorversion=1,sec=krb5 10.123.99.2:/volume1/video /mnt/
在Fedora 39客户端上,我收到以下错误:
mount.nfs: timeout set for Sat Feb 24 12:25:20 2024
mount.nfs: trying text-based options 'nfsvers=4,sec=krb5,vers=4.1,addr=10.123.99.2,clientaddr=10.123.99.10'
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 10.123.99.2:/volume1/video
幸运的是,有关 Synology NAS(服务器)的信息更有帮助:我在以下位置收到以下错误/var/log/messages
:
svcgssd[10330]: ERROR: GSS-API: error in handle_nullreq: gss_accept_sec_context(): GSS_S_FAILURE (Unspecified GSS failure. Minor code may provide more information) - Encryption type aes256-cts-hmac-sha384-192 not permitted
由于另一台Fedora 38仍然可以完美运行,我认为新的Fedora 39系统默认使用 Synology NAS 不支持的新加密类型。因此,我尝试了allow_weak_crypto = true
,default_tgs_enctypes = aes256-cts-hmac-sha1-96
和/或default_tkt_enctypes = aes256-cts-hmac-sha1-96
in /etc/krb5.conf
,但对服务器上的问题及其错误消息没有影响。(它破坏了使用我的标准用户名登录。我使用 FreeIPA 服务器进行授权和身份验证,所以我想这与其他加密不同。)
在 reddit 上,我得到了玩 的提示update-crypto-policies
。这也行不通。
有没有办法设置使用哪种加密?还是您认为还有其他问题?
谢谢!
最近的安全更新已开始导致日志中出现以下警告kdc
:
krb5kdc[1127011]: Stash file /etc/krb5kdc/stash uses DEPRECATED enctype des3-cbc-sha1
鉴于较新版本的 openSSL 将完全停止支持各种密码,我想在我的 kerberos 系统崩溃之前将此文件更改为未弃用的类型。
如何更改存储文件的加密类型?
我需要在配置中更改哪些内容才能继续读取存储文件?
tl;dr - 我如何使用领域或 sssd(未安装 klist)检查用户的 kerberos 票证的详细信息以确认它们正在按照我试图配置的方式进行更新?
嗨 - 我在 Debian 11 系统上,该系统是 AD/域,并结合了 SSSD 和领域。值得注意的是,我没有任何软件包提供我在以前的平台上熟悉的“kinit”、“klist”等命令。
每次域用户登录时,他们都会获得一张新的 kerberos 票证,我相信通过在 /tmp 中创建一个新文件来判断,类似于“/tmp/krb5cc_1922807467_vhNkj5”。这允许他们使用 Windows 凭据访问网络资源。我注意到门票似乎会在 12-24 小时后过期,因此我正在寻找一种方法来请求有效期更长的门票,直到我的域将提供的最大值为止,和/或自动更新现有门票并获得新门票。这样我就可以允许用户使用 cron 安排任务并保证有效的票证可用。
我在 /etc/sssd/sssd.conf 中编辑了一些设置,试图增加可再生生命周期并设置票据的更新间隔并重新启动 sssd 服务。现在我一直在尝试确认这些设置已被采用——我无法找到一种方法来列出活动票证的详细信息。我可以看到我每次登录时都在创建我的票证文件,但无法判断它是否在我为测试目的设置的短时间间隔内更新。
有没有办法使用 sssd、realm 或我可能已经安装/启用的其他东西来显示用户的票证状态/详细信息?如果没有,是否有另一个我可以安装的包(例如提供 klist 的东西)不会破坏我现有的领域/sssd 配置并且不需要 AD 管理员凭据?最终,我只想要一种方法来确认我的尝试是否有效。
在单 AD 林的 DC 上,我以默认域管理员Administrator
(在本例中也是企业管理员)身份登录。在提升的 PowerShell 中,我尝试使用以下命令获取 Kerberos 加密类型(如此处所述):
ksetup /getenctypeattr my.example.com
但我收到一条错误消息:
Query of attributes on MY.EXAMPLE.COM failed with 0xc0000034
Failed /GetEncTypeAttr : 0xc0000034
结果(很可能),我在尝试设置加密类型时也会收到此错误,如this question中所述,不幸的是,该问题目前没有一个严肃的答案。
这确实发生在 Windows Server 2016 和 Windows Server 2019 上,它们大多使用默认设置进行设置。一个简单的怎么会失败?错误代码似乎没有记录。有人知道如何解决或解决这个问题吗?
在 GUI(Active Directory 域和信任MMC 管理单元 ( domain.msc
))中,您可以为信任关系设置“其他域支持 Kerberos AES 加密”设置:
我正在寻找一种以编程方式设置此设置的方法。我已经查看了Install-ADDSDomain
PowerShell cmdlet 以及该netdom TRUST
工具,但两者似乎都不包含设置Kerberos AES 加密设置的选项。
有人可以告诉我,如何以编程方式设置此设置?
我有一个简单的 MS ADDS 多域林设置,带有一个父域和一个子域。我使用这个官方文档成功地将 RHEL 8 服务器加入了子域。所有操作系统都已通过使用尽可能多的默认值进行设置。我可以通过使用子域的 AD 帐户成功 SSH 到 RHEL 服务器。但是当我尝试使用父域的帐户时,登录失败。我一提交父域的用户名,就journalctl
报如下错误:
sssd_be[...]: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (KDC has no support for encryption type)
我检查了每个域的 DC,可以确认所有 DC 都支持相同的三种默认加密类型(存储在msDS-SupportedEncryptionTypes
每个 DC 计算机帐户的属性中):
- RC4_HMAC_MD5
- AES128_CTS_HMAC_SHA1_96
- AES256_CTS_HMAC_SHA1_96
我还确认 RHEL 8 提供了合适的加密类型 ( /etc/crypto-policies/back-ends/krb5.config
):
[libdefaults]
permitted_enctypes = aes256-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192 camellia256-cts-cmac aes128-cts-hmac-sha1-96 aes128-cts-hmac-sha256-128 camellia128-cts-cmac
因此,应该有两个匹配项:aes128-cts-hmac-sha1-96
和aes256-cts-hmac-sha1-96
。正如我已经说过的,它在子域中运行良好。那么,为什么没有适合父域的加密类型呢?
我正在尝试将主目录从我的 NAS 导出到 ubuntu 客户端 - 服务器是 TrueNAS Scale,它是基于 Debian 的。Kerberos 可以正常工作,因此用户可以获得适当的票证以对服务器进行身份验证。
我的主要目标是用户可以从服务器上挂载他们的主目录。
我在服务器上有一个名为 home 的共享,每个用户有一个目录。主目录归根用户所有,子目录归用户所有。但是,如果我不使用 maproot 或 mapall,即使我设法挂载共享,如果挂载 /home/folder,用户也无法将任何内容写入他的文件夹。
如果我使用 maproot=root,用户会挂载它,但他写的所有内容都保存为 root。我在这里迷路了,但似乎id映射可能有问题。文件的 uid/gid 在服务器和客户端、显示的正确名称等方面是相同的。这让我相信映射是正确的 - 但是,当使用 maproot=root 时,为什么我最终可以访问不支持的文件夹不属于我,为什么我用那个用户创建的所有东西都归根用户所有?
我怎样才能正确地导出它,以便我得到根压扁,以及用户只能访问他们自己的目录?