<
LDAP简单配置
>
上一篇

zabbix监控流程
下一篇

nginx二级目录跳转和LDAP认证

LDAP安装与配置

介绍

LDAP 轻型目录访问协议(英文:Lightweight Directory Access Protocol)

是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。OpenLDAP是轻型目录访问协议(Lightweight Directory Access ProtocolLDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。

LDAP可以在不用的程序间公用同一套账号密码,市面上大多数工具软件,都支持LDAP协议。LDAP协议的好处就是你公司的所有员工在所有这些工具里共享同一套用户名和密码,来人的时候新增一个用户就能自动访问所有系统,走人的时候一键删除就取消了他对所有系统的访问权限,这就是LDAP

程序安装

1.基本环境

系统: centos 7.4

OpenLDAP: 2.4.40

LAM: 6.5

php: 7.2

2.安装OpenLDAP

yum install -y openldap openldap-clients openldap-servers
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG
#安装完直接启动
systemctl restart slapd.service
systemctl enable slapd.service

#更改启动端口
/usr/sbin/slapd -h ldap://0.0.0.0:3899

3.配置OpenLDAP

3.1基础配置说明

每一个系统、协议都会有属于自己的模型,LDAP也不例外,在了解LDAP的基本模型之前我们需要先了解几个LDAP的目录树概念:

3.1.1目录树
  1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
  2. 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
  3. 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
  4. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。
3.1.2字段释义

DC: 域名 整个根目录范围长常见的配置为 dc=blog-wuchen,dc=cn 表示域名(blog-wuchen.cn)

UID: 用户名 实际账户的名称

OU: 组织名 表示该项目属于什么组织

CN: 公共名称 一条记录的名称如组名等

DN: 一条记录的位置 (如 uid=邬晨,CN=运维组,dc=blog-wuchen,dc=com)

3.2配置

#请看好这个目录下的文件 来与你的配置文件所匹配
ls /etc/openldap/slapd.d/cn=config/

1543647160650

3.2.1 配置管理员密码

使用命令生成密码 slappasswd -s 密码

成功后返回一个加密密码 如:

[root@ldap ~]# slappasswd -s 000000
{SSHA}mFr8JZsWe5Xsl29rXWr++gqtqWU7fV8G

配置OpenLDAP最正确的姿势是通过ldapmodify命令执行一系列自己写好的ldif文件

vim chrootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}mFr8JZsWe5Xsl29rXWr++gqtqWU7fV8G
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif  #出现下图 代表执行成功

1543647661126

3.2.2 导入基础设置
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

1543648587423

3.2.3 在数据库中设置域名(我这里设置成一样的了,你们随意~)
[root@ldap ~]# slappasswd -s 000000
{SSHA}TkgVQ3o7cGmZdWeB2L3gW/VuVr0MczVJ
vim chdomain.ldif  
#替换dc为你的域名与刚刚生成的密码
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=blog-wuchen,dc=cn" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=blog-wuchen,dc=cn

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=blog-wuchen,dc=cn

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

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

#执行
ldapadd -Y EXTERNAL -H ldapi:/// -f chdomain.ldif

1543650168280

设置域

vim basedomain.ldif
#修改dc为你的域名
dn: dc=blog-wuchen,dc=cn
objectClass: top
objectClass: dcObject
objectclass: organization
o: Server World
dc: blog-wuchen

dn: cn=Manager,dc=blog-wuchen,dc=cn
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=blog-wuchen,dc=cn
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=blog-wuchen,dc=cn
objectClass: organizationalUnit
ou: Group
ldapadd -x -D cn=Manager,dc=blog-wuchen,dc=cn -W -f basedomain.ldif
Enter LDAP Password:               #输入你的域密码

1543650539943

3.3 添加测试用户

[root@ldap ~]# slappasswd -s ceshi
{SSHA}1NOPOXcZu5sy5z5gRt5aei2G/6BtLk80
vim ldapuser.ldif
#替换你的域名
dn: uid=test,ou=People,dc=blog-wuchen,dc=cn
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Test
sn: Linux
userPassword: {SSHA}1NOPOXcZu5sy5z5gRt5aei2G/6BtLk80
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/test

dn: cn=test,ou=Group,dc=blog-wuchen,dc=cn
objectClass: posixGroup
cn: Test
gidNumber: 1000
memberUid: test
ldapadd -x -D cn=Manager,dc=blog-wuchen,dc=cn -W -f ldapuser.ldif
Enter LDAP Password:                   #输入域密码

1543650980450

4. 配置LAM

虽然都很丑 但是phpldapadmin 真的是上古产物了

LAM下载地址:https://sourceforge.net/projects/lam/files/LAM/

wget https://nchc.dl.sourceforge.net/project/lam/LAM/6.5/ldap-account-manager-6.5.tar.bz2
tar -xf ldap-account-manager-6.5.tar.bz2
cd ldap-account-manager-6.5
cp config/config.cfg.sample config/config.cfg
cp -r * /data/wwwroot/default/            #复制到你的web服务器路径下
chown www:www /data/wwwroot/default/ -R

然后浏览器访问主机的IP 发现php缺少ldap的扩展,我们来装一下

tar -xf php-7.2.12.tar.gz
cd php-7.2.12/ext/ldap/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap
# 然后出现了第一个报错 configure: error: Cannot find ldap.h
yum install openldap openldap-devel  -y
# 然后出现了第二个报错
cp -frp /usr/lib64/libldap* /usr/lib/
make && make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/                         #会有这么一个提示

cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
cp ldap.so /usr/local/php/lib/php/extensions/
vim /usr/local/php/etc/php.ini
#添加ldap扩展
extension=ldap.so

#重启php

然后浏览器访问ip,得到这么个界面,然后进行配置 默认主密码是lam

1543652916015

1543653522583

1543653534464

1543653643572

然后点增加会让你输入默认的密码 lam 然后会跳转到配置ldap服务器

哈 注意一下account types

1543653242352

1543657285935

然后自己玩吧 这个东西也好看不到哪去

舒舒服服的一天又过去了~

Top
Foot