配置 OpenLDAP
轻型目录访问协议 (LDAP) 经常被用作身份验证机制,为许多不同的应用程序提供通用的用户名和密码。本教程展示了如何在 Alpine Linux 上安装和配置 OpenLDAP 软件包。
安装软件包
Alpine 软件包仓库中提供了 OpenLDAP 软件包。但是,仅仅添加 openldap apk 并不足以让您启动并运行。您还需要安装后端数据库和一些 LDAP 命令行工具。
方法如下
# apk add openldap openldap-back-mdb openldap-clients
但是,在您启动 slapd 服务之前,还有一些配置需要完成。
自定义 OpenLDAP 2.3+ 的配置
Alpine OpenLDAP 软件包可以使用配置目录 (slapd.d) 或配置文件 (slapd.conf)。自从 OpenLDAP 2.3 版本以来,首选方法是使用 slapd.d 配置目录。任何官方 OpenLDAP 文档,包括他们的 快速入门指南,都将使用这种配置方法。
首先,创建具有正确所有权和权限的 slapd.d 目录。
# install -m 755 -o ldap -g ldap -d /etc/openldap/slapd.d
接下来,编辑 slapd 启动配置以使用目录而不是文件。
- 在您喜欢的编辑器中打开
/etc/conf.d/slapd
- 注释掉
cfgfile="/etc/openldap/slapd.conf"
- 取消注释
cfgdir="/etc/openldap/slapd.d"
最后,删除包含的 slapd.conf 文件。
# rm /etc/openldap/slapd.conf
在您喜欢的编辑器中打开 /etc/openldap/slapd.ldif
。搜索以 .la
结尾的文件名,并将扩展名更改为 .so
自定义您的域的配置
您的 LDAP 域可以与您的 DNS 域相同,也可以完全不同。无论您选择什么,请务必使用 dc=domain,dc=tld
的 LDAP 命名约定,而不是 domain.tld
的点分隔 DNS 样式
- 再次编辑 slapd.ldif。
- 找到
olcSuffix:
关键字。 - 更改值以匹配您的域
- 找到
olcRootDN:
- 更改值以匹配您的域
稍后,本文档将假设域为 dc=home
或 dc=contoso,dc=com
,分别反映 home
或 contoso.com
的域。
为 Linux 用户账户添加模式
基本的 OpenLDAP 配置不包含核心模式定义以外的任何内容。为了对 Linux 系统有用,通常包含 inetOrgPerson 模式和 NIS 模式。模式文件随 OpenLDAP 软件包一起提供。所有需要做的就是将它们包含在 slapd.ldif 配置中,以及 cosine.ldif 依赖项。
- 再次编辑
slapd.ldif
。 - 找到行
include: file:///etc/openldap/schema/core.ldif
- 追加类似的行,引用 cosine.ldif、inetorgperson.ldif 和 nis.ldif。
完成时应如下所示
/etc/openldap/slapd.ldif 的内容
导入配置
最后一次验证 slapd.ldif,并使用 slapadd
命令将其导入到后端数据库中。
# slapadd -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif
应该没有错误,只有 “Closing DB...” 消息。
接下来,更改 /etc/openldap/slapd.d
中生成文件的所有权
如果您跳过此步骤,slapd 服务将拒绝启动。
# chown -R ldap:ldap /etc/openldap/slapd.d/*
配置 slapd 服务
pid 目录丢失。我们需要创建它,否则服务将无法启动,因此需要首先完成此操作。
# install -m 755 -o ldap -g ldap -d /var/lib/openldap/run
接下来,您可以启动服务并在启动时启用它。
# rc-service slapd start # rc-update add slapd
测试
OpenLDAP 快速入门指南使用 ldapsearch
实用程序来测试配置。
$ ldapsearch -x -b "" -s base '(objectclass=*)' namingContexts
您应该看到您的域。
您也可以使用 slapcat
进行测试
$ slapcat -n 0
这将以 LDIF 格式转储整个配置数据库。您也可以管道传输到 grep 并指定您的域名,以验证一切看起来是否正确。使用 grep 时,请记住 LDAP 使用 dc=domain,dc=com
格式,而不是更熟悉的 domain.com。
稍后,当您开始填充 LDAP 数据库时,您可以使用 slapcat -n 1
查看您的信息。(零是配置数据库。大于零的数字是用户定义的数据库。)
最后,您可以运行 netstat -tln
并在输出中查找 LDAP 端口 389。
脚本化安装
如果您想自动化上述步骤,请使用以下脚本。请务必调整 DOMAIN 值以适合您的需求。
export DOMAIN="dc=home" echo "Installing packages..." apk add openldap openldap-back-mdb openldap-clients echo "Configuring for v2.3+ style slapd.d config directory..." install -m 755 -o ldap -g ldap -d /etc/openldap/slapd.d sed -i~ \ -e 's/^cfgfile=/#cfgfile=/' \ -e 's/^#cfgdir=.*/cfgdir=\"\/etc\/openldap\/slapd.d\"/' \ /etc/conf.d/slapd rm /etc/openldap/slapd.conf echo "Customizing for domain: ${DOMAIN}..." sed -i~ \ -e 's/\.la$/.so/' \ -e "s/dc=my-domain,dc=com/${DOMAIN}/" /etc/openldap/slapd.ldif echo "Adding schema for Linux user accounts..." cp /etc/openldap/slapd.ldif /etc/openldap/slapd.ldif~1 awk '{ print } /^include:/ { sub("core", "cosine", $0); print $0; sub("cosine", "inetorgperson"); print $0; sub("inetorgperson", "nis"); print }' /etc/openldap/slapd.ldif~1 >/etc/openldap/slapd.ldif echo "Importing configuration..." slapadd -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif chown -R ldap:ldap /etc/openldap/slapd.d/* echo "Configuring slapd service..." install -m 755 -o ldap -g ldap -d /var/lib/openldap/run service slapd start rc-update add slapd
创建组织结构
现在安装已完成,您可以开始使用您的 LDAP 数据库了。至少,您需要在您的 LDAP 目录中创建一个组织。这在 OpenLDAP 快速入门 文档的第 11 步中进行了介绍。
这是一个使用 contoso.com 域作为组织和 home
/dc=home
作为基本 DN 的示例(如果您的基本 DN 不同,请更新它)
cat <<EOF >org.ldif dn: dc=contoso,dc=com objectclass: dcObject objectclass: organization o: Fictional Company dc: contoso dn: cn=Manager,dc=contoso,dc=com objectclass: organizationalRole cn: Manager EOF ldapadd -x -D "cn=Manager,dc=home" -w secret -f org.ldif
您可能还想创建组织单元 (OU) 以帮助保持目录整洁。
这是一个创建 People 和 Groups 作为 OU 的 LDIF
# Organizational unit for users dn: ou=People,dc=home changetype: add objectClass: organizationalUnit ou: People # Organizational unit for groups. dn: ou=Groups,dc=home changetype: add objectClass: organizationalUnit ou: Groups
使用类似于用于创建组织的 ldapadd 命令导入 OU。
现在这已完成,您可以使用您选择的管理工具连接到 LDAP 服务器,并开始填充用户、组等。LDAPAdmin 🔓 对于 Windows 用户来说,是一个老旧但好用的工具。
下一步
此处提供的配置不包括 TLS(加密)通信的规定。它不应在不受信任的网络上使用。有关设置加密 LDAP 连接的说明,请参阅官方 OpenLDAP 文档。