针对 Active Directory 验证 OpenBSD

sh-*_*eta 24 active-directory kerberos authentication openbsd

编辑:将其重新格式化为问答。如果有人可以将其从社区 Wiki 更改为典型问题,那也可能更合适。

如何针对 Active Directory 验证 OpenBSD?

sh-*_*eta 17

前言

在使用 PAM 的系统上,使用 Kerberos 对 Active Directory 进行身份验证非常简单,但 OpenBSD 则不然,这使得它变得更加困难。从 tcpdump 来看,看起来 PAM 系统只是在进行预身份验证,而 OpenBSD 的 bsd_auth 系统正在使用整个 Kerberos 身份验证过程。

无论如何,这花了我一段时间才弄明白,所以希望一些简洁的说明可以节省您的时间。

在我们开始之前,先做一些简短的说明:

  • 在尝试登录之前,用户必须存在于 OpenBSD 系统上。它们不是自动创建的。
  • 如果您希望自动创建用户,请查看 Samba/Winbind。我只遇到了麻烦(莫名其妙的崩溃、严重的日志垃圾邮件、不可靠的身份验证),所以我只在必要时使用它。
  • 这是在 OpenBSD 4.5 和 Windows Server 2003 上测试过的。我很确定它可以与 Win2k 一起使用,但是 YMMV。
  • 这个版本的 OpenBSD 使用 Heimdal 0.7.2。除了路径和 login.conf 之外的所有内容都可能适用于其他运行相同 Heimdal 的 *nix,但同样,YMMV。

指示

这些步骤假设您正在尝试针对域EXAMPLE.COM 对myuser@myhost.fqdn 进行身份验证。域控制器是 pdc.EXAMPLE.COM。

  1. 创建一个名为myhost的 Active Directory 用户帐户(这不是打字错误,这些说明不适用于计算机帐户)。禁用密码过期,不要让用户更改自己的密码。将密码设置为您喜欢的任何值 - 很快就会更改。

  2. 在新 OU 下创建用户帐户,将其从域用户组中删除并将其添加到专用组中,这可能是一个好主意。这完全取决于品味和您的安全布局。

  3. 在 pdc.EXAMPLE.COM 上,下载并安装 Windows Server Support Tools(具体来说,您将需要 ktpass.exe)

  4. 在 pdc.EXAMPLE.COM 上,运行:

    ktpass -out c:\temp\myhost.keytab -princ host/myhost.fqdn@EXAMPLE.COM -mapuser myhost -pType KRB5 _NT_PRINCIPAL +rndpass

    这会将 myhost 用户的密码更新为随机值 (+rndpass),将 Kerberos 主体“host/myhost.fqdn@EXAMPLE.COM”映射到 Active Directory 中的用户“myhost”,然后将主体和私钥信息转储到-out 密钥表文件。

  5. 安全地将 c:\temp\myhost.keytab 复制到 myhost 并从 pdc.EXAMPLE.COM 中删除该文件

  6. 在 myhost 上,将 AD 密钥表添加到您的主密钥表中:

    ktutil 复制 /path/to/myhost.keytab /etc/kerberosV/krb5.keytab

  7. 配置/etc/krb5.conf。以下是您需要的最低限度。有很多可用的选项,请查看联机帮助页了解更多详细信息。这只是将可接受的最大时钟偏差设置为 5 分钟,使EXAMPLE.COM 成为默认领域,并告诉Kerberos 如何在DNS 和Kerberos 领域之间进行转换。

    [libdefaults]
    clockskew = 300
    default_realm =EXAMPLE.COM

    [领域]
    EXAMPLE.COM = {
    default_domain =EXAMPLE.COM
    }

    [domain_realm]
    .EXAMPLE.COM =EXAMPLE.COM

  8. 验证您是否可以获得门票:

    # kinit Administrator@EXAMPLE.COM
    Administrator@EXAMPLE.COM's Password:
    # klist
    Credentials cache: FILE:/tmp/krb5cc_0
    Principal: Administrator@EXAMPLE.COM

    Issued Expires Principal
    Jun 4 21:41:05 Jun 5 07:40:28 krbtgt/EXAMPLE.COM@EXAMPLE.COM

  9. 修改 /etc/login.conf 以使用 Kerberos 身份验证。您确切的 login.conf 配置将根据您使用系统的方式而有所不同,但是要从普通安装到使用 Kerberos,只需在默认登录类下编辑并注释此行:

    :tc=auth-defaults:\

    并在其上方添加:

    :auth=krb5-or-pwd:\

    这首先检查 Kerberos,除非用户是 root。如果 Kerberos 失败,它将使用本地密码。

  10. 添加您要在此主机上进行身份验证的用户。除非您希望它们能够同时使用 Active Directory 和本地密码(不推荐),否则将密码留空。

    您可以清空现有用户的密码“chpass <user>”并将“加密密码:”值替换为星号 (*)

  11. 测试 SSH 和 Sudo。两者都应该与您的 Active Directory 凭据完美配合。

这里的所有都是它的。

链接

几个有用的网站:


Aar*_*son 5

对上述说明的更新,因为自那以后发生了一些变化。

在 OpenBSD 5.6 中,由于担心代码质量并且没有人愿意花时间对其进行审核,因此决定从基本发行版中删除 Heimdal。在 5.7 中,它作为一个包提供(对于 5.6,您需要从源代码构建或弄清楚如何在源代码中重新启用它)。因此,在按照上述说明操作之前,需要完成以下附加步骤:

-3. 从您最喜欢的镜像安装heimdallogin_krb5包。

-2. 复制/usr/local/libexec/auth/login_krb5*/usr/libexec/auth.

-1. 如果您打算大量使用 heimdal 工具,请添加/usr/local/heimdal/bin到您的系统路径中。否则,请确保在使用工具时使用其完整路径来引用这些工具。

此外,现在进入krb5.confkrb5.keytab文件/etc/heimdal