丑
LDAP 轻型目录访问协议(英文:Lightweight Directory Access Protocol)
是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。OpenLDAP
是轻型目录访问协议(Lightweight Directory Access Protocol
,LDAP
)的自由和开源的实现,在其OpenLDAP
许可证下发行,并已经被包含在众多流行的Linux
发行版中。
LDAP可以在不用的程序间公用同一套账号密码,市面上大多数工具软件,都支持LDAP
协议。LDAP
协议的好处就是你公司的所有员工在所有这些工具里共享同一套用户名和密码,来人的时候新增一个用户就能自动访问所有系统,走人的时候一键删除就取消了他对所有系统的访问权限,这就是LDAP
。
系统: centos 7.4
OpenLDAP: 2.4.40
LAM: 6.5
php: 7.2
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
每一个系统、协议都会有属于自己的模型,LDAP也不例外,在了解LDAP的基本模型之前我们需要先了解几个LDAP的目录树概念:
DC: 域名 整个根目录范围长常见的配置为 dc=blog-wuchen,dc=cn 表示域名(blog-wuchen.cn)
UID: 用户名 实际账户的名称
OU: 组织名 表示该项目属于什么组织
CN: 公共名称 一条记录的名称如组名等
DN: 一条记录的位置 (如 uid=邬晨,CN=运维组,dc=blog-wuchen,dc=com)
#请看好这个目录下的文件 来与你的配置文件所匹配
ls /etc/openldap/slapd.d/cn=config/
使用命令生成密码 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 #出现下图 代表执行成功
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
[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
设置域
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: #输入你的域密码
[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: #输入域密码
虽然都很丑 但是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
然后点增加会让你输入默认的密码 lam 然后会跳转到配置ldap服务器
哈 注意一下account types呀
然后自己玩吧 这个东西也好看不到哪去
舒舒服服的一天又过去了~