Openldap

問題讓 XRDP 通過 LDAP 進行身份驗證

  • February 2, 2018

我有一個配置,其中有一個公司活動目錄,其中包含用於身份驗證的使用者名和密碼。我建立了自己的雲資源,在我的例子中是 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 和影子中取出時,將它們放入 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 文件更改,但均未成功。而且我已經搜尋了我能想到的任何變化,但沒有找到類似的問題/解決方案。任何建議將不勝感激。謝謝!

我最終弄清楚我錯過了什麼。原來我在 /etc/libuser.conf 中沒有 LDAP 配置條目。我在 libuser.conf 中正確添加了 LDAP 連接資訊,重新啟動(不確定是否有必要),然後我在所有案例中都得到了預期的正確登錄結果。

我沒有在我能找到的任何 LDAP 配置指南中看到需要更新該文件的引用(我也不記得過去在配置系統時這樣做過,儘管可能有一些命令為我做了)。這是我第一次嘗試使用 XRDP 進行 OpenLDAP 配置。所以大概有一些不同的互動(顯然,基於我所看到的)。

引用自:https://serverfault.com/questions/876708