Debian

使用 Kerberos 身份驗證但不需要本地帳戶的 PAM 配置

  • October 8, 2019

kinit在 Debian Buster 上測試了一個有效的 Kerberos 身份驗證。現在我嘗試將它與PAM 一起使用以使用 Kerberos 登錄,libpam-krb5使用pam-auth-update. 但文件中/usr/share/doc/libpam-krb5/README.Debian.gz指出:

此配置仍需要在 /etc/shadow 中列出使用者,否則 pam_unix 帳戶模組將失敗。通常,應該只使用 Kerberos 身份驗證的帳戶應該使用 adduser –disabled-password 創建。如果您根本不希望帳戶列在 /etc/shadow 中(例如,如果您使用其他源而不是文件來進行 nsswitch 配置),您可以將 pam_krb5 帳戶模組標記為足夠,而不是必需,以便不執行 pam_unix。這意味著您將無法在本地禁用帳戶。

/etc/shadow除了 Kerberos 數據庫之外,我不希望這些帳戶再次在本地列出,因為這對我來說是多餘的工作。我嘗試使用預設設置登錄,但失敗了:

Debian GNU/Linux 10 deb10-base ttyS0

deb10-base login: ingo
Password: 

Authentication failure

journalctl我發現這個:

Oct 06 15:33:08 deb10-base login[374]: pam_krb5(login:auth): user ingo authenticated as ingo@EXAMPLE.COM
Oct 06 15:33:08 deb10-base login[374]: pam_unix(login:account): could not identify user (from getpwnam(ingo))
Oct 06 15:33:08 deb10-base login[374]: Authentication failure

這正是上面引用的文件所預期的。但我不明白修改 PAM 配置文件的位置和內容的評論。目前配置文件與文件不匹配。

我必須從需要修改到足夠的 PAM 配置文件中的哪些條目?可能還有其他事情要做嗎?如果可能的話,我想保留 pam-auth-update 配置部分。

更新:

忘了提到我開始pam-auth-update並檢查了選項:

[*] Kerberos authentication
[*] Unix authentication
[*] Create home directory on login

我試圖取消選中“ Unix authentication ”,但這使得登錄無法使用。我無法再次登錄,即使不是以 root 身份登錄。我不得不從快照中恢復。

經過更多研究後,我發現僅使用 Kerberos 進行身份驗證似乎是一個普遍問題。您僅獲得身份驗證但沒有授權。在這種情況下,授權由禁用密碼的本地帳戶提供。因此,如果您不提供其他來源的帳戶,則必須管理其他本地帳戶。

使用 NSS,您可以從遠端源獲取帳戶,特別是從 LDAP 伺服器。這樣登錄總是會從 LDAP 伺服器或本地/etc/passwd文件中找到一個授權帳戶,主要用於 root 等系統帳戶。我只需要在 LDAP 伺服器上的一個地方管理帳戶。

我只是要設置一個用於記帳的 LDAP 伺服器。

我可以在這裡看到兩個不完美的選擇:

  • 修改生成的塊/etc/pam.d/common-account並接受pam-auth-update不再觸及它的塊,或者
  • dpkg-divert並修改/usr/share/pam-configs/krb5、重新生成/etc/pam.d/common-account並接受libpam-krb5的更新將不再影響/usr/share/pam-configs/krb5

第一種情況,required改為sufficient上線

account required pam_krb5.so minimum_uid=1000

在第二種情況下,在Account:段落中執行相同的操作,這應該會在重新生成後導致上述更改/etc/pam.d/common-account

引用自:https://unix.stackexchange.com/questions/545398