Linux

本地拒絕通過 LDAP 驗證的使用者登錄

  • February 25, 2015

我有一台可供 1000 多個使用者使用的 RedHat Linux 伺服器

使用者名通過 LDAP 協議進入伺服器,因此登錄身份驗證來自 LDAP

我的問題:是否可以阻止使用者在本地機器上登錄,而使用者名來自 LDAP?

如今,身份驗證邏輯通常由 PAM 處理。我的猜測是您應該能夠在 PAM 的配置文件中進行設置(在我的情況下,在 中/etc/pam.d)。

常見的身份驗證邏輯儲存在common-auth. 在你的情況下,我猜你應該有這樣的東西:

auth    [success=2 default=ignore]   pam_unix.so nullok_secure
auth    [success=1 default=ignore]   pam_ldap.so use_first_pass
auth    requisite                    pam_deny.so
auth    required                     pam_permit.so

…或者可能更簡單一些,例如:

auth    sufficient                   pam_unix.so nullok_secure
auth    sufficient                   pam_ldap.so use_first_pass

…取決於與標準 UNIX 身份驗證相比,LDAP 是第一個還是第二個來源(考慮到它也參與其中)。

現在,如果您想在一台機器上禁用 LDAP 身份驗證,或者拒絕訪問 LDAP 身份驗證的使用者,您所要做的就是從 PAM 的配置中刪除該源,並讓它僅依賴於 UNIX 身份驗證:

auth    [success=1 default=ignore]   pam_unix.so nullok_secure
auth    requisite                    pam_deny.so
auth    required                     pam_permit.so
  • 成功時pam_unix.so,從鏈的其餘部分跳過 1 個元素 ( pam_deny.so),並評估下一個元素 ( pam_permit.so)。這意味著當 UNIX 身份驗證失敗時,使用者會被拋出pam_deny.so,從而導致身份驗證失敗。當它成功時,它會到達pam_permit.so,並被授予對系統的訪問權限。
  • 這裡不涉及LDAP,這意味著任何未儲存在其中的使用者/etc/passwd都無法訪問系統。

現在,如果您想專門阻止 LDAP 使用者…

auth    [success=die]                pam_ldap.so
auth    sufficient                   pam_unix.so
  • 成功時pam_ldap.so,返回失敗程式碼並終止鏈。如果失敗,pam_unix.so則足以訪問系統。
  • 只要 LDAP 憑據匹配,這將中斷所有 PAM 身份驗證。UNIX 使用者仍然可以訪問系統。

當然,還有許多其他方法可以配置 PAM,有些方法可能比我剛才給出的方法更好/更有效。有關這方面的更多資訊,請查看此頁面不過請注意:在您開始使用 PAM 的配置之前,請確保您的root終端在某處安全執行。如果您弄亂了身份驗證邏輯,您將非常樂意/etc/pam.d再次訪問並恢復您的更改:)

另一個注意事項:雖然 PAM 處理身份驗證(和其他一些東西),但名稱解析由 NSS(名稱服務交換機)處理,其配置可以在/etc/nsswitch.conf. 如果您將 LDAP 保留在此文件中,那麼系統仍然會知道這些 LDAP 使用者,但不會讓他們進入。基本上,它允許系統將 UID 與名稱匹配,例如當您列出目錄 ( ls -l) 並獲取文件的所有者。

您也可以通過編輯 NSS 配置來刪除此 LDAP 名稱源,但如果您的使用者實際上擁有機器上可用的文件,我不建議您這樣做。

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