安装OpenLDAP前要准备什么

很多第一次接触LDAP的人会觉得这东西很神秘。实际上在CentOS上装OpenLDAP,你需要的不过就是一台干净的CentOS7或8系统。别去折腾CentOS6了,软件源都凉透了。网络连接要通畅,因为要从EPEL仓库拉包。防火墙记得提前放行389和636端口,不然配完了连不上,排查半天才发现是防火墙在挡路。

建议你先把机器时间校准好。LDAP对时间敏感,时间差太大会导致认证失败。装个chrony或者ntpdate都行,确保系统时间和标准时间误差在几秒内。还有一点很多人忽略,主机名一定要配好。在/etc/hosts里加上本机IP和主机名的对应关系centos openldap,不然slapd启动时会报错。

磁盘空间也要留意。默认的OpenLDAP数据目录在/var/lib/ldap,如果系统盘不大,日后用户数据多了容易撑爆。生产环境建议单独挂个盘,或者至少监控一下这个目录的空间使用率。

怎么用yum安装OpenLDAP

centos openldap_centos openldap_centos openldap

CentOS的官方源里自带OpenLDAP,但版本可能不是最新的。我建议先把EPEL源加上。执行yum install epel-release,然后更新一下缓存。关键包就三个:openldap、openldap-servers、openldap-clients。别漏了,漏一个后面就得补装。

安装命令很简单:yum install openldap openldap-servers openldap-clients -y。装完后检查一下版本号,slapd -V就能看到。如果你要装的是OpenLDAP 2.4.x版本,CentOS7自带的就够用。CentOS8的话默认是2.6版本,配置语法有些变化linux系统安装,但基本原理一样。

有个小坑要提醒你,有些云镜像的CentOS默认没装openldap-servers,只装了客户端。如果你发现装完后找不到slapd命令,八成是少了这个包。别慌,补装就行。

配置slapd需要改哪些文件

装好包之后,先别急着启动服务。OpenLDAP的配置文件在/etc/openldap/slapd.d目录下,是动态配置的。传统的那种slapd.conf文件虽然还能用,但官方已经不推荐了。网上很多教程还在教改slapd.conf,别跟着学,那是老古董的做法。

第一步,复制默认的DB_CONFIG文件:cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG。给这个目录设置好权限,owner改成ldap用户。不然后面启动的时候slapd会报权限错误。

第二步,设置管理员密码。用slappasswd命令生成一个加密后的密码串,记住这个输出。然后创建一个root.ldif文件,内容大致是这样的:

dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}你生成的密码串

这个文件是用来修改管理员密码的。用ldapadd命令把它加载进去。注意顺序,先加载基础schema,再加载这个密码文件。

schema文件也得配。默认的core schema已经加载了,但你还需要cosine、inetorgperson、nis这几个。用ldapadd命令加载即可,位置在/etc/openldap/schema/目录下。

添加基础目录结构怎么写ldif

有了管理员密码,接下来要建目录树。说白了就是确定你的域名是什么,比如,对应到LDAP里就是dc=example,dc=com。建议你先画个结构图,想清楚组织单元怎么分。

基础ldif文件大概长这样:

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: example
dn: cn=admin,dc=example,dc=com
objectClass: organizationalRole
cn: admin

这只是一个最简结构。实际工作中,你往往还需要建ou=people放用户,ou=groups放组。别一口气写太多,从简到繁慢慢加。用ldapadd -x -D “cn=admin,dc=example,dc=com” -W -f 你的ldif文件 来导入。

centos openldap_centos openldap_centos openldap

导入成功的话,用ldapsearch验证一下:ldapsearch -x -b "dc=example,dc=com"。能看到返回结果就说明基础结构搭好了。如果报错说认证失败,检查管理员密码对不对,或者看看防火墙是不是把端口堵了。

给OpenLDAP加用户和组的方法

用户管理是OpenLDAP最常用的功能。添加一个用户centos openldap,你得创建一个ldif文件,指定uid、cn、sn、uidNumber、gidNumber、homeDirectory这些属性。uidNumber和gidNumber别重复,最好做个记录本,不然以后加用户容易冲突。

密码字段用userPassword,值用slappasswd生成。举个例子:

dn: uid=zhangsan,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: zhangsan
cn: Zhang San
sn: Zhang
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/zhangsan
userPassword: {SSHA}加密串

centos openldap_centos openldap_centos openldap

导入之后,用ldapsearch查一下,看到这个用户条目就说明成功了。组的话linux多线程,用posixGroup对象类,把memberUid字段填上用户名。这样用户就属于某个组了,权限管理就方便了。

怎么让客户端通过LDAP认证登录

服务端配好了,客户端也得配。CentOS客户端需要装sssd或者nslcd来做认证。我推荐sssd,配置起来相对简单。装好sssd之后,编辑/etc/sssd/sssd.conf文件,把LDAP服务器的地址、搜索基、绑定DN填进去。

关键配置项有:id_provider、auth_provider、ldap_uri、ldap_search_base、ldap_default_bind_dn、ldap_default_authtok。密码写在文件里,记得把这个文件权限改成600,不然sssd会报错说文件权限不安全。

改完配置,重启sssd服务,然后测试一下:getent passwd 应该能看到LDAP里的用户。用ssh登录试试,能成功就是真通了。如果卡住或者报错,查看/var/log/secure和/var/log/messages里的日志,大多数问题都能从日志里找到线索。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复