获取 XRDP 通过 LDAP 进行身份验证的问题

获取 XRDP 通过 LDAP 进行身份验证的问题

我有一个配置,其中有一个企业活动目录,其中包含用于身份验证的用户名和密码。我建立了自己的云资源,在我的情况下是 Linux RHEL 7 主机;我获得了一个现成的配置,在该配置中,我为每个 Linux 主机上的所有用户创建本地 (/etc/passwd) 帐户,该帐户使用 krb5 向企业 AD 进行身份验证。一切都很好,并且有效。

但是,我想将我的用户信息放入 LDAP 中,而不是在每个主机上维护用户信息。因此,我设置了 nslcd 和 openldap 服务器和客户端。我在 OpenLDAP 中定义用户信息(相当于 /etc/passwd),但保留密码信息(仍然在 AD 中)。当我通过 ssh(putty)登录主机时,此配置有效。

我还想通过 XRDP 而不是直接 VNC 登录 Linux 主机(因为我来自 Windows)。如果我使用本地文件配置,例如用户位于 /etc/passwd 中,krb5 到公司 AD 进行密码验证,XRDP 就可以正常工作。但是,当我将用户从 /etc/passwd 和 shadow 中取出,将其放入 LDAP 中时,即使 ssh 登录可以正常工作,XRDP 登录也不行。

/etc/pam.d/sshd 和 /etc/pam.d/xrdp-sesman 相同;两者首先通过 pam_krb5 包含公司 AD 条目,然后包含常规 unix/LDAP 登录配置。

问题似乎是 pam_krb5 通过 XRDP 登录时没有获取 UID/GID 信息。

对于 LDAP 中的用户,ssh 的 /var/log/secure 如下所示:

Oct  3 13:20:56 host sshd[2407]: pam_krb5[2407]: TGT verified
Oct  3 13:20:56 host sshd[2407]: pam_krb5[2407]: authentication succeeds for 'USER' (USER@DOMAIN)
Oct  3 13:20:56 host sshd[2407]: Accepted password for USER from IP_ADDR port 63785 ssh2
Oct  3 13:20:56 host sshd[2407]: pam_unix(sshd:session): session opened for user USER by (uid=0)

当用户位于 /etc/passwd 中时,XRDP(工作)/var/log/secure 看起来有点像:

Oct  3 13:17:55 host xrdp-sesman[799]: pam_krb5[799]: TGT verified
Oct  3 13:17:55 host xrdp-sesman[799]: pam_krb5[799]: authentication succeeds for 'USER' (USER@DOMAIN)
Oct  3 13:17:55 host xrdp-sesman[2143]: pam_unix(xrdp-sesman:session): session opened for user USER by (uid=0)
Oct  3 13:17:56 host polkitd[495]: Registered Authentication Agent for unix-session:9 (system bus name :1.54 [/usr/libexec/xfce-polkit], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)

但是,在不起作用的配置中,用户仅在 LDAP、XRDP 中,我在 /var/log/secure 中得到了这个:

Oct  3 13:21:40 host xrdp-sesman[799]: pam_krb5[799]: error resolving user name 'USER' to uid/gid pair
Oct  3 13:21:40 host xrdp-sesman[799]: pam_krb5[799]: error getting information about 'USER'
Oct  3 13:21:40 host xrdp-sesman[799]: pam_unix(xrdp-sesman:auth): check pass; user unknown
Oct  3 13:21:40 host xrdp-sesman[799]: pam_unix(xrdp-sesman:auth): authentication failure; logname= uid=0 euid=0 tty=xrdp-sesman ruser= rhost=

我尝试了各种 pam 文件更改,但都没有成功。我搜索了所有我能想到的变体,但没有找到类似的问题/解决方案。任何建议都将不胜感激。谢谢!

答案1

我最终弄清楚了我遗漏了什么。原来我在 /etc/libuser.conf 中没有 LDAP 配置条目。我在 libuser.conf 中正确添加了 LDAP 连接信息,重新启动(不确定这是否必要),然后在所有用例中都获得了预期的正确登录结果。

我没有在任何我能找到的 LDAP 配置指南中看到需要更新该文件的参考(我也不记得过去在配置系统时这样做过,尽管也许有些命令可以帮我完成)。这是我第一次尝试使用 XRDP 进行 OpenLDAP 配置。因此,可能那里的某些交互有所不同(显然,根据我所见)。

相关内容