使用 LDAP 进行身份验证,如何在不删除帐户的情况下安全地禁用/停用帐户?

Cpt*_*rkt 6 shell security login ldap

我们使用 LDAP 对数以千计的用户进行身份验证。我们采用的主要策略是将 LDAP 属性“loginShell”更改为“None”或“NA”之类的内容,而不是“/bin/bash”。这样做是在登录尝试时抛出用户“权限被拒绝”。我不确定这个使用 LDAP 和“loginShell”的设置是否是一个 unix 标准,或者只针对我们这里的环境。

我的问题是,这是否足以禁用帐户,使用户无法登录?是否存在用户仍然可以登录的漏洞或解决方法?我们可以采取任何其他步骤来禁用帐户吗?

dan*_*uer 3

更改用户的 shell 只会“肯定”改变用户尝试登录并启动 shell 时执行的内容。它本身并不会使访问无效。因此,某人可能能够运行ssh host -t /bin/sh命令,或者仍然能够使用此存储库通过 ftp 或 Web 应用程序登录。

不过,您可以通过在允许访问之前检查有效的登录 shell 来完成此操作。您可以使用 LDAP 过滤器来完成此操作。或者,在大多数 Linux 系统(以及其他几个启用 PAM 的 UNIX 变体)上,您可以使用类似 pam_shells 的东西,它会在允许访问之前检查用户的 shell 是否列在 /etc/shells 中。

传统上,基于 shell 的登录访问是通过将 shell 设置为 /bin/false 或将其设置为 /bin/nologin (如果存在)来完成的。使用 pam_shells 或 LDAP 过滤器会使这些解决方案“大部分”毫无意义。不过,我喜欢将 /bin/true 放在 /etc/shells 中,这样我就可以阻止某些用户访问 shell,同时允许他们使用 scp 之类的东西进入;然后,我将 /bin/false 放入不应该获得这些内容的用户中,并在我想要使用 shell 进行切换的服务上使用 pam_shells。

大多数时候,使用 LDAP,您可以提供控制访问的属性。对于 Linux pam_ldap,“pam_check_service_attr”选项允许您列出该用户可以对其进行身份验证的特定 pam 服务(使用“authorizedService”属性)。还有一个基于主机的访问属性。

但实际上,您的问题的答案在很大程度上取决于您用于连接 LDAP 的软件的功能。:)