Unix

pam_ldap.so 在 pam_unix.so 之前?有可能嗎?

  • October 29, 2015

我們有幾台帶有 PAM+LDAP 的伺服器。

配置是標準的(參見http://arthurdejong.org/nss-pam-ldapd/setup>或<http://wiki.debian.org/LDAP/PAM)。例如,/etc/pam.d/common-auth 包含:

auth sufficient pam_unix.so nullok_secure
auth requisite pam_succeed_if.so uid &gt;= 1000 quiet
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so

當然,它適用於 ldap 和本地使用者。但是每次登錄都首先進入 pam_unix.so,失敗,然後才成功嘗試 pam_ldap.so。結果,對於每個 ldap 使用者登錄,我們都有一個眾所周知的失敗消息:

pam_unix(&lt;some_service&gt;:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=&lt;some_host&gt;  user=&lt;some_user&gt;

我每天有多達 60000 條這樣的日誌消息,我想更改配置,以便 PAM 將首先嘗試 ldap 身份驗證,並且只有在失敗時 - 嘗試 pam_unix.so(我認為它可以提高 i/o 性能伺服器)。但是,如果我將 common-auth 更改為以下內容:

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

然後我根本無法使用本地(非 ldap)使用者(例如,通過 ssh)登錄。

有人知道正確的配置嗎?為什麼 Debian 和 nss-pam-ldapd 一開始預設有 pam_unix.so?真的沒有辦法改變嗎?

先感謝您。

PS 我不想禁用日誌,但想首先設置 ldap 身份驗證。

hayalci 在評論中回答:

auth sufficient pam_ldap.so
auth sufficient pam_unix.so nullok_secure try_first_pass
auth required pam_deny.so

如果本地使用者和網路使用者在不同的 uid 範圍內(這是個好主意),您可以添加這樣一行(假設本地使用者在 0-4999 範圍內):

auth [success=1 default=ignore] pam_succeed_if.so uid &gt;= 5000 quiet

行前pam_unix.so。如果 uid >= 4999,它將通過 1 行。它將直接轉到 pam_ldap.so。

如果您之前沒有要求輸入密碼的線路,則必須更改pam_ldap.so use_first_pass為。pam_ldap.so``pam_ldap.so try_first_pass``pam_ldap.so

我會測試:

auth [success=1 default=ignore] pam_succeed_if.so uid &gt;= 4999 quiet
auth sufficient pam_unix.so nullok_secure
auth requisite pam_succeed_if.so uid &gt;= 4999 quiet
auth sufficient pam_ldap.so
auth required pam_deny.so

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