首页 主机正文

在Centos 7下搭建Openldap服务,使用lam作为web管理界面

kumb 主机 2019-04-29 15:54:18 1148 0

轻型目录访问协议(Lightweight Directory Access Protocol,简写为LDAP)是一个开放,中立的工业标准应用协议,通过IP协议提供访问控制和维护分布式的目录信息。

configure-ldap-mirror-chinese.png

市面上只要你能够想像得到的所有工具软件,全部都支持LDAP协议。LDAP协议的好处就是你公司的所有员工在所有这些工具里共享同一套用户名和密码,来人的时候新增一个用户就能自动访问所有系统,走人的时候一键删除就取消了他对所有系统的访问权限,这就是LDAP。

网络上的教程要么是老版本的软件,要么是配置方法错误,大部分都是没有用的,比如数据库的导入这些基本配置方法都是错误的,因此这里有必要详细介绍每一步的配置过程和原理。

一、使用yum安装openldap服务

# yum 安装相关包

yum install -y openldap openldap-clients openldap-servers

# 复制一个默认配置到指定目录下,并授权,这一步一定要做,然后再启动服务,不然生产密码时会报错

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

# 授权给ldap用户,此用户yum安装时便会自动创建

chown -R ldap. /var/lib/ldap/DB_CONFIG

# 启动服务,先启动服务,配置后面再进行修改

systemctl start slapd
systemctl enable slapd

# 查看状态,正常启动则ok

systemctl status slapd

二、配置openldap

从openldap2.4.23版本开始,所有配置文件都保存在slapd.d目录下的cn=config文件夹内,不再使用slapd.conf作为配置文件。配置文件的后缀为 ldif,且每个配置文件都是通过命令自动生成的,任意打开一个配置文件,在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,使用ldapmodify命令进行修改

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.

安装openldap后,会有三个命令用于修改配置文件,分别为ldapadd, ldapmodify, ldapdelete,顾名思义就是添加,修改和删除。而需要修改或增加配置时,则需要先写一个ldif后缀的配置文件,然后通过命令将写的配置更新到slapd.d目录下的配置文件中去,完整的配置过程如下,跟着做就可以了。

# 生成管理员密码,记录下这个密码,后面需要用到

slappasswd -s 123456
{SSHA}uKAWr4vmUixz5yMINosSNnQ1lFQj/+e8

# 新增修改密码文件,ldif为后缀,文件名随意,不要在/etc/openldap/slapd.d/目录下创建类似文件

# 生成的文件为需要通过命令去动态修改ldap现有配置,如下,我在家目录下创建文件

cd ~
nano changepwd.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}uKAWr4vmUixz5yMINosSNnQ1lFQj/+e8

ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

# 这里解释一下这个文件的内容:

# 第一行执行配置文件,这里就表示指定为 cn=config/olcDatabase={0}config 文件。你到/etc/openldap/slapd.d/目录下就能找到此文件

# 第二行 changetype 指定类型为修改

# 第三行 add 表示添加 olcRootPW 配置项

# 第四行指定 olcRootPW 配置项的值

在执行下面的命令前,你可以先查看原本的olcDatabase={0}config文件,里面是没有olcRootPW这个项和值,执行命令后,你再看就会新增了olcRootPW项,而且内容是我们文件中指定的值加密后的字符串。

# 执行命令,修改ldap配置,通过-f执行文件

ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

执行修改命令后,有如下输出则为正常:

20190426144821449.png

查看olcDatabase={0}config内容,新增了一个olcRootPW项。

20190426145019794.png

上面就是一个完整的修改配置的过程,切记不能直接修改/etc/openldap/slapd.d/目录下的配置,很多教程说直接修改配置文件是不对的。

# 我们需要向 LDAP 中导入一些基本的 Schema。这些 Schema 文件位于 /etc/openldap/schema/ 目录中,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

# 修改域名,新增changedomain.ldif, 这里我自定义的域名为 ynznhb.com,管理员用户账号为admin。

# 如果要修改,则修改文件中相应的dc=ynznhb,dc=com为自己的域名,创建nano changedomain.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=ynznhb,dc=com" read by * none

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

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

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}uKAWr4vmUixz5yMINosSNnQ1lFQj/+e8

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=ynznhb,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=ynznhb,dc=com" write by * read

这里一定要注意,空行中不能有空格,冒号之间有一个空格,否则会出现错误。如果真的出现错误,可以每一个配置段写进文档后单个执行。

ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif

最后这里有5个修改,所以执行会输出5行表示成功。

20190426161145765.png

然后,启用memberof功能,新增nano add-memberof.ldif文件,开启memberof支持并新增用户支持memberof配置

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

# 新增refint1.ldif文件

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

新增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

# 依次执行下面命令,加载配置,顺序不能错

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add-memberof.ldif
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif

到此,配置修改完了,在上述基础上,我们来创建一个叫做 ynznhb company 的组织,并在其下创建一个 admin 的组织角色(该组织角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元:

dn: dc=ynznhb,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: ynznhb Company
dc: ynznhb

dn: cn=admin,dc=ynznhb,dc=com
objectClass: organizationalRole
cn: admin

dn: ou=People,dc=ynznhb,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=ynznhb,dc=com
objectClass: organizationalRole
cn: Group

# 执行命令,添加配置, 这里要注意修改域名为自己配置的域名,然后需要输入上面我们生成的密码,同样要注意每个配置段的空格。

ldapadd -x -D cn=admin,dc=ynznhb,dc=com -W -f base.ldif

20190426162554854.png

通过以上的所有步骤,我们就设置好了一个 LDAP 目录树:其中基准 dc=ynznhb,dc=com 是该树的根节点,其下有一个管理域 cn=admin,dc=ynznhb,dc=com 和两个组织单元 ou=People,dc=ynznhb,dc=com 及 ou=Group,dc=ynznhb,dc=com。

三、搭建ldap account manager 管理Openldap服务

我这里的网络,开源代码库sourceforge无法打开,没办法只能翻墙下载源码,我使用的是lam 6.7这个最新的版本,将源码上传到/usr/local/src/目录下,执行如下命令:

# cd /usr/local/src/
# tar jxf ldap-account-manager-6.7.tar.bz2 //若无法解包,则安装bzip2解包工具,若正常忽略下一步
# yum install bzip2
# mv ldap-account-manager-6.7 /var/www/html/ldap
# cd /var/www/html/ldap/config
# cp config.cfg.sample config.cfg
# cp unix.conf.sample lam.conf

这里的config.cfg和lam.conf两个配置文件需要修改其中的参数

# sed -i "s/dc=my-domain,dc=com/dc=ynznhb,dc=com/g" lam.conf
# sed -i "s/cn=Manager/cn=admin/g" lam.conf 
# sed -i "s/dc=yourdomain,dc=org/dc=ynznhb,dc=com/g" lam.conf

修改执行目录用户权限

# chown -R www.www /var/www/html/ldap/

由于Nginx前边我们配置过PowerDNS,放在同级目录下,所以这里不需要修改设置,重启并重新载入配置文件即可:

systemctl restart nginx
nginx -s reload

在浏览器输入http://主机Ip地址/ldap/即可正常访问。

lam.png

到这里OpenLDAP和LDAP Account Manager的配置就完成了,下一节重点介绍LDAP Account Manager的使用方法。

我们致力于为三农(农业、农村、农民)提供专业物联网解决方案,同时也提供应用软件、微信小程序、手机App、企业网站的开发和跨境电商建站、网络营销等服务,站长微信号(mywit_net),添加后备注“黎辉物联网”,如有相关需求也可通过电子邮件(12tc@sina.cn)与我们取得联系

本站内容均来自互联网,如有涉及到侵权行为,请你及时与站长联系删除!

本文链接:https://kumb.cn/38.html

发表评论

评论列表(0人评论 , 1148人围观)
☹还没有评论,来说两句吧...