长时间不管理kerberos会变砖吗?

长时间不管理kerberos会变砖吗?

我有一个奇怪的问题,kerberos/openldap 环境已经变砖。我无法向其中添加新用户、计算机或其他内容,因为我尝试的所有操作都会导致 SERVER_NOT_FOUND PERMISSION_DENIEDINSUFFICIENT ACCESS、的各种变化CLIENT_NOT_FOUND

如果在 kerberos 环境中(例如一年)没有进行任何修改,通常会发生这种情况吗?

其目的是保护 NFS 共享。现在我想添加另一个 NFS 共享来复制数据,但我无法以任何方式更改配置。

即使登录为root,使用kadmin.local我也无法执行以下任何操作:

  • 创建一个新的管理员用户
  • 修改admin用户的密码。
  • 以管理员用户身份登录
  • 添加校长

我可以做这个:

  • 使用 openLDAP 的密码执行命令(例如添加条目)。

我也可以这样做:

  • 安装并使用现有共享。 (这意味着 openLDAP 和 krb5 都仍在运行,我只是无法更改任何配置)。

我验证了这些事情。

  • krb5kdc/openldap 正在运行
  • ACL 在 .acl 文件中设置
  • 领域名、域名等正确
  • Hosts 文件将域名指向本地主机。
  • krb5kdc、slapd、kadmind 正在监听各自的端口。
  • 不存在防火墙规则
  • Apparmor/SELinux 不存在。

这些错误是由各个系统吐出的。例如:krb5kdc如果尝试通过以下方式添加主体,则吐出这一点kadmin.local

10.0.26.21: SERVER_NOT_FOUND: kadmin/[email protected] for kadmin/[email protected], Server not found in Kerberos database

虽然 kadmin 说:Principal add failed: Insufficient access while creating "[email protected]@COMPANY.COM"

这会产生一个 catch-22,不知何故需要一个主体来添加一个主体?我的印象是,kadmin.local在创建设置时这是一种“引导”机制。该错误消息没有任何意义。

尝试登录kadmin/admin也不起作用,同样的消息来自krb5kdc

我也看到了这个,我觉得很有趣:preauth spake failed to initialize: No SPAKE preauth groups configured。搜索这个魔法SPAKE(为什么是难以理解的缩写词),没有发现任何有用的东西。

尝试slapcat列出 ldap 数据库的所有内容,我发现kadmin/adminkrbLoginFailedCount: 0.那么就 LDAP 而言,没有进行任何登录?或许?我不知道这意味着什么,因为文档(这些组件如何相互交互?)很糟糕。

尝试在lo或上捕获数据包all interfaces,根本没有发送任何 LDAP 流量。即使 和/etc/krb5.conf都有/etc/krb5kdc/kdc.conf此部分:

[dbmodules]
    openldap_ldapconf = {
        ldap_servers = ldapi:///

        

在我把它从轨道上发射出来并从头开始之前,还有其他可以尝试的事情吗?

答案1

不,它不能。

10.0.26.21: SERVER_NOT_FOUND: kadmin/[email protected] for kadmin/[email protected], Server not found in Kerberos database

这看起来根本不像您在使用“kadmin.local”。虽然它是普通的如果kadmin/<fqdn>主体不存在(而是kadmin/admin首选主体),则只有基于 RPC 的“kadmin”首先会获得此类票证,而“kadmin.local”则直接访问您的 LDAP 数据库。

另外,从错误消息来看,您似乎正在使用-p kadmin/admin.不要这样做 - 这是服务主体,而不是“用户”或“管理员”主体。 (不过,kadmin.local 根本不需要任何主体,因为它本身不使用 Kerberos。)

虽然 kadmin 说:主体添加失败:创建时访问权限不足”[电子邮件受保护]@COMPANY.COM”

除了访问问题之外,这看起来不像 Kerberos 主体名称的有效语法。该格式service@fqdn通常由 GSSAPI 使用,但已转换service/fqdn为 Kerberos。

这会产生一个 catch-22,不知何故需要一个主体来添加一个主体?我的印象是 kadmin.local 在创建设置时是一种“引导”机制。该错误消息没有任何意义。

确实不是,因为没有任何你所展示的内容将被打印出来kadmin.local。听起来您正在尝试运行基于常规网络的系统kadmin。 (是否有任何文件系统损坏会导致前者的内容被后者覆盖?是否有人不小心将cp另一个覆盖了?)

尝试 slapcat 列出 ldap 数据库的所有内容,我发现 kadmin/admin 有krbLoginFailedCount: 0.那么就 LDAP 而言,没有进行任何登录?

这是一个服务主体,而不是客户端(用户)主体,因此不会对其进行任何登录。此属性仅跟踪对用户帐户执行了多少次kinit操作,而不跟踪为特定服务发出了多少票证。

(主机主体通常既是客户端又是服务,但事实并非如此。)

即使对于客户端主体,如果 KDC 被授予对后端 LDAP 数据库的只读访问权限,则该值也可能为零,这种情况并不罕见。

就 LDAP 而言,还没有登录?或许?我不知道这意味着什么,因为文档(这些组件如何相互交互?)很糟糕。

在这种情况下,LDAP 实际上只不过是一个哑数据库。 krb5kdc 服务(或 kadmin.local 工具)连接到它并读取或写入一些数据。那里不与 Kerberos 身份验证交互,或者kinit– 最多,该服务有一个 LDAP 密码(在 ldap.stash 中),krb5kdc 和 kadmin.local 都使用该密码来访问数据库内容。

我还看到了这个,我觉得很有趣:preauth spake failed to initialize: No SPAKE preauth groupsconfigured。搜索这个神奇的 SPAKE(为什么是难以理解的缩写词),没有发现任何有用的东西。

就缩写词而言,它与“RSA”或“AES”属于同一系列。它是一种加密算法,可以选择用于加强基于密码的kinit网络监控(离线密码破解)。

SPAKE 是可选的——现有的传统(时间戳)预认证机制始终起作用。

尝试在 lo 或所有接口上捕获数据包,根本没有发送 LDAP 流量。即使 /etc/krb5.conf 和 /etc/krb5kdc/kdc.conf 都有此部分:

ldap_servers = ldapi:///

那是因为你有这个部分。它告诉 LDAP 客户端代码使用 Unix 套接字/run/openldap/ldapi而不是本地 TCP 连接。

切换您的 LDAP 服务器olcLogLevelstats获取有关正在进行的查询的更多信息。

相关内容