8.8. 在 IdM 客户端上为 sudo 启用 GSSAPI 身份验证,并强制实施 Kerberos 身份验证指标
您可以通过 pam_sss_gss.so
PAM 模块在身份管理(IdM)客户端上启用通用安全服务应用程序接口(GSSAPI)身份验证,如 sudo
和 sudo -i
。另外,您只能启用使用智能卡登录的用户,以便使用 Kerberos 票据向这些服务进行身份验证。
您可以将此流程作为模板,使用 SSSD 为其他 PAM 感知的服务配置 GSSAPI 身份验证,并进一步限制只对那些在其 Kerberos 票据上附加了特定身份验证指标的用户进行访问。
但是,使用身份验证指标限制访问目前有两个限制:
- 只有基于 MIT Kerberos 的部署才支持身份验证指标。这些部署包括 Fedora 中的 RHEL IdM、D FreeIPA 和 Samba AD DC。
- 身份验证指标在域边界上从 Kerberos 票据中删除。
因此,如果您想通过使用 pam_gssapi_indicators_map =
访问,则您只能对存储在 IdM LDAP 中的用户应用此限制。向其他存储的用户(如 Active Directory 中存储的用户发出的票据)无法满足 sudo
:pkinit 来限制 sudopam_gssapi_indicators_map = sudo:pkinit
条件。
先决条件
-
您已为应用于 IdM 主机的 IdM 用户创建了
sudo
规则。在本例中,您已创建了idm_user_reboot
sudo
规则,为idm_user
帐户授予在idmclient
主机上运行/usr/sbin/reboot
命令的权限。 -
您已为
idmclient
主机配置了智能卡身份验证。 -
您需要
root
权限来修改/etc/sssd/sssd.conf
文件和/etc/pam.d/
目录中的 PAM 文件。
流程
-
打开
/etc/sssd/sssd.conf
配置文件: 将以下条目添加到
[domain/<domain_name>]
部分中。[domain/<domain_name>] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
[domain/<domain_name>] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
Copy to Clipboard Copied! -
保存并关闭
/etc/sssd/sssd.conf
文件。 重启 SSSD 服务以载入配置更改。
systemctl restart sssd
[root@idmclient ~]# systemctl restart sssd
Copy to Clipboard Copied! 确定您是否已选择了
sssd
authselect
配置文件:authselect current
# authselect current Profile ID: sssd
Copy to Clipboard Copied! 可选:选择
sssd
authselect
配置文件:authselect select sssd
# authselect select sssd
Copy to Clipboard Copied! 启用 GSSAPI 身份验证:
authselect enable-feature with-gssapi
# authselect enable-feature with-gssapi
Copy to Clipboard Copied! 将系统配置为只使用智能卡验证用户:
authselect with-smartcard-required
# authselect with-smartcard-required
Copy to Clipboard Copied!
验证
以
idm_user
帐户登录到主机,并使用智能卡进行身份验证。ssh -l idm_user@idm.example.com localhost
[root@idmclient ~]# ssh -l idm_user@idm.example.com localhost PIN for smart_card
Copy to Clipboard Copied! 验证作为智能卡用户,您有一个票据授予票据。
klist
[idm_user@idmclient ~]$ klist Ticket cache: KEYRING:persistent:1358900015:krb_cache_TObtNMd Default principal: idm_user@IDM.EXAMPLE.COM Valid starting Expires Service principal 02/15/2021 16:29:48 02/16/2021 02:29:48 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM renew until 02/22/2021 16:29:44
Copy to Clipboard Copied! 显示允许
idm_user
帐户执行的sudo
规则。sudo -l
[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idmuser on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user may run the following commands on idmclient: (root) /usr/sbin/reboot
Copy to Clipboard Copied! 使用
sudo
重启机器,而不用指定密码。sudo /usr/sbin/reboot
[idm_user@idmclient ~]$ sudo /usr/sbin/reboot
Copy to Clipboard Copied!