我负责我大学的几台服务器。所有这些机器都配置为与我部门的 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
(例如排序和必需/必需/充足)。