1) 安装OpenLDAP Server
[root@ldapsrv2 ~]# yum install openldap-servers openldap-clients -y
[root@ldapsrv2 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@ldapsrv2 ~]# chown ldap. /var/lib/ldap/DB_CONFIG
[root@ldapsrv2 ~]# systemctl enable --now slapd
2) 设置OpenLDAP管理员密码
[root@ldapsrv2 ~]# slappasswd
New password: # 输入密码
Re-enter new password:
{SSHA}EXangertG2H2Xg8lTxvI+g94DQbTDiGD
[root@ldapsrv2 ~]# vim chrootpw.ldif
angetype: modify
add: olcRootPW
olcRootPW: {SSHA}EXangertG2H2Xg8lTxvI+g94DQbTDiGD
[root@ldapsrv2 ~]# 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
3) 定义基本架构
[root@ldapsrv2 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
[root@ldapsrv2 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"
[root@ldapsrv2 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"
4) 在OpenLDAP数据库中设定域名(将1000cc.net替换为你自己的域名)
[root@ldapsrv2 ~]# vim chdomain.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=Manager,dc=1000cc,dc=net" read by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=1000cc,dc=net
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=1000cc,dc=net
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}EXangertG2H2Xg8lTxvI+g94DQbTDiGD
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=1000cc,dc=net" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=1000cc,dc=net" write by * read
[root@ldapsrv2 ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
[root@ldapsrv2 ~]# vim basedomain.ldif
输入以下内容
dn: dc=1000cc,dc=net
objectClass: top
objectClass: dcObject
objectclass: organization
o: 1000cc net
dc: 1000cc
dn: cn=Manager,dc=1000cc,dc=net
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=People,dc=1000cc,dc=net
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=1000cc,dc=net
objectClass: organizationalUnit
ou: Group
[root@ldapsrv2 ~]# ldapadd -x -D cn=Manager,dc=1000cc,dc=net -W -f basedomain.ldif
Enter LDAP Password: # 输入管理员密码
adding new entry "dc=1000cc,dc=net"
adding new entry "cn=Manager,dc=1000cc,dc=net"
adding new entry "ou=People,dc=1000cc,dc=net"
adding new entry "ou=Group,dc=1000cc,dc=net"
5) 防火墙设定
[root@ldapsrv2 ~]# firewall-cmd --add-service=ldap --permanent
success
[root@ldapsrv2 ~]# firewall-cmd --reload
success
6) 在所有的节点上添加并配置syncprov模块
(1) ldapsrv的配置
[root@ldapsrv ~]# vim mod_syncprov.ldif
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
[root@ldapsrv ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
[root@ldapsrv ~]# vim syncprov.ldif
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
[root@ldapsrv ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"
(2) ldapsrv2的配置
[root@ldapsrv2 ~]# vim mod_syncprov.ldif
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
[root@ldapsrv2 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
[root@ldapsrv2 ~]# vim syncprov.ldif
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
[root@ldapsrv2 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"
7) 在所有节点上配置同步信息
(1) ldapsrv的配置
[root@ldapsrv ~]# vim master1.ldif
dn: cn=config
changetype: modify
replace: olcServerID
# 指定本台的olcServerID为0
olcServerID: 0
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
# 指定要同步的其他服务器的地址
provider=ldap://ldapsrv2.1000cc.net:389/
bindmethod=simple
binddn="cn=Manager,dc=1000cc,dc=net"
credentials=123456
searchbase="dc=1000cc,dc=net"
scope=sub
schemachecking=on
type=refreshAndPersist
retry="30 5 300 3"
interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
[root@ldapsrv ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f master1.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"
(2) ldapsrv2的配置
[root@ldapsrv ~]# vim master2.ldif
dn: cn=config
changetype: modify
replace: olcServerID
# 指定本台的olcServerID为1
olcServerID: 1
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
# 指定要同步的其他服务器的地址
provider=ldap://ldapsrv.1000cc.net:389/
bindmethod=simple
binddn="cn=Manager,dc=1000cc,dc=net"
credentials=123456
searchbase="dc=1000cc,dc=net"
scope=sub
schemachecking=on
type=refreshAndPersist
retry="30 5 300 3"
interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
[root@ldapsrv ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f master2.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"
8) 客户端配置
[root@ldapclient ~]# authconfig --ldapserver=ldapsrv.1000cc.net,ldapsrv2.1000cc.net --update
|