如何在 CentOS / RHEL Linux 上安装和配置 OpenLDAP

举报
Tiamo_T 发表于 2021/11/06 10:20:20 2021/11/06
【摘要】 LDAP 代表轻量级目录访问协议。 LDAP 是一种通过网络访问集中存储信息的解决方案。这种集中存储的信息组织在一个遵循 X.500 标准的目录中。

LDAP 代表轻量级目录访问协议。

LDAP 是一种通过网络访问集中存储信息的解决方案。这种集中存储的信息组织在一个遵循 X.500 标准的目录中。

信息以分层方式存储和组织,这种方法的优点是信息可以分组到容器中,客户端可以在需要时访问这些容器。

OpenLDAP 层次结构几乎类似于 DNS 层次结构。

以下是 OpenLDAP 中最常用的两个对象:

  1. cn(通用名称)——这是指叶条目,它们是最终对象(例如:用户和组)
  2. dc(域组件)——这是指 LDAP 层次结构中的容器条目之一。如果在设置中 LDAP 层次结构映射到 DNS 层次结构,通常所有 DNS 域都称为 DC 对象。

例如,如果层次结构 sam.thegeekstuff.com 中有用户,则该用户的完全可分辨名称称为 cn=sam, dc=thegeekstuff, dc=com。如果您在 FDN(完全专有名称)中注意到,使用逗号作为分隔符而不是点,这在 DNS 中很常见。

通过使用不同的 LDAP 条目类型,您可以设置分层目录结构。这就是 openLDAP 被广泛使用的原因。您可以轻松地构建一个 openLDAP 层次结构,其中可以轻松引用其他位置的对象,而无需将它们存储在本地服务器上。这使得 OpenLDAP 成为一个轻量级目录,尤其是与其他目录服务器(例如 Microsoft 的 Active Directory)相比时。

现在让我们看看如何设置 LDAP 服务器的单个实例,供网络中的多个客户端使用以进行身份​​验证。


安装 OpenLDAP 软件包

在 CentOS 和 RedHat 上,使用 yum install 如下图所示,安装 openldap 相关包。

yum install -y openldap openldap-clients openldap-servers

您应该安装以下三个包:

  1. openldap-servers – 这是主要的 LDAP 服务器
  2. openldap-clients – 这包含所有必需的 LDAP 客户端实用程序
  3. openldap – 此包包含 LDAP 支持库

LDAP 配置文件

  • config.ldif – LDAP 默认配置存储在 /etc/openldap/slapd.d/cn=config.ldif 中的文件下,该文件以 LDIF 格式创建。这是 LDAP 输入格式 (LDIF),这是一种允许您将信息输入到 LDAP 目录的特定格式。
  • olcDatabase{2}bdb.ldif – 您还可以在 /etc/openldap/slapd.d/cn=config/olcDatabase{2}bdb 文件下修改设置,例如服务器可以支持的连接数、超时和其他数据库设置。 ldif. 该文件还包含 LDAP 根用户和基本 DN 等参数。

以管理员身份创建 olcRootDN 帐户

始终建议首先创建一个具有更改 LDAP 数据库信息的完全权限的专用用户帐户。

修改 olcDatabase={2}bdb.ldif 文件,并更改 olcRootDN 条目。以下是默认条目。

# grep olcRootDN /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
olcRootDN: cn=Manager,dc=my-domain,dc=com

将上面的行更改为管理员用户。在此示例中,用户“ramesh”将是 olcRootDN。

olcRootDN: cn=ramesh,dc=thegeekstuff,dc=com

创建 olcRootPW 根密码

现在使用 slappasswd 命令为您要使用的 root 密码创建一个哈希值。生成密码后,打开 cn=config.ldif 文件,包含 olcRootPW 参数,并复制散列后的密码,如下所示。

执行以下命令并指定密码。这将为给定的密码生成哈希。

# slappasswd
New password: SecretLDAPRootPass2015
Re-enter new password: SecretLDAPRootPass2015
{SSHA}1pgok6qWn24lpBkVreTDboTr81rg4QC6

将上述命令的hash输出添加到config.ldif文件中的oclRootPW参数中,如下图所示。

# vi /etc/openldap/slapd.d/cn=config.ldif
olcRootPW: {SSHA}1pgok6qWn24lpBkVreTDboTr81rg4QC6

创建 olcSuffix 域名

现在设置 olcSuffix 并设置您想要的域。只需修改文件 olcDatabase={2}bdb.ldif 中以 olcSuffix 开头的行,如下所示。

# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
olcSuffix: dc=thegeekstuff,dc=com

验证配置文件

使用 slaptest 命令验证配置文件,如下所示。这应该显示“测试成功”消息,如下所示。

# slaptest -u
config file testing succeeded

在执行上述命令期间,您可能会收到以下消息,您可以暂时忽略这些消息。

54a39508 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
54a39508 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif"

启动 LDAP 服务器

启动 ldap 服务器,如下所示。

# service slapd start
Checking configuration files for slapd: [WARNING]
config file testing succeeded
Starting slapd:                         [  OK  ]

验证 LDAP 搜索

要验证 ldap 服务器是否配置成功,您可以使用以下命令并验证域条目是否存在。

# ldapsearch -x -b "dc=thegeekstuff,dc=com"
# extended LDIF
#
# LDAPv3
# base <dc=thegeekstuff,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# search result
search: 2
result: 32 No such object
# numResponses: 1

base.ldif 中的基本 LDAP 结构

OU(组织单位)对象的使用可以帮助您为 LDAP 数据库提供额外的结构。如果您计划将不同类型的条目(例如用户、组、计算机、打印机等)添加到 LDAP 目录中,则可以更轻松地将每个条目类型放入其自己的容器中。

要创建这些 OU,您可以创建一个初始 LDIF 文件,如下例所示。在此示例中,此文件允许您创建基本容器 dc=thegeekstuff,dc=com,并在该容器中创建两个名称为用户和组的组织单位。

# cat base.ldif
dn: dc=thegeekstuff,dc=com
objectClass: dcObject
objectClass: organization
o: thegeekstuff.com
dc: thegeekstuff
dn: ou=users,dc=thegeekstuff,dc=com
objectClass: organizationalUnit
objectClass: top
ou: users
dn: ou=groups,dc=thegeekstuff,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups

使用 ldapadd 导入基础结构

现在我们可以使用 ldapadd 命令将基本结构导入到 LDAP 目录中,如下所示。

# ldapadd -x -W -D "cn=ramesh,dc=thegeekstuff,dc=com" -f base.ldif
Enter LDAP Password:
adding new entry "dc=thegeekstuff,dc=com"
adding new entry "ou=users,dc=thegeekstuff,dc=com"
adding new entry "ou=groups,dc=thegeekstuff,dc=com"

使用 ldapsearch 验证基本结构

要验证 OU 是否已成功创建,请使用以下 ldapsearch 命令。

# ldapsearch -x -W -D "cn=ramesh,dc=thegeekstuff,dc=com" -b "dc=thegeekstuff,dc=com" "(objectclass=*)"
Enter LDAP Password:

上述命令的输出将显示 LDAP 目录结构中的所有对象。

# extended LDIF
#
# LDAPv3
# base <dc=thegeekstuff,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# thegeekstuff.com
dn: dc=thegeekstuff,dc=com
objectClass: dcObject
objectClass: organization
o: thegeekstuff.com
dc: thegeekstuff
# users, thegeekstuff.com
dn: ou=users,dc=thegeekstuff,dc=com
objectClass: organizationalUnit
objectClass: top
ou: users
# groups, thegeekstuff.com
dn: ou=groups,dc=thegeekstuff,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups
# search result
search: 2
result: 0 Success
# numResponses: 4
# numEntries: 3
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。