大数据平台,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数据导出导入。