如何在 Ubuntu 12.04 VPS 上使用 LDAP 对客户端计算机进行身份验证

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
简介: 如何在 Ubuntu 12.04 VPS 上使用 LDAP 对客户端计算机进行身份验证

简介


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-服务器-IP-地址
  • 在输入服务器信息之前,将初始字符串从 “ldapi:///” 更改为 “ldap://”
  • 搜索基本的可分辨名称:
  • 这应该与您在 LDAP 服务器的 /etc/phpldapadmin/config.php 文件中设置的值相匹配。
  • 在文件中搜索:“ ‘server’,‘base’,array”。
  • 我们的示例是 “dc=test,dc=com”。
  • 要使用的 LDAP 版本:3
  • 使本地根数据库管理员:
  • LDAP 数据库是否需要登录?
  • 根用户的 LDAP 帐户:
  • 这也应该与您的 /etc/phpldapadmin/config.php 中的值匹配。
  • 在文件中搜索:“ ‘login’,‘bind_id’”。
  • 我们的示例是 “cn=admin,dc=test,dc=com”。
  • LDAP 根帐户密码:您的-LDAP-根密码

如果您犯了错误并且需要更改某个值,可以通过发出以下命令再次通过菜单进行操作:

sudo dpkg-reconfigure ldap-auth-config

配置客户端软件


我们必须调整一些文件,告诉我们的认证文件可以查看我们的 LDAP 服务器以获取认证信息。

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

sudo nano /etc/nsswitch.conf

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

passwd:     <span class="highlight">ldap</span> compat
group:      <span class="highlight">ldap</span> compat
shadow:     <span class="highlight">ldap</span> compat

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

PAM(可插入式认证模块)是一个连接可以提供认证的应用程序和需要认证的应用程序的系统。

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 <span class="highlight">LDAP_user</span>@<span class="highlight">LDAP_client_IP_Address</span>

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

pwd

您应该看到您在 LDAP 服务器上选择的家目录正在在此机器上使用。它已按需创建,以为 LDAP 用户提供服务。

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

ls /home
user1  user2

如果您的用户是 “admin” 组的成员,并且您没有在上一节中禁用此功能,您将具有正常的 sudo 访问权限,否则将不会有。

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

passwd
输入登录(LDAP)密码:

通过组限制访问


如果你只希望特定组的成员能够登录到这台特定的机器,你可以在 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” 组的登录。我们可以添加其他组或更改组。

这也将允许我们通过 DigitalOcean 控制台上的 “控制台访问” 按钮登录,如果我们不小心锁定了 SSH。

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

结论


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

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


目录
相关文章
|
4月前
|
存储 NoSQL MongoDB
如何在 Ubuntu 12.04 VPS 上使用 MongoDB 创建分片集群
如何在 Ubuntu 12.04 VPS 上使用 MongoDB 创建分片集群
36 0
|
4月前
|
存储 Ubuntu Apache
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
51 6
|
4月前
|
存储 Ubuntu 应用服务中间件
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
41 4
|
4月前
|
存储 Ubuntu 网络协议
如何在 Ubuntu 12.04 VPS 上安装和配置基本的 LDAP 服务器
如何在 Ubuntu 12.04 VPS 上安装和配置基本的 LDAP 服务器
80 1
|
4月前
|
Ubuntu Apache Python
如何在 Ubuntu VPS 上部署 Flask 应用程序
如何在 Ubuntu VPS 上部署 Flask 应用程序
40 1
|
4月前
|
存储 Ubuntu 关系型数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
如何在 Ubuntu VPS 上备份 PostgreSQL 数据库
32 1
|
4月前
|
Ubuntu Oracle Java
如何在 Ubuntu VPS 上安装 Elasticsearch
如何在 Ubuntu VPS 上安装 Elasticsearch
47 0
|
4月前
|
NoSQL Ubuntu Oracle
如何在 Ubuntu VPS 上安装 Cassandra 并运行单节点集群
如何在 Ubuntu VPS 上安装 Cassandra 并运行单节点集群
36 0
|
4月前
|
存储 Ubuntu 开发工具
如何在 Ubuntu VPS 实例上安装 Chef 服务器、工作站和客户端
如何在 Ubuntu VPS 实例上安装 Chef 服务器、工作站和客户端
28 0
|
4月前
|
存储 Ubuntu 测试技术
如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器
如何在 Ubuntu 或 Debian VPS 上配置 Apache Web 服务器
76 0