5.3. 使用 Active Directory

本节介绍如何将直接 Active Directory (AD)用作卫星服务器的外部身份验证源。

注意

您可以将 Active Directory 附加为外部身份验证源,且不支持单点登录。更多信息请参阅 第 5.1 节 “使用 LDAP”。如需示例配置,请参阅 如何在 Satellite 上使用 TLS 配置 Active Directory 身份验证

直接 AD 集成意味着 Satellite 服务器直接加入到存储了身份的 AD 域。推荐的设置由两个步骤组成:

5.3.1. GSS-Proxy

Apache 中 Kerberos 身份验证的传统进程需要 Apache 进程具有 keytab 文件的读取权限。通过 GSS-Proxy,您可以通过删除对 keytab 文件的访问权限,同时保留 Kerberos 身份验证功能,为 Apache 服务器实施更严格的权限隔离。当使用 AD 作为 Satellite 的外部身份验证源时,建议实施 GSS-proxy,因为 keytab 文件中的密钥与主机密钥相同。

在作为 Satellite 服务器的基本操作系统的 Red Hat Enterprise Linux 上执行以下步骤。对于本节中的示例,EXAMPLE.ORG 是 AD 域的 Kerberos 域。通过完成流程,属于 EXAMPLE.ORG 域的用户可以登录到 Satellite 服务器。

5.3.2. 使用 AD 服务器注册 Satellite 服务器

在 Satellite CLI 中,将卫星服务器注册到 Active Directory 服务器。

前提条件

  • 已安装 GSS-proxy 和 nfs-utils。

    安装 GSS-proxy 和 nfs-utils:

    # satellite-maintain packages install gssproxy nfs-utils

流程

  1. 安装所需的软件包:

    # satellite-maintain packages install sssd adcli realmd ipa-python-compat krb5-workstation samba-common-tools
  2. 使用 AD 服务器注册 Satellite 服务器。您可能需要具有管理员权限才能执行以下命令:

    # realm join -v EXAMPLE.ORG --membership-software=samba -U Administrator
    注意

    您必须使用 Samba 客户端软件注册 AD 服务器,才能在 第 5.3.3 节 “配置带有 GSS-Proxy 的直接 AD 集成” 中创建 HTTP keytab。

5.3.3. 配置带有 GSS-Proxy 的直接 AD 集成

在 Satellite CLI 中,配置与 GSS-proxy 的直接 Active Directory 集成。

前提条件

流程

  1. 创建 /etc/ipa/ 目录和 default.conf 文件:

    # mkdir /etc/ipa
    # touch /etc/ipa/default.conf
  2. default.conf 文件中添加以下内容:

    [global]
    server = unused
    realm = EXAMPLE.ORG
  3. 使用以下内容创建 /etc/net-keytab.conf 文件:

    [global]
    workgroup = EXAMPLE
    realm = EXAMPLE.ORG
    kerberos method = system keytab
    security = ads
  4. 确定 Apache 用户的有效用户 ID:

    # id apache

    Apache 用户不得访问 keytab 文件。

  5. 使用以下内容创建 /etc/gssproxy/00-http.conf 文件:

    [service/HTTP]
    mechs = krb5
    cred_store = keytab:/etc/httpd/conf/http.keytab
    cred_store = ccache:/var/lib/gssproxy/clients/krb5cc_%U
    euid = ID_of_Apache_User
  6. 创建 keytab 条目:

    # KRB5_KTNAME=FILE:/etc/httpd/conf/http.keytab net ads keytab add HTTP -U administrator -d3 -s /etc/net-keytab.conf
    # chown root.apache /etc/httpd/conf/http.keytab
    # chmod 640 /etc/httpd/conf/http.keytab
  7. 在 Satellite 中启用 IPA 身份验证:

    # satellite-installer --foreman-ipa-authentication=true
  8. 启动并启用 gssproxy 服务:

    # systemctl restart gssproxy
    # systemctl enable --now gssproxy
  9. 要将 Apache 服务器配置为使用 gssproxy 服务,请创建一个 systemd 置入文件,并添加以下内容:

    # mkdir -p /etc/systemd/system/httpd.service.d/
    # vi /etc/systemd/system/httpd.service.d/gssproxy.conf
    [Service]
    Environment=GSS_USE_PROXY=1
  10. 对服务应用更改:

    # systemctl daemon-reload
  11. 启动并启用 httpd 服务:

    # systemctl restart httpd
重要

通过直接 AD 集成,HBAC 到 Red Hat Identity Management 不可用。另外,您可以使用组策略对象(GPO),使管理员能够在 AD 环境中集中管理策略。要确保正确的 GPO 到 PAM 服务映射,请将以下 SSSD 配置添加到 /etc/sssd/sssd.conf 中:

access_provider = ad
ad_gpo_access_control = enforcing
ad_gpo_map_service = +foreman

此处,foreman 是 PAM 服务名称。如需有关 GPO 的更多信息,请参阅 将 RHEL 系统直接与 Windows 目录服务器集成 中的 SSSD 如何解释 GPO 访问控制规则

验证

验证 SSO 是否按预期工作。

使用正在运行的 Apache 服务器时,如果客户端具有有效的 Kerberos 票据,则对服务器发出 HTTP 请求的用户将进行身份验证。

  1. 使用以下命令检索 LDAP 用户的 Kerberos 票据:

    # kinit ldapuser
  2. 使用以下命令查看 Kerberos 票据:

    # klist
  3. 使用以下命令,查看基于 SSO 的身份验证的输出:

    # curl -k -u : --negotiate https://satellite.example.com/users/extlogin

    这会返回以下响应:

    <html><body>You are being <a href="https://satellite.example.com/users/4-ldapuserexample-com/edit">redirected</a>.</body></html>

5.3.4. Web 浏览器中的 Kerberos 配置

有关配置 Firefox 的详情,请参考 Red Hat Enterprise Linux 在 RHEL 中配置身份验证和授权 指南中的 配置 Firefox 以为单点登录使用 Kerberos

如果您使用 Internet Explorer 浏览器,请将卫星服务器添加到本地 Intranet 或受信任的站点列表中,然后打开 启用集成 Windows 身份验证设置。详情请查看 Internet Explorer 文档。

5.3.5. 带有 Cross-Forest Trust 的活动目录

Kerberos 可以创建 跨林信任,来定义两个其他独立的域林之间的关系。域林是域的层次结构;AD 和红帽身份管理构成了林。由于 AD 和 Red Hat Identity Management 之间启用了信任关系,AD 用户可以使用一组凭证访问 Linux 主机和服务。如需有关跨林信任的更多信息,请参阅在 Red Hat Enterprise Linux 规划身份管理 中的 规划 IdM 和 AD 之间的跨林信任

在 Satellite 视图中,配置过程与 Red Hat Identity Management 服务器集成相同,而无需配置跨林信任。Satellite 服务器必须在 IdM 域中注册,并集成,如 第 5.2 节 “使用红帽身份管理” 所述。

5.3.6. 将 Red Hat Identity Management Server 配置为使用 Cross-Forest Trust

在 Red Hat Identity Management 服务器上,将服务器配置为使用 跨林信任

流程

  1. 启用 HBAC:

    1. 创建一个外部组,并将 AD 组添加到其中。
    2. 将新的 external 组添加到 POSIX 组。
    3. 在 HBAC 规则中使用 POSIX 组。
  2. 配置 sssd 以传输 AD 用户的额外属性。

    • 将 AD 用户属性添加到 /etc/sssd/sssd.conf 中的 nssdomain 部分。例如:

      [nss]
      user_attributes=+mail, +sn, +givenname
      [domain/EXAMPLE.com]
      ...
      krb5_store_password_if_offline = True
      ldap_user_extra_attrs=email:mail, lastname:sn, firstname:givenname
      
      [ifp]
      allowed_uids = ipaapi, root
      user_attributes=+email, +firstname, +lastname
    • 验证 AD 属性值。

      # dbus-send --print-reply --system --dest=org.freedesktop.sssd.infopipe /org/freedesktop/sssd/infopipe org.freedesktop.sssd.infopipe.GetUserAttr string:ad-user@ad-domain array:string:email,firstname,lastname