用户名冲突文件/ldap,两个密码均接受

用户名冲突文件/ldap,两个密码均接受

Ubuntu 18.04.3 服务器slapd正在运行,LDAP 身份验证已配置libnss-ldapdlibpam-ldapd软件包(全部在同一台机器上)。useradd使用相同的用户名、不同的数字 UID 和不同的密码在 LDAP 数据库中创建了一个本地用户和一个用户。使用此用户名通过 SSH 登录每个两个密码中的任意一个,在每种情况下,本地用户都将登录。后者是可以预料的,因为使用files ldap中的顺序nsswitch.conf。但是,我担心 LDAP 中存储的密码会授予本地用户访问权限。当我使用 锁定本地用户时,这甚至有效passwd --lock

所描述的行为是预期的吗,或者我配置了错误的东西?

passwd作为一种可能的解决方案,我将和group中的顺序更改nsswitch.confldap files。现在,只有 LDAP 密码有效,并将使用存储在 LDAP 中的 UID 登录。对passwd和使用此顺序是个好主意吗group

附录:这是另一个想法,使用 order files ldap。最终,我想防止使用 LDAP 凭据以本地用户身份通过​​ SSH 登录。最简单的方法是确保没有用户名冲突。出于实际目的,可以通过在 LDAP 用户名前加上一些字符串来实现,这样就极不可能出现这样的用户名作为本地用户(我的本地用户大多是系统用户)。但是,我的用户(人员)更喜欢没有这种前缀的用户名。但他们并不关心他们的组名。因此,我创建了名称不太可能与本地组冲突的组。然后我将所有 LDAP 用户放入其中一个组中。最后,我使用MatchGroupin 来sshd_config只允许这些组通过 SSH 进入机器(除了 root 和其他几个组,我明确确保它们不用作 LDAP 中的用户名)。

需要注意的是,我的本地用户集很小,而且大部分都是固定的;但随着时间的推移,仍可能会发生微小的变化,例如当更新软件包或安装新软件包时。因此,仅提供 LDAP 中禁止使用的用户名列表而不采取进一步措施是不可行的。

附录2:使用 LDAP 服务器对用户进行身份验证的客户端(运行 Debian)也存在同样的问题。如果有一个本地用户(在客户端上)和一个同名的 LDAP 用户,我们可以以当地的用户使用存储在 LDAP 中的凭据!天哪。幸运的是,前面附录中描述的技巧也可以在这里使用。在这里实现这一点的方法是pam_listfile

附录3:特别注意 LDAP 中的补充组。可能会出现这样的情况:用户使用passwd客户端上存储的 UID 和 GID 登录,但使用 LDAP 中提供的补充组。是的,这越来越疯狂了。因此,pam_listfile上面提到的解决方法应始终考虑主要组。

总的来说,我认为这是一个 Bug。

相关内容