我正在为 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