在Linux系统中搭建LDAP(Lightweight Directory Access Protocol)服务器可以集中管理用户认证和目录信息,适用于企业级用户统一管理场景,以下以Ubuntu/Debian系统为例,详细说明LDAP服务器的完整搭建过程。

首先需要安装必要的软件包,OpenLDAP是开源的LDAP实现,包含服务器端和客户端工具,通过以下命令安装:sudo apt update && sudo apt install slapd ldap-utils,安装过程中会提示设置管理员密码,建议使用强密码并妥善保存,安装完成后,需初始化LDAP配置目录,运行sudo dpkg-reconfigure slapd,在交互界面中选择"否"以移除旧数据库,选择"MDB"作为数据库类型,并设置管理员密码再次确认。
接下来配置LDAP基本参数,编辑 slapd 配置文件/etc/ldap/slapd.conf(若不存在可从/etc/ldap/slapd.d/生成),添加以下核心配置:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel 256
moduleload back_mdb
database mdb
suffix "dc=example,dc=com"
rootdn "cn=admin,dc=example,dc=com"
rootpw {SSHA}加密后的密码
其中dc=example,dc=com需替换为实际的域名,密码可通过slappasswd -s yourpassword生成SSHA加密值。
创建基础目录结构,使用ldapadd命令添加基础组织单元,首先创建LDIF文件base.ldif:

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
dc: example
dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups
执行sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f base.ldif导入数据,输入管理员密码完成创建。
配置用户认证集成,安装libnss-ldap和pam_ldap包:sudo apt install libnss-ldap pam_ldap,配置时输入LDAP服务器URI(ldap://127.0.0.1/)、基础DN(dc=example,dc=com)等信息,编辑/etc/nsswitch.conf文件,将passwd、group、shadow行的ldap前置:
passwd: ldap files
group: ldap files
shadow: ldap files
创建测试用户和组,先创建组LDIF文件group.ldif:
dn: cn=developers,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: developers
gidNumber: 1000
执行sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f group.ldif添加组,用户LDIF文件user.ldif示例:

dn: uid=testuser,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
uid: testuser
cn: Test User
sn: User
uidNumber: 1001
gidNumber: 1000
homeDirectory: /home/testuser
userPassword: {SSHA}加密密码
mail: testuser@example.com
使用相同命令添加用户,完成后可通过getent passwd testuser验证用户是否生效。
配置TLS加密增强安全性,生成证书文件:sudo openssl req -new -x509 -nodes -out slapd-cert.pem -keyout slapd-key.pem -days 365,将证书复制到/etc/ldap/ssl/并设置权限,修改/etc/ldap/slapd.d/cn=config/olcDatabase={1}mdb.ldif,添加TLS配置:
olcTLSCertificateFile: /etc/ldap/ssl/slapd-cert.pem
olcTLSCertificateKeyFile: /etc/ldap/ssl/slapd-key.pem
olcTLSProtocolMin: 3.1
重启服务sudo systemctl restart slapd,客户端连接时需使用ldaps://协议。
常见故障排查:检查服务状态sudo systemctl status slapd,查看日志/var/log/syslog中的 slapd 相关信息,使用ldapsearch -x -b "dc=example,dc=com"测试基本查询,若用户无法登录,检查/etc/pam_ldap.conf和/etc/nsswitch.conf配置是否正确,确保PAM模块已正确加载。
相关问答FAQs:
-
如何重置LDAP管理员密码? 答:使用
slappasswd -s newpassword生成新密码的SSHA哈希值,然后编辑/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif文件,找到olcRootPW行替换为新的哈希值,保存后执行sudo systemctl restart slapd使配置生效。 -
客户端无法连接LDAP服务器如何处理? 答:首先检查服务器防火墙是否开放389(LDAP)或636(LDAPS)端口,使用
sudo ufw allow 389放行,确认服务运行状态sudo systemctl status slapd,检查网络连通性telnet ldapserver 389,若使用TLS,需验证客户端是否信任服务器证书,可通过ldapsearch -x -ZZ -H ldap://server -b "dc=example,dc=com"测试加密连接。
