阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用OpenLDAP搭建LDAP服务器

175次阅读
没有评论

共计 4317 个字符,预计需要花费 11 分钟才能阅读完成。

大数据平台,LDAP 和 Kerberos 的统一账户管理和认证是必不可少的。下面讲解下使用 OpenLDAP 来搭建 LDAP 服务器的过程。

1. 安装 openldap 软件包

yum install openldap openldap-* -y

2. 初始化配置文件,不要手动去创建 slapd.conf,可能会由于格式问题导致问题

cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

3. 初始化数据库配置文件

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

4. 修改权限

chown -R ldap.ldap /etc/openldap
chown -R ldap.ldap /var/lib/ldap

5. slapd.conf 配置文件如下

# egrep -v “#|^$” /etc/openldap/slapd.conf
include        /etc/openldap/schema/corba.schema
include        /etc/openldap/schema/core.schema
include        /etc/openldap/schema/cosine.schema
include        /etc/openldap/schema/duaconf.schema
include        /etc/openldap/schema/dyngroup.schema
include        /etc/openldap/schema/inetorgperson.schema
include        /etc/openldap/schema/Java.schema
include        /etc/openldap/schema/misc.schema
include        /etc/openldap/schema/nis.schema
include        /etc/openldap/schema/openldap.schema
include        /etc/openldap/schema/ppolicy.schema
include        /etc/openldap/schema/collective.schema
include        /etc/openldap/schema/kerberos.schema  <<<<<<< 由于后面需要配合 kerberos 认证,这里增加 kerberos.schema,参考第 6 步骤
allow bind_v2
pidfile        /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
loglevel        4095
TLSCACertificatePath /etc/openldap/certs
TLSCertificateFile “\”OpenLDAP Server\””
TLSCertificateKeyFile /etc/openldap/certs/password
access to *
    by self write
    by users read
    by anonymous read
database config
access to *
        by dn.exact=”gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth” manage
        by * none
database monitor
access to *
        by dn.exact=”gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth” read
        by dn.exact=”cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com” read
        by * none
database        bdb
suffix          “dc=testserver,dc=com”
checkpoint      1024 15
cachesize      10000
rootdn          “cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com”
rootpw          {SSHA}LPbWMTEOprpTvqjmxy/mTW+i0IPrugJc    <<<<<<<<<<<<<<< 参考第 7 步骤,生成加密密码
directory      /var/lib/ldap
index objectClass                      eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                    eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

6. 安装 kerberos 软件

yum install krb5* -y

查找 kerberos.schema 文件,并拷贝到 /etc/openldap/schema/kerberos.schema

# cd /usr/share/doc/krb5-server-ldap-1.10.3/
# ls
60kerberos.ldif  kerberos.ldif  kerberos.schema

7. 生成 LDAP 的 root 管理密码

1
2 slappasswd -s 123456
{SSHA}L4uH7lVxwdS0/L/vspdseXORcneIWfeb

8. 检查配置文件是否有格式错误

# slaptest -f /etc/openldap/slapd.conf
config file testing succeeded

9. 准备生成 LDAP 数据库结构

先删除 slapd.d 的原有结构

rm -rf /etc/openldap/slapd.d/*

生成新的数据结构

slaptest -f /etc/openldap/slapd.conf -F/etc/openldap/slapd.d

修改权限,这个很重要,不然后面会报错

chown -R ldap:ldap /etc/openldap/slapd.d

每次修改都需要重启 ldap

service slapd restart

10. 测试 LDAP 的连接,这里足足让我纠结两周,无数次的安装,有的时候可以正常登陆,有的时候会报错,明确说认证错误(密码错误)。这个一直让我以为是密码部分的格式设置有问题。各种尝试都无法正常解决掉。最后突然发现,是 rootdn 的问题,而不是 rootpw 的问题。

# ldapsearch -x -D “cn=admin,dc=testserver,dc=com” -h 10.24.103.17 -W -b ‘ou=People,dc=testserver,dc=com’
Enter LDAP Password:
ldap_bind: Invalid credentials (49)

就是说,下面的命令中,要完整的复制 sldap.conf 中的“rootdn “cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com””条目信息,不能多,不能少。

这样才能正常查询结果

1 ldapsearch -x -D “cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com” -h 10.24.103.17 -W

11. LDAP 创建成功之后,需要创建数据。由于我是迁移数据过来,只是将生产的 ldap 数据导出导入。

ldap 数据备份的方式有两种:一种是通过 ldapsearch,一种是通过 slapcat 命令。很多人都是建议通过 slapcat 来完成,但是我测试一下,没有成功,就先使用 ldapsearch 导出,ldapadd 导入的

/usr/sbin/slapcat > /tmp/liang/ldapdbak.ldif
/usr/sbin/slapadd -l  /tmp/liang/ldapdbak.ldif

12. 导入数据命令

ldapadd -x -D “cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com” -h 10.24.103.17 -W -f ldapexport.ldif

13. 查询数据, 确认已经导入成功即可

ldapsearch -LLL -x -D “cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com” -W -b “dc=testserver,dc=com” ‘(uid=*)’

15. 在客户端安装 ldap 软件,我比较偷懒,全都安装了,实际只安装 openldap-clients 就可以了

yum install openldap openldap-* -y

16. 设置 LDAP 客户端,客户端设置有几种方式

—1. 通过图形化命令完成 LDAP client 设置

LANG=C authconfig-tui

使用 OpenLDAP 搭建 LDAP 服务器

使用 OpenLDAP 搭建 LDAP 服务器

—2. 通过 authconfig 命令,配置客户端。由于是大数据平台运维,所以我是通过命令行实现的,这样比较方便批量处理。

authconfig –enablemkhomedir \
–disableldaptls \
–enablemd5 \
–enableldap \
–enableldapauth \
–ldapserver=ldap://10.24.103.17 \
–ldapbasedn=”dc=testserver,dc=com” \
–enableshadow \
–update

17. 然后在 client 上,root 用户 su – username,可以发现,已经配置成功了。

看了很多人的 blog,很简单的步骤,“yum 安装 –>sldap.conf 的配置 –> 启动 –>OK”,但是对于我来说,研究了 2 周多啊(工作空闲时间),真心很崩溃。即使一个小问题,自己也无法自行发现(理解问题)。所以,很多事情看似很简单,甚至于不屑于。做做试试,才能深深体会,理想和现实的差距。

—–Update on 2018-2-25———

最近发现连接同一个 LDAP 的不同 client,使用同一个用户登录,一个 client 就可以正常登陆,另一个显示密码错误。百思不得其解。最后通过 LDAP 图形端,在两个 client server 都开启,发现选项有变化。修改之后问题解决。

LANG=C authconfig-tui

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计4317字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中