使用连接到 Active Directory 的主机执行 sudo 时出现问题(sssd、kerberos 本地 sudoers 文件)

使用连接到 Active Directory 的主机执行 sudo 时出现问题(sssd、kerberos 本地 sudoers 文件)

我正在为 Alma 8 盒配置 Active Directory 身份验证,使用 SSSD、Kerberos 和初始 SSH 密钥进行登录,该密钥存储在 Active Directory 对象中,以及列出允许 sudo 的组的本地 sudoers 文件。

我已将服务器连接到域,并能够以域用户身份进行身份验证,最初使用 SSH 密钥登录。随后,在升级到 root 时必须提供 AD 域密码,此时该过程失败,似乎出现了密码错误。

/etc/nsswitch.conf

passwd:     sss files
group:      sss files
sudoers:    files sss

/etc/sssd/sssd.conf

[sssd]
services = ssh, nss, pam, sudo
config_file_version = 2
domains = XXXXXXXXXX.COM

[domain/XXXXXXXXXX.COM]
debug_level = 0x3ff0
ad_domain = xxxxxxx.com
krb5_realm = XXXXXXXXXX.COM

id_provider = ad
access_provider = ad
enumerate = false
cache_credentials = false
use_fully_qualified_names = False
ldap_user_ssh_public_key = sshPublicKey
ad_enable_gc = false
ad_gpo_access_control = disabled
ad_server = dc1.xxxxxxx.com,dc2.xxxxxxx.com
debug_level = 9

dyndns_update = true
dyndns_update_ptr = true
ad_hostname = testbox.xxxxxxx.com

[nss]
default_shell = /bin/bash
fallback_homedir = /home/%d/%u

[ssh]

[sudo]
debug_level = 0x3ff0

/etc/sudoers.d/company_sudoers


"%company admins" ALL=(ALL) ALL
"%domain admins" ALL=(ALL) ALL
"%gg-srvlocaladmin" ALL=(ALL) ALL

"%dl-linuxadministrators" ALL=(ALL) ALL

我已经验证我以域用户身份登录,并且是必要组之一 (dl-linuxadministrators) 的成员:

[me@testbox ~]$ groups
domain users nonprod-zabbix-admins prod-zabbix-admins nonprod-glog-allstreams-users prod-glog-allstreams-users prod-glog-views-users gg-linuxadmins dl-linuxadministrators

然而,当我使用 sudo 升级到 root 权限时,我的密码似乎没有被接受:

[me@testbox  ~]$ sudo -i
[sudo] password for me:
Sorry, try again.
[sudo] password for me:
Sorry, try again.
[sudo] password for me:
sudo: 3 incorrect password attempts

我已启用 sudo 和 sssd 调试日志。sudo 日志非常冗长,我没有发现任何明显让我感到错误或类似的东西(不过,如果有人能就我应该寻找的任何具体内容提出建议,我很乐意发布摘录)。我认为 sssd 日志表明身份验证过程的这一部分正在移交给 PAM。

此配置已从现有的 Ubuntu 服务器移植过来,在这些服务器上运行没有任何问题。我可以通过查看 /etc/pam.d/ 中的文件看到 Ubuntu 上的几个

盒子引用了 pam_sss.so 模块,而 Alma 盒子上缺少这些模块。

root@otherbox:/etc/pam.d# grep sss * | grep -v old
common-account:account  [default=bad success=ok user_unknown=ignore]    pam_sss.so
common-auth:auth        [success=1 default=ignore]      pam_sss.so use_first_pass
common-password:password        sufficient                      pam_sss.so use_authtok
common-session:session  optional                        pam_sss.so

我尝试过翻译和移植其中的一些内容,似乎没有任何效果,但它可能由于发行版之间存在很大差异,所以我没有正确地完成此操作。

然而,Syslog 显示一条错误消息,该消息似乎是从 krb 子进程返回的:

Feb  4 16:08:45 testbox krb5_child[2117]: Preauthentication failed
Feb  4 16:08:45 testbox  krb5_child[2117]: Preauthentication failed
Feb  4 16:08:45 testbox  krb5_child[2117]: Preauthentication failed

我仍然思考该问题可能与 PAM 有关,但我不是 100% 确定。

有人能给我提供下一步该怎么做的指导吗?

提前致谢。

答案1

您需要转义组名中的空格:

%domain\ admins ALL=(ALL) ALL

相关内容