通过 Active Directory 对 OpenBSD 进行身份验证

通过 Active Directory 对 OpenBSD 进行身份验证

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

如何根据 Active Directory 验证 OpenBSD?

答案1

前言

在使用 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。域控制器是 pdc.EXAMPLE.COM。

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

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

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

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

    ktpass -out c:\temp\myhost.keytab -princ host/[电子邮件保护]-mapuser 我的主机-pType KRB5 _NT_PRINCIPAL +rndpass

    这会将 myhost 用户的密码更新为随机密码 (+rndpass),映射 Kerberos 主体“host/[电子邮件保护]”给 Active Directory 中的用户“myhost”,然后将主体和私钥信息转储到 -out keytab 文件中。

  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 = {
    默认域 = EXAMPLE.COM
    }

    [域名]
    .EXAMPLE.COM = EXAMPLE.COM

  8. 确认您是否可以获取票证:

    # kinit [email protected]
    [email protected]'s Password:
    # klist
    Credentials cache: FILE:/tmp/krb5cc_0
    Principal: [email protected]

    Issued Expires Principal
    Jun 4 21:41:05 Jun 5 07:40:28 krbtgt/[email protected]

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

    :tc=auth-defaults:\

    并在其上方添加:

    :auth=krb5-or-pwd:\

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

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

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

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

这里的所有都是它的。

链接

一些有用的网站:

答案2

由于自那时起一些事情已经发生了变化,因此对上述说明进行了更新。

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

-3.从您最喜欢的镜像安装heimdal和软件包。login_krb5

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

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

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

相关内容