使用 Kerberos 5 在 Linux 中使用 Active Directory 登录

使用 Kerberos 5 在 Linux 中使用 Active Directory 登录

我在使用安装了 UNIX 系统支持的 Windows 2008 Server 上的 Active Directory 为 Linux(确切地说是 Fedora Core 15)上的用户设置身份验证时遇到了问题。我已成功设置 Kerberos,并测试使用kinit -p <login>klist查看票据。但我仍然无法登录。

为了减少对我无用的答案:不允许使用 Samba、Winbind、Likewise 或其他软件。仅允许使用 NIS/LDAP。

澄清:我想设置具有本地和 SSH 访问权限的客户端机器。

更新:我通过 LDAP 配置了 AD 访问,getent passwd 106289gmgetent shadow给出了有效的响应,但getent group没有显示任何 AD 组。

答案1

如果您想要“简单的方法”,我有一些使用system-config-authenticationWinbind 的良好体验,它以 GUI 方式实现。显然,这不是明确的 Kerberos,所以如果您愿意,请适当地投反对票。您可以使用 Winbind,但如果这更适合您的要求,它也明确允许 LDAP。我收到有关 NSS-LDAP 库的不祥红色错误,

未找到 /lib64/libnss_ldap.so.2 文件,但该文件是 LDAP 支持正常工作所必需的。安装nss-pam-ldapd包,它提供了此文件。

但我确信您可以使用 yum 轻松安装它。您说您想要 Kerberos,但又说只允许 NIS/LDAP。那么为什么不像访问 LDAP 一样访问 AD 呢?根据我的经验,这绝对是可能的。它还为您提供了配置 Kerberos 的选项。请参阅屏幕截图。我所讨论的 GUI 实用程序的示例屏幕截图

提示,提示,是的Fedora 15, 不是Fedora 核心并且一直不是“核心”一段时间。我不会拿与名称更改相关的臃肿开玩笑(作为一名非常忠实的 Fedora 用户)。

答案2

通过 Kerberos 进行身份验证是一回事,能够登录又是另一回事。要登录,您需要:

  1. 有效的身份验证(部分完成:由 kerberos 提供。必须检查 pam login/auth 是否认为这足够了)
  2. 有效的用户 ID 和组 ID(通常由 winbind、likely、ldap、Centrify、unix 的 AD 服务提供。或者在本地的 /etc/passwd、/etc/group 文件中)
  3. /etc/nsswitch.conf 中针对用户和组的有效查找条目和顺序。
  4. 有效的 shell 和 home(通常预先创建或自动挂载)

注1:由于你可以做getent passwd但不能getent group,我怀疑您正在使用 Active-Directory Services for Unix 映射到 LDAP 方法。您是否在内部为 Domain\Domainusers 设置了有效的 gid?据我所知,Kerberos 不提供(或检查)组。能够看到 uid 条目意味着 LDAP 映射正确,但 gid 条目可能不在 LDAP 中。

注意 2:LDAP 在单个查询中可以返回的条目数也有限制,并且可能需要一些时间来提取结果。你等的时间够长了吗?你可以具体检查一下条目,比如getent passwd user1getent passwd Domain\\user1getent group domain-groupname-shown-in-getent-passwd。这应该可以绕过查找时间,甚至超时。

答案3

您使用的是哪个版本的 AD?根据版本,需要安装或启用标准架构的扩展。对 Linux 系统进行身份验证的用户需要在 AD 中设置其他参数。

此外,如果看不到配置文件,也不知道在 auth 日志中看到的具体错误消息,就很难提供帮助。如果您能够成功获取票证,则可能意味着您的 kerberos 设置是正确的。但是,pam、nsswitch 和 ldap 也必须全部正确配置。

tcpdump 在这些情况下也非常有用。有时错误消息并不是很有用,而直接观察线路上的对话则非常有用。

答案4

您是否在 PAM 内启用了 Kerberos 登录?

查找/etc/pam.d/system-auth显示“auth adequate pam_krb5.so”的行(或类似内容)。如果没有看到,请运行authconfig --enablekrb5 --update,确保文件中出现类似行,然后尝试再次登录。

相关内容