第 8 章 配置 RHEL 主机以使用 AD 作为身份验证提供程序
作为系统管理员,您可以在不将主机加入 AD 的情况下,使用 Active Directory (AD) 作为 Red Hat Enterprise Linux (RHEL) 主机的身份验证供应商。
例如在以下情况下可以实现:
- 您不想向 AD 管理员授予对启用和禁用主机的控制权。
- 主机(可以是一个公司 PC)只表示被您公司中的某一用户使用。
仅在很少情况下使用此方法。
考虑将系统完全加入 AD 或 Red Hat Identity Management (IdM)。将 RHEL 主机加入到域中可方便管理设置。如果您关注与将客户端直接加入 AD 中的客户端访问许可证,请考虑利用与 AD 信任协议中的 IdM 服务器。有关 IdM-AD 信任的更多信息,请参阅 规划 IdM 和 AD 之间的跨林信任 和 在 IdM 和 AD 之间安装信任。
此流程可让名为 AD_user 的用户使用 example.com 域中的 Active Directory(AD)用户数据库中设置的密码登录到 rhel_host 系统。在这个示例中,EXAMPLE.COM Kerberos realm 对应于 example.com 域。
先决条件
- 有到 rhel_host 的 root 访问权限。
- AD_user 用户帐户存在于 example.com 域中。
- Kerberos realm 是 EXAMPLE.COM。
-
rhel_host 尚未使用
realm join
命令加入到 AD。 您已安装了
sssd-proxy
软件包。$ dnf install sssd-proxy
流程
在本地创建 AD_user 用户帐户而不为其分配密码:
# useradd AD_user
打开
/etc/nsswitch.conf
文件进行编辑,并确保该文件包含以下行:passwd: sss files systemd group: sss files systemd shadow: files sss
打开
/etc/krb5.conf
文件进行编辑,并确保该文件包含以下部分和项目:# To opt out of the system crypto-policies configuration of krb5, remove the # symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated. includedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt spake_preauth_groups = edwards25519 default_realm = EXAMPLE.COM default_ccache_name = KEYRING:persistent:%{uid} [realms] EXAMPLE.COM = { kdc = ad.example.com admin_server = ad.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
创建
/etc/sssd/sssd.conf
文件,并将以下部分和行插入到该文件中:[sssd] services = nss, pam domains = EXAMPLE.COM [domain/EXAMPLE.COM] id_provider = proxy proxy_lib_name = files auth_provider = krb5 krb5_realm = EXAMPLE.COM krb5_server = ad.example.com
更改
/etc/sssd/sssd.conf
文件的权限:# chmod 600 /etc/sssd/sssd.conf
启动安全性系统服务守护进程(SSSD):
# systemctl start sssd
启用 SSSD:
# systemctl enable sssd
打开
/etc/pam.d/system-auth
文件,修改该文件使其包含以下部分和行:# Generated by authselect on Wed May 8 08:55:04 2019 # Do not modify this file manually. auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so
将
/etc/pam.d/system-auth
文件的内容复制到/etc/pam.d/password-auth
文件中。输入 yes 来确认覆盖文件的当前内容:# cp /etc/pam.d/system-auth /etc/pam.d/password-auth cp: overwrite '/etc/pam.d/password-auth'? yes
验证
为 AD_user 请求 Kerberos 票据 (TGT)。根据请求输入 AD_user 密码:
# kinit AD_user Password for AD_user@EXAMPLE.COM:
显示获得的 TGT:
# klist Ticket cache: KEYRING:persistent:0:0 Default principal: AD_user@EXAMPLE.COM Valid starting Expires Service principal 11/02/20 04:16:38 11/02/20 14:16:38 krbtgt/EXAMPLE.COM@EXAMPLE.COM renew until 18/02/20 04:16:34
AD_user 已使用 EXAMPLE.COM Kerberos 域中的凭据成功登录 rhel_host。