5.5. ldap

5.5.1. ldap简介

5.5.2. ldap名词

5.5.3. 选择一个域名

这里我的主机已经有个域名为sonar.aibeike.com 了。 这里就不修改了。 如果你的主机没有可以配置为ldap.aibeike.com。

vim /etc/hosts
127.0.0.1 localhost sonar.aibeike.com
ping sonar.aibeike.com

5.5.4. 安装 OpenLDAP 服务端

yum -y openldap-servers openldap-clients
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap.ldap /var/lib/ldap/DB_CONFIG
systemctl start slapd
systemctl enable slapd

5.5.5. 设置ldap的管理员用户root的密码

[root@ldap ~]# slappasswd
New password:
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxx

vim chrootpw.ldif
# 内容如下4行,其中最后一行为上面设定的值
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx

# 导入
[root@ldap ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"

5.5.6. 添加基础的schema

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

5.5.7. 设置根域和数据库超级管理员

这里的“根域”可以和这台服务器 FQDN 中的根域不同,此处我们设置为 dc=aibeike,dc=com。

数据库管理员和上面设置过的 OpenLDAP 超级管理员并非同一管理员,而且这里设置的管理员目前尚未创建。此处的设置同样需要一个用 slappasswd 命令生成的密码,为了方便管理,我们使用刚刚生成的密码,不再重新生成。

vim domain-dbadmin.ldif
# 添加如下内容
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by dn.base="cn=admin,dc=aibeike,dc=com" read
by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=aibeike,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=aibeike,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=aibeike,dc=com" write
by anonymous auth
by self write
by * none
olcAccess: {1}to dn.base=""
by * read
olcAccess: {2}to *
by dn="cn=admin,dc=aibeike,dc=com" write
by * read


# 导入
ldapmodify -Y EXTERNAL -H ldapi:/// -f domain-dbadmin.ldif

5.5.8. 创建用户节点、组节点和数据库超级管理员

vim basedomain.ldif # 内容如下 dn: dc=aibeike,dc=com objectClass: top objectClass: dcObject objectclass: organization o: Example Inc. dc: aibeike

dn: ou=user,dc=aibeike,dc=com objectClass: organizationalUnit ou: user

dn: ou=group,dc=aibeike,dc=com objectClass: organizationalUnit ou: group

dn: cn=admin,dc=aibeike,dc=com objectClass: organizationalRole cn: admin description: Directory Administrator

# 导入,需要输入数据库超级管理员的密码 ldapadd -x -D cn=admin,dc=aibeike,dc=com -W -f basedomain.ldif Enter LDAP Password:

5.5.9. 防火墙设置

firewall-cmd --add-service=ldap --permanent
success
firewall-cmd --reload

# 或者禁用
systemctl stop firewalld
systemctl disable firewalld

5.5.10. 配置log

vim log.ldif
# 添加如下4行
dn: cn=config
changetype: modify
add: olcLogLevel
olcLogLevel: 32

# 导入
ldapmodify -Y EXTERNAL -H ldapi:/// -f log.ldif

mkdir -p /var/log/slapd
chown ldap:ldap /var/log/slapd/
echo "local4.* /var/log/slapd/slapd.log" >> /etc/rsyslog.conf
systemctl restart rsyslog
systemctl restart slapd
# 查看
tail -n 4 /var/log/slapd/slapd.log

5.5.11. 使用ldapadmin连接

images/ladp/连接ldap.png images/ladp/主页ldap.png

5.5.12. 常用查询命令

ldapsearch  -LLL -W -x -H ldap://sonar.aibeike.com -D"cn=admin,dc=aibeike,dc=com" -b "dc=aibeike,dc=com"
Enter LDAP Password:
dn: dc=aibeike,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: aibeike

dn: ou=user,dc=aibeike,dc=com
objectClass: organizationalUnit
ou: user

dn: ou=group,dc=aibeike,dc=com
objectClass: organizationalUnit
ou: group

dn: cn=admin,dc=aibeike,dc=com
objectClass: organizationalRole
cn: admin
description: Directory Administrator

ldapsearch  -LLL -wxxxxxxxxxxx -x -H ldap://sonar.aibeike.com -D"cn=admin,dc=aibeike,dc=com" -b "dc=aibeike,dc=com" "(uid=*)"

# 查询特定用户
ldapsearch  -LLL -W -x -H "ldap://sonar.aibeike.com" -D "cn=admin,dc=aibeike,dc=com" -b "dc=aibeike,dc=com"  "(uid=test4)"

# 备份
ldapsearch  -LLL -W -x -H "ldap://sonar.aibeike.com" -D "cn=admin,dc=aibeike,dc=com" -b "dc=aibeike,dc=com"  >/root/ldap.bak