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

LDAP允许您跨多个系统保持您的用户身份验证集中在一个位置。在本指南中,我们将介绍如何配置客户端Ubuntu 12.04计算机以连接到我们的LDAP服务器进行用户身份验证。

介绍


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

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

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

安装客户端软件包


在客户端计算机上,您需要安装几个软件包,以使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 =测试,DC = COM”
  • LDAP版本使用方法:3

  • 使本地根数据库管理:

  • 是否LDAP数据库需要登录?

  • 根的LDAP帐户:

    • 这也应与你的价值/etc/phpldapadmin/config.php
    • 搜索:“'login','bind_id'”在文件中
    • 我们的例子是“CN =管理员,DC =测试,DC = COM”
  • LDAP root帐户密码: 您-LDAP的根密码

如果发生错误并需要更改值,可以通过发出以下命令再次通过菜单:

sudo dpkg-reconfigure ldap-auth-config

配置客户端软件


我们必须调整几个文件来告诉我们的身份验证文件,他们可以查看我们的LDAP服务器的身份验证信息。

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

sudo 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文件:

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”组一致。

您添加到“管理员”组的LDAP用户将可以访问sudo命令。

这是因为我们有一条线,给人的范围内“管理员”组sudo访问成员/etc/sudoers文件。 通过发出以下命令编辑文件:

sudo visudo

有一行如下:

%admin ALL=(ALL) ALL

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

#%admin ALL=(ALL) ALL

以LDAP用户身份登录


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

在新的终端窗口(最好保持您的原始终端窗口登录,如果配置错误),ssh到客户端机器使用LDAP用户的凭据:

ssh LDAP_user@LDAP_client_IP_Address

您应该能够以在本地创建用户的方式登录。 发出print working directory命令:

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”组。 我们可以添加其他组或更改组。

这也将允许我们通过DigitalOcean控制台上的“控制台访问”按钮登录,如果我们不知何故锁定自己脱离SSH。

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

结论


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

这可以防止您的用户信息变得分散,复制和无法管理。 当访问您的服务器或项目的用户数量在增加,并且机器数量也在增加时,LDAP认证可以是一个巨大的帮助。

作者:Justin Ellingwood