配置Linux使用LDAP用户认证的方法

下面我将为您详细讲解如何配置Linux使用LDAP用户认证的方法。

简介

LDAP (Lightweight Directory Access Protocol)是一种轻量级的网络目录服务协议,它可以被用于在网络中进行用户、组或者存储的信息的查找和存储。Linux系统可以通过OpenLDAP将其作为身份验证源,允许管理员在网络中集中管理用户和组。在这篇攻略中,我们将介绍如何安装和配置OpenLDAP服务器,以使用LDAP用户认证的方式管理 Linux 系统。

环境

  • Ubuntu 20.04
  • OpenLDAP 2.4

步骤

1. 安装OpenLDAP

使用以下命令安装OpenLDAP:

sudo apt update

sudo apt install slapd ldap-utils

在安装期间,您将被要求设置LDAP管理员帐户密码。请确保您记住了此密码,因为以后需要用到它来管理LDAP服务。

2. 配置OpenLDAP

接下来,我们需要通过修改LDAP配置文件来配置服务器。打开文件 /etc/ldap/ldap.conf 并添加以下内容:

BASE dc=example,dc=com
URI ldap://localhost

您可以将BASE替换为您自己组织的域名。然后,打开文件 /etc/ldap/slapd.conf 并添加以下内容:

# ACL for admin
access to * by dn="cn=admin,dc=example,dc=com" write by * read

# Define Password Policy
password-policy default
password-hash {SHA}

# Define Schemas
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema

其中:

  • access to * 语句是用于配置LDAP管理员具有数据写入权限,其他用户只有数据读取权限;
  • password-policy default 语句是启用密码策略;
  • password-hash {SHA} 语句是指定使用SHA算法对密码进行哈希;
  • include 语句是用于分别包含core、cosine和inetorgperson三个模式。

3. 创建LDAP用户和组

创建LDAP用户和组需要使用LDAP数据管理工具 - ldapadd。您可以通过以下示例添加一个名为 alpha 的用户:

首先,创建一个名为 example.ldif 的空文件:

touch example.ldif

然后将以下内容添加到 example.ldif 文件中:

dn: uid=alpha,ou=people,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: Alpha User
uid: alpha
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/alpha
loginShell: /bin/bash
gecos: Alpha
shadowMax: 99999
shadowMin: 0
shadowWarning: 7
userPassword: {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=
description: LDAP administrator

文件中说明了如何创建名为 alpha 的用户,它拥有 uid=alphaou=peopledc=example,dc=com 的DN值。您还可以通过更改dn值来实现不同的配置。

接下来,使用以下命令导入此用户:

ldapadd -x -D cn=admin,dc=example,dc=com -W -f example.ldif

运行命令后,您需要输入在安装OpenLDAP时设置的LDAP管理员密码即可。

您也可以参考这个示例创建一个名为 dev 的组:

首先同样需要创建一个 dev.ldif 文件:

touch dev.ldif

然后将以下内容添加到 dev.ldif 文件中:

dn: cn=dev,ou=group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1001
cn: dev
memberUid: alpha

它创建了一个名为 dev 的组,gidNumber 值为 1001,并包含名为 alpha 的成员。

现在再使用以下命令将此组添加到LDAP服务器中:

ldapadd -x -D cn=admin,dc=example,dc=com -W -f dev.ldif

4. 配置 PAM 开放式验证模块

我们还需要为Pluggable Authentication Modules(PAM)配置OpenLDAP。以使用LDAP验证的形式为 SSH 进行身份验证是最常见的一种情况。我们可以编辑 /etc/pam.d/common-session 文件并修改其内容:

session sufficient pam_ldap.so
session required  pam_unix.so

其中:

  • 第一行告诉PAM使用LDAP进行身份验证;
  • 第二行告诉PAM使用本地帐户进行身份验证。

5. 测试

现在您就可以进行LDAP认证测试了。使用以下命令可以手动登陆您的alpha用户,检查是否能够成功登录:

su alpha

在提示符处输入 alpha 的密码以验证身份。如果认证成功,则将进入作为 alpha 用户的shell。

您还可以通过SSH进行身份验证。使用另一台计算机使用SSH连接您的服务器,并尝试用 alpha 用户进行身份验证。如果认证成功,则您现在可以使用LDAP用户在Linux中身份验证。

结论

本文中,我们已经学习了如何在Linux中使用OpenLDAP进行身份验证。我们首先安装并配置了OpenLDAP服务器,然后创建了一个LDAP用户和组。最后,我们配置了PAM,以使用LDAP进行SSH身份验证。然后您可以使用LDAP用户进行身份验证并使用LDAP管理用户\组。

营销型网站