Centos 安装 OpenLDAP

本教程相关 LDIF 文件下载: 

相关 idif 文件 https://download.csdn.net/download/mshxuyi/86511892

LDAP:

LDAP(Lightweight Directory Access Protocol,轻型目录访问协议),是一种基于 TCP/IP的访问在线目录服务的协议,有V2和V3版本,其中现在用得最多的都是V3版本。而 openLDAP 则是这种协议的开源的实现,被广泛应用于 " 目录访问权限控制 " 这一目的 

 1、安装

# 安装
yum install -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

2、修改配置

# 生成管理员密码
slappasswd -s abc@123

# 显示
{SSHA}Hj8Fc0yIgn/ACV5ZdJdAR+Rq+Ug57Nd5


vim chrootpw.ldif

# 内容
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}YzpdyJJBH3pNjXpQO7C/NvmWdxVPB8Cd

# 执行LDIF文件
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif

3、导入预设

# 执行LDIF文件
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
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif

4、添加域

添加新的域 xielong.local,admin 管理员的密码是上面生成的

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=admin,dc=xielong,dc=local" read by * none

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

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

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}YzpdyJJBH3pNjXpQO7C/NvmWdxVPB8Cd

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


# 执行LDIF文件
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif

5、添加 memberof 功能

很多场景下,我们需要快速的查询某一个用户是属于哪一个或多个组的,memberOf 正是提供了这样的一个功能:如果某个组中通过 member 属性新增了一个用户,OpenLDAP 便会自动在该用户上创建一个 memberOf 属性,其值为该组的 dn。遗憾的是,OpenLDAP 默认并不启用这个特性,因此我们需要通过相关的配置开启它。

vim addmemberof.ldif

# 内容
dn: cn=module{0},cn=config
cn: modulle{0}
objectClass: olcModuleList
objectclass: top
olcModuleload: memberof.la
olcModulePath: /usr/lib64/openldap

dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf


vim refint1.ldif

# 内容
dn: cn=module{0},cn=config
add: olcmoduleload
olcmoduleload: refint


vim refint2.ldif

# 内容
dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: refint
olcRefintAttribute: memberof uniqueMember  manager owner


# 执行LDIF文件
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f addmemberof.ldif
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif

6、添加Group People 2个组织单位和 admin 组织角色

vim base.ldif

# 内容
dn: dc=xielong,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: xielong Company
dc: xielong

dn: cn=admin,dc=xielong,dc=local
objectClass: organizationalRole
cn: admin

dn: ou=People,dc=xielong,dc=local
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=xielong,dc=local
objectClass: organizationalUnit
ou: Group


# 执行LDIF文件
ldapadd -x -D cn=admin,dc=xielong,dc=local -W -f base.ldif

7、在 Group 里面 添加 dev 和 ops 2个组

vim group.ldif

# 内容
dn: cn=ops,ou=Group,dc=xielong,dc=local
cn: ops
objectClass: top
objectClass: groupOfUniqueNames
uniqueMember:

dn: cn=dev,ou=Group,dc=xielong,dc=local
cn: dev
objectClass: top
objectClass: groupOfUniqueNames
uniqueMember:


# 执行LDIF文件
ldapadd -x -D cn=admin,dc=xielong,dc=local -W -f group.ldif

8、配置日志

mkdir -p /var/log/slapd
touch /var/log/slapd/slapd.log
chown -R ldap:ldap /var/log/slapd


vim /etc/syslog.conf

# 增加,在73行下面
local4.*                                                /var/log/slapd/slapd.log



# 重启
systemctl restart rsyslog


vim log.ldif

# 内容
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

# 执行LDIF文件
ldapmodify -Y EXTERNAL -H ldapi:/// -f log.ldif

9、使用 Ldap Admin 客户端登陆

Centos 安装 OpenLDAP_第1张图片

10、登陆成功后,能看到 已经创建好 dev 和 ops 2个 group

Centos 安装 OpenLDAP_第2张图片

11、接着创建 zhangsan 和 lishi 2个用户 , 并把他们加入 dev 和 ops 组里面

Centos 安装 OpenLDAP_第3张图片

Centos 安装 OpenLDAP_第4张图片

12、验证 memberof 功能

ldapsearch -x -H ldap://10.3.0.210 -b dc=xielong,dc=local -D "cn=admin,dc=xielong,dc=local" -W memberOf


# 成功显示 memberOf
----

# zhangsan, People, xielong.local
dn: uid=zhangsan,ou=People,dc=xielong,dc=local
memberOf: cn=dev,ou=Group,dc=xielong,dc=local

# ops, Group, xielong.local
dn: cn=ops,ou=Group,dc=xielong,dc=local

# dev, Group, xielong.local
dn: cn=dev,ou=Group,dc=xielong,dc=local

# lishi, People, xielong.local
dn: uid=lishi,ou=People,dc=xielong,dc=local
memberOf: cn=ops,ou=Group,dc=xielong,dc=local

------

13、验证日志

cat /var/log/slapd/slapd.log 

# 内容
Sep  8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=183 SRCH base="uid=zhangsan,ou=People,dc=xielong,dc=local" scope=0 deref=0 filter="(objectClass=*)"
Sep  8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=183 SEARCH RESULT tag=101 err=0 nentries=1 text=
Sep  8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=184 SRCH base="uid=lishi,ou=People,dc=xielong,dc=local" scope=0 deref=0 filter="(objectClass=*)"
Sep  8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=184 SEARCH RESULT tag=101 err=0 nentries=1 text=
Sep  8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=185 SRCH base="uid=zhangsan,ou=People,dc=xielong,dc=local" scope=0 deref=0 filter="(objectClass=*)"
Sep  8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=185 SEARCH RESULT tag=101 err=0 nentries=1 text=

你可能感兴趣的:(LDAP,centos,linux,服务器)