我負責我大學的幾台伺服器。所有這些機器都配置為與我部門的 LDAP 伺服器通信,以允許集中用戶登入。在此 LDAP 伺服器上有一個名為 的使用者root
:
# getent passwd | grep root
root:x:0:0:root:/root:/bin/bash
root:x:0:0:Netbios Domain Administrator:/home/root:/bin/false
root
最近,我在我負責的一台伺服器上遇到了帳戶問題:我的 SSH 連線嘗試已成功針對本機root
使用者進行身份驗證,但主目錄是從 LDAP 中取得的/home/root
.此外,我發現可以在任何伺服器上使用 LDAP 憑證以 rootroot
身份進行驗證,即,如果針對本機的驗證root
失敗,則會嘗試 LDAP root
,並且如果密碼正確,則使用者將以超級使用者身分登入。
我認為這不是很安全,root
應該消除兩個帳戶的歧義。然而,根據我們 IT 部門的說法,LDAProot
是必要的。
如何root
從 LDAP 中過濾掉帳戶以禁止使用它進行身份驗證?我正在使用pam_ldap.so
中的一些 ldap 指令/etc/nsswitch.conf
。
答案1
方法有很多,以下是一些簡單的方法:
- 改為
/etc/ssh/sshd_config
noPermitRootLogin
(這通常是一個好主意,然後依靠su
/sudo
進行管理)。當然這僅影響 SSH。 - 在各種 PAM 設定檔中使用此
pam_listfile
模組明確允許或拒絕某些帳戶(需要為每個服務完成) - 在各個PAM設定檔中將
pam_ldap
模組配置pam_min_uid
為1(或更高),以便root無法登入(需要為每個服務完成) - 修改 PAM LDAP 搜尋過濾器 (
pam_filter
) 以排除使用者(例如pam_filter (uidNumber>=1)
,或您可以修改基本/範圍
最後兩者中的任何一個可能最適合您。您可能還需要對本機 PAM 配置進行一些調整,以便本地 root 帳戶pam_unix
在失敗時也能成功pam_ldap
(例如排序和必要/必需/充足)。