<$>[警告]
状态: 过时
本文涉及的 Ubuntu 版本已不再受支持。 如果您正在运行 Ubuntu 12.04,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
- 升级至 Ubuntu 14.04。
- 从 Ubuntu 14.04 升级到 Ubuntu 16.04](https://andsky.com/tech/tutorials/how-to-upgrade-to-ubuntu-16-04-lts)
- 将服务器数据迁移到支持的版本
原因: Ubuntu 12.04 于 2017 年 4 月 28 日达到生命周期终点,不再接收安全补丁或更新。 本指南不再维护。
请参阅: 本指南仍有参考价值,但可能不适用于其他版本的 Ubuntu。 如果有的话,我们强烈建议使用针对您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能查找最新版本。 <$>
简介
LDAP 或称轻量级目录访问协议,是将身份验证信息集中保存的一种方式。 在上一篇文章中,我们讨论了如何在 Ubuntu 12.04 VPS 上设置 LDAP 服务器。 本文介绍了实际的服务器配置。
在本文中,我们将讨论如何配置客户端机器,以便远程验证该服务器的各种服务。
要完成这个项目,你需要将 Ubuntu 12.04 服务器配置为 LDAP 服务器。 如果您还没有这样做,请查看之前指南的链接。 你还需要另一个 Ubuntu 12.04 程序作为客户机。
安装客户端软件包
在客户机上,你需要安装一些软件包,以便通过 LDAP 服务器正确进行身份验证。
您可以使用以下命令从 Ubuntu 的默认软件源安装这些软件:
1sudo apt-get update
2sudo 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 服务器
- 要使用的 LDAP 版本:3
- 使本地根数据库成为管理员:**是
- LDAP 数据库需要登录吗?**不需要
- 为根用户设置 LDAP 帐户:
- 这也应与
/etc/phpldapadmin/config.php
中的值一致。 - 搜索文件中的"'login','bind_id'"。
- 我们的例子是 "cn=admin,dc=test,dc=com "。
- 这也应与
- LDAP 根账户密码:您的 LDAP 根密码
如果您犯了一个错误,需要更改一个值,可以通过发出该命令再次浏览菜单:
1sudo dpkg-reconfigure ldap-auth-config
配置客户端软件
我们必须调整几个文件,告诉我们的身份验证文件可以从 LDAP 服务器获取身份验证信息。
首先,编辑 /etc/nsswitch.conf
文件。 这样我们就可以指定在用户发出身份验证更改命令时修改 LDAP 凭据。
1sudo nano /etc/nsswitch.conf
我们感兴趣的三行是 "passwd"、"group "和 "shadow "定义。 修改后如下所示
passwd: ldap compat group: ldap compat shadow: ldap compat
接下来,我们将在 PAM 配置中添加一个值。
PAM ,即可插拔身份验证模块,是一种将可提供身份验证的应用程序与需要身份验证的应用程序连接起来的系统。
PAM 已在大多数计算机上实现,无需用户交互即可在幕后工作。 当我们安装和配置 LDAP PAM 模块时,大部分所需的信息都被添加到了配置文件中。
编辑 /etc/pam.d/common-session
文件:
1sudo nano /etc/pam.d/common-session
在配置底部添加一行,内容如下
1session required pam_mkhomedir.so skel=/etc/skel umask=0022
当没有主目录的 LDAP 用户登录时,这将在客户机上创建一个主目录。
我们必须重新启动服务才能执行这些更改:
1sudo /etc/init.d/nscd restart
权限
在 LDAP 服务器配置过程中,我们创建了一个名为 "admin "的组。 这并不是随意选择的。 它与 Ubuntu 机器上默认创建的 "admin "组相吻合。
添加到 "admin "组的 LDAP 用户将有权使用 "sudo "命令。
这是因为我们在 /etc/sudoers
文件中有一行赋予了 "admin "组的成员 sudo 访问权限。 请执行以下命令编辑该文件:
1sudo visudo
有一行这样写道
1%admin ALL=(ALL) ALL
以百分号 (%) 开头的条目指定的是组而不是用户。 如果希望禁用此功能,或仅授予特定用户此功能,请注释掉这一行:
1#%admin ALL=(ALL) ALL
以 LDAP 用户身份登录
现在,我们已经对客户机进行了足够的配置,使其能够以 LDAP 用户之一的身份登录。 该用户不必存在于客户机上。
在一个新的终端窗口中(最好保持原来终端窗口的登录状态,以防配置错误),使用 LDAP 用户凭据 ssh 进入客户机:
ssh LDAP_user@LDAP_client_IP_Address
您应该可以像在本地创建用户一样登录。 发出打印工作目录命令:
1pwd
您应该看到,您在 LDAP 服务器上为用户选择的主目录正在这台机器上使用。 它是按需创建的,为 LDAP 用户提供服务。
如果注销并用不同的 LDAP 用户登录,就会发现有两个主目录条目:
1ls /home
1user1 user2
如果你的用户属于 "admin "组,并且你没有在上一节中禁用该功能,那么你将拥有正常的 sudo 访问权限,反之则没有。
如果你发出 passwd
命令来更改密码,你可以看到它将修改你的 LDAP 凭据:
1passwd
1Enter login(LDAP) password:
按组别限制访问
如果只想让某些组的成员登录这台特定的机器,可以在 PAM 文件中配置这种限制。
以 root 权限编辑以下文件:
1sudo nano /etc/pam.d/common-auth
在底部,我们将指定 PAM 应查看安全访问文件,以了解如何限制用户登录。 将此添加到底部:
1auth required pam_access.so
保存并关闭文件。
配置该设置时,PAM 引用的安全信息文件位于 /etc/security/access.conf
。 现在以 root 权限打开该文件:
1sudo nano /etc/security/access.conf
我们需要在文件末尾添加一条规则。
行首的破折号 (-) 表示这是一个限制条件。 从第一个冒号(:)到下一个冒号,我们指定了该规则的适用对象。
我们规定这适用于除 root 和组 "admin "之外的所有用户。 组在括号中给出。
从第二个冒号开始到行尾,我们将指定该规则在哪些情况下适用。 在我们的例子中,该限制适用于除本地登录之外的所有情况。
-:ALL EXCEPT root (admin):ALL EXCEPT LOCAL
这将允许我们限制 "管理员 "组的登录。 我们可以添加其他组或更改组。
如果我们将自己锁定在 SSH 之外,这也将允许我们通过 DigitalOcean 控制台上的 "控制台访问 "按钮登录。
请记住,这将适用于所有用户,而不仅仅是 LDAP 用户。 因此,在客户端机器上创建的任何用户都必须是指定组的成员。
结论
现在您应该可以使用集中式 LDAP 服务器对多台计算机进行身份验证了。 只要 LDAP 用户拥有相应的登录凭证,他们就可以使用以这种方式配置的任何计算机。
这可以防止用户信息变得分散、重复和难以管理。 当访问服务器或项目的用户数量不断增加,机器数量也在不断增加时,LDAP 身份验证就能帮上大忙。