通过 LDAP 组进行 SSH - 不起作用

通过 LDAP 组进行 SSH - 不起作用

有“31”台服务器由相同的 RedOS 映像(基于 CentOS 7)配置。它们进入 LDAP samba 域,并配置为通过基于 ldap 用户组的 ssh 进行授权。为此目的,进行了以下更改:

以 root 身份创建

echo "Domain admins" > /etc/ssh/access_groups.conf && chmod 600 /etc/ssh/access_groups.conf

修改/etc/pam.d/sshd

____missed default____
account required pam_nologin.so
account sufficient pam_localuser.so
account required pam_listfile.so onerr=fail item=group sense=allow file=/etc/ssh/access_groups.conf
account include password-auth
_______ missed default____

visudo /etc/sudoers.d/01-域-用户

#sudo admin users LDAP auth
"%mydomain.local\Domain admins" ALL=(ALL) NOPASSWD:ALL

systemctl 重新启动 sshd

此配置已成功应用于大约30台服务器并且正在运行。在服务器 31 上,该配置不起作用。尝试登录时,客户端显示连接已被服务器关闭。

debug3: failed to open file:C:/dev/tty error:3
debug1: read_passphrase: can't open /dev/tty: No such file or directory
t1_rushao@ruyansvap38's password:
debug3: send packet: type 50
debug2: we sent a password packet, wait for reply
Connection closed by 10.65.201.61 port 22

在服务器端

sshd[18238]: pam_sss(sshd:auth): authentication success; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.65.90.176 user=t1_rushao
sshd[18238]: pam_listfile(sshd:account): Refused user t1_rushao for service sshd
sshd[18238]: Failed password for t1_rushao from 10.65.90.176 port 59786 ssh2
sshd[18238]: fatal: Access denied for user t1_rushao by PAM account configuration [preauth]

如果我评论掉“需要帐户 pam_listfile.so...”我可以作为域用户通过 ssh 连接,但 sudo 也不起作用。同时,

id t1_rushao
uid=1006007868(t1_rushao) gid=1006000513(domain users) groups=1006000513(domain users),1006000512(domain admins)

sssd 服务正在工作,服务器上域用户的授权似乎也正在工作,我尝试了 kinit、net ads join 几次。 /etc/security/access.conf 默认情况下被完全注释掉。

我已经不知道为什么这个配置在这台服务器上不起作用。我知道问题出在域组中的某个地方,系统无法将用户组与设置相匹配,但为什么呢?

答案1

可能的字符大小写问题:该id命令将组报告为domain admins全小写,但您/etc/ssh/access_groups.conf/etc/sudoers.d/01-domain-users两者都将组指定为Domain admins初始大写。

Unix/Linux 系统通常区分大小写,我没有理由相信这pam_listfile.so是该规则的例外。我知道这sudo肯定是区分大小写的。

尝试将 sudoers 配置中的组名称更改access_groups.conf为全小写,以匹配id.

sssd/etc/sssd/sssd.conf以及任何文件)的配置/etc/sssd/conf.d/*.conf可能在例如域的配置或设置方面有full_name_format一些use_fully_qualified_names差异case_sensitive

您的工作服务器显然必须有case_sensitive = false,这似乎不是 sssd 的默认设置 - 也许非工作服务器缺少其中一些设置?

答案2

电信公司, 确切地!确实有效。在最后一台服务器上,sssd.conf与其他服务器不同之处仅在于多了一行。

re_expression = (?P<name>[a-z0-9._-]+)

在其他服务器上没有这样的线路。并且在所有服务器上都有 sssd.conf 设置case_sensitive = False

我做了分析,这个文件是由join-to-domainRedOS 开发团队的脚本包自动配置的,用于将服务器添加到 LDAP 域。就在几天前发布了一个新版本的脚本,在这台服务器(几天前创建的)上,sssd 的配置与其他服务器不同。

结果,两个条件同时满足:Domain admins用空格分隔,并且 sssd 配置区分大小写。我已经在简单命名的组上进行了测试,并检查了小写配置的组名称并且它可以使用它。我禁用了所有内容re_expression,并且所有内容都适用于Domain admins组和任何不区分大小写的配置。有必要询问开发商为什么这样做。

相关内容