如何在Ubuntu12.04VPS上使用LDAP验证客户端计算机

来自菜鸟教程
跳转至:导航、​搜索

状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


介绍


LDAP 或轻量级目录访问协议是将身份验证信息保存在单个集中位置的一种方式。 在上一篇文章中,我们讨论了 如何在 Ubuntu 12.04 VPS 上设置 LDAP 服务器。 这解释了实际的服务器配置。

在本文中,我们将讨论如何配置客户端计算机以通过该服务器远程验证各种服务。

要完成这个项目,您需要一个配置为 LDAP 服务器的 Ubuntu 12.04 服务器。 如果您还没有这样做,请查看上一指南的链接。 您还需要另一个 Ubuntu 12.04 droplet 作为客户端机器。

安装客户端包


在客户端机器上,您将需要安装一些软件包以使身份验证功能与 LDAP 服务器正确配合。

您可以使用以下命令从默认的 Ubuntu 存储库安装它们:

sudo apt-get update
sudo apt-get install libpam-ldap nscd

您将被问到与安装服务器组件时所问的问题类似的各种问题。

  • LDAP 服务器统一资源标识符:ldap://LDAP-server-IP-Address
    • 在输入服务器信息之前,将初始字符串从“ldapi:///”更改为“ldap://”
  • 搜索库的专有名称:
    • 这应该与您在 LDAP 服务器的 /etc/phpldapadmin/config.php 文件中输入的值相匹配。
    • 在文件中搜索:“'server','base',array”。
    • 我们的示例是“dc=test,dc=com
  • 要使用的 LDAP 版本:3
  • 使本地根数据库管理员:
  • LDAP 数据库是否需要登录?
  • root 的 LDAP 帐户:
    • 这也应该与您的 /etc/phpldapadmin/config.php 中的值匹配。
    • 在文件中搜索:“'login','bind_id'”
    • 我们的示例是“cn=admin,dc=test,dc=com
  • LDAP root 账户密码:Your-LDAP-root-password

如果您犯了错误并需要更改一个值,您可以通过发出以下命令再次浏览菜单:

sudo dpkg-reconfigure ldap-auth-config

配置客户端软件


我们必须调整一些文件来告诉我们的身份验证文件它们可以向我们的 LDAP 服务器查找身份验证信息。

首先,编辑/etc/nsswitch.conf文件。 这将允许我们指定在用户发出身份验证更改命令时应该修改 LDAP 凭据。

sudo nano /etc/nsswitch.conf

我们感兴趣的三行是“passwd”、“group”和“shadow”定义。 将它们修改为如下所示:

密码: ldap兼容组: ldap兼容 影子: ldap兼容

接下来,我们将为 PAM 配置添加一个值。

PAM 或 Pluggable Authentication Modules 是一个连接应用程序的系统,这些应用程序可以向需要身份验证的应用程序提供身份验证。

PAM 已经在大多数计算机上实现,并且在不需要用户交互的情况下在幕后工作。 当我们安装和配置我们的 LDAP PAM 模块时,大部分需要的信息都添加到了配置文件中。

编辑 /etc/pam.d/common-session 文件:

sudo nano /etc/pam.d/common-session

在配置的底部添加一行,内容为:

session required pam_mkhomedir.so skel=/etc/skel umask=0022

当没有主目录的 LDAP 用户登录时,这将在客户端计算机上创建一个主目录。

我们必须重新启动服务才能实施这些更改:

sudo /etc/init.d/nscd restart

权限


在 LDAP 服务器配置期间,我们创建了一个名为“admin”的组。 这不是随机选择的。 它与 Ubuntu 机器上默认创建的“admin”组一致。

您添加到“admin”组的 LDAP 用户将有权访问 sudo 命令。

这是因为我们有一行在 /etc/sudoers 文件中为“admin”组的成员提供 sudo 访问权限。 通过发出以下命令编辑文件:

sudo visudo

有一行写着:

%admin ALL=(ALL) ALL

以百分号 (%) 开头的条目指定组而不是用户。 如果您希望禁用此功能,或仅授予特定用户此功能,请注释掉此行:

#%admin ALL=(ALL) ALL

以 LDAP 用户身份登录


我们现在已经将我们的客户端计算机配置得足以能够作为我们的 LDAP 用户之一登录。 此用户不必存在于客户端计算机上。

在新的终端窗口中(最好保持原来的终端窗口登录,以防出现配置错误),使用 LDAP 用户的凭据 ssh 进入客户端计算机:

ssh LDAP_user @ LDAP_client_IP_Address

您应该能够像在本地创建用户一样登录。 发出打印工作目录命令:

pwd

您应该看到您在 LDAP 服务器上为您的用户选择的主目录正在这台机器上使用。 它是为 LDAP 用户按需创建的。

如果您注销并使用不同的 LDAP 用户登录,您可以看到将有两个主目录条目:

ls /home

user1  user2

如果您的用户是“admin”组的一部分并且您没有在上一节中禁用该功能,那么您将拥有正常的 sudo 访问权限,否则您将不会。

如果您发出 passwd 命令来更改您的密码,您可以看到它将修改您的 LDAP 凭据:

passwd

Enter login(LDAP) password:

按组限制访问


如果您只希望某些组的成员能够登录到此特定计算机,则可以在 PAM 文件中配置该限制。

使用 root 权限编辑以下文件:

sudo nano /etc/pam.d/common-auth

在底部,我们将指定 PAM 应查看安全访问文件以了解如何限制用户登录。 将此添加到底部:

auth required    pam_access.so

保存并关闭文件。

配置该设置时 PAM 引用的安全信息文件位于 /etc/security/access.conf。 现在用 root 权限打开这个文件:

sudo nano /etc/security/access.conf

我们需要在文件末尾添加一条规则。

行首的破折号 (-) 表示这是一个限制。 从第一个冒号 (:) 到下一个冒号,我们指定此规则适用于谁。

我们指定这适用于除 root 和“admin”组之外的所有用户。 组在括号内给出。

从第二个冒号到行尾,我们将指定规则应适用的情况。 在我们的例子中,该限制将适用于所有情况,但本地登录除外。

 -:ALL EXCEPT root (admin):ALL EXCEPT LOCAL 

这将允许我们将登录限制为“admin”组。 我们可以添加其他组或更改组。

如果我们以某种方式将自己锁定在 SSH 之外,这也将允许我们通过 DigitalOcean 控制台上的“控制台访问”按钮登录。

请记住,这将适用于所有用户,而不仅仅是 LDAP 用户。 因此,您在客户端计算机上创建的任何用户都需要成为指定组之一的成员。

结论


您现在应该能够使用集中式 LDAP 服务器对多台计算机进行身份验证。 您的 LDAP 用户将被允许使用您以这种方式配置的任何计算机,只要他们具有适当的登录凭据。

这可以防止您的用户信息变得分散、重复和难以管理。 当访问您的服务器或项目的用户数量增加,并且机器数量也在增加时,LDAP 身份验证可以提供巨大的帮助。

贾斯汀·艾林伍德