一、概念介绍

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,简称为LDAP。LDAP的目录服务其实也是一种数据库系统(Berkeley DB),只是这种数据库是一种树形结构(B Tree),适合读不适合频繁写,不支持事务不能回滚。

我们用LDAP实现多个组件的用户管理,比如把gitlab和jenkins、harbor等组件的用户放在LDAP一起管理,组件只负责权限管理。用户在这些组件登录时都走LDAP的认证,让用户可以用一套用户名密码即可登录所有组件。

LDAP的树形结构的概念理解

从叶子到根的这条“路径”是一条数据,称为条目(Entry),这条数据的全局唯一标识叫做dn

  • dc(Domain Component)是域名的一部分,把完整的域名拆开。
  • ou(Organization Unit)是组织单元。
  • cn(Common Name)一般是用户的名字。
  • uid(User Id)一般是用户登录id。

简单理解就是:dn是 一条记录的详细位置; dc是一个区域(相当于哪颗树);ou是一个组织(相当于哪一个分支);cn/uid(分支上的哪个苹果)。

二、安装ldap服务端

  1. 安装服务端
yum install -y openldap openldap-clients openldap-servers migrationtools

alt

  1. 配置ldap服务器
vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif

alt

olcSuffix: dc=dzf,dc=com
olcRootDN: cn=auto,dc=dzf,dc=com
olcRootPW: 123456
  1. 配置监视数据库的配置文件
vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif

alt

cn=auto,dc=dzf,dc=com
  1. 配置ldap数据库 将/usr/share/openldap-servers/DB_CONFIG.example的文件复制到/var/lib/ldap/DB_CONFIG目录下,并给文件授权ldap属主属组
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap.ldap /var/lib/ldap/
  1. 检测配置是否正确
slaptest -u
  • 输入命令出现succeeded表示验证成功 alt
  1. 启动ldap,并设置开机自启
systemctl start slapd

systemctl enable slapd

#检测服务及端口
ss -antup | egrep "389|636"

alt

  1. 启动ldap服务器的配置,需添加以下ldap模式
ls /etc/openldap/schema/*.ldif | xargs -I {} sudo ldapadd -Y EXTERNAL -H ldapi:/// -f {}

alt

  1. 创建ldap DIT
vim /usr/share/migrationtools/migrate_common.ph
修改61行  $NAMINGCONTEXT{'group'} = "ou=Groups";

修改71行  $DEFAULT_MAIL_DOMAIN = "dzf.com";

修改74行  $DEFAULT_BASE = "dc=dzf,dc=com";

修改90行  $EXTENDED_SCHEMA = 1;

alt

  1. 生成一个基地,ldif文件为域的DIT
  • 切换到migrationtools目录下执行 ./migrate_base.pl > /root/base.ldif
cd /usr/share/migrationtools/
./migrate_base.pl > /root/base.ldif

alt

  1. 将基地上传到ldap数据库中
ldapadd -x -W -D "cn=auto,dc=dzf,dc=com" -f /root/base.ldif

alt

  1. 创建一些用户和组,并迁移到ldap
mkdir -p /home/guests
useradd -d /home/guests/test12 test12
echo 123456 | passwd --stdin test12

alt

  • 过滤这些用户和组以及/etc/shadow不同文件密码
getent passwd | tail -n 5
getent shadow | tail -n 5 > /root/shadow
getent group | tail -n 5 > /root/groups
  1. 使用migrationtools为这些用户创建ldif文件

切换到migrationtools目录下编辑vim migrate_passwd.pl文件

cd /usr/share/migrationtools
vim migrate_passwd.pl

修改188行,把/etc/shadow换成/root/shadow

alt

  • 然后在当前路径下执行下面的命令
./migrate_passwd.pl /root/users > users.ldif
./migrate_group.pl /root/groups > groups.ldif
  1. 将这些用户和组ldif文件上传到ldap数据库中
ldapadd -x -W -D "cn=auto,dc=dzf,dc=com" -f users.ldif
ldapadd -x -W -D "cn=auto,dc=dzf,dc=com" -f groups.ldif

alt

  1. 现在搜索LDAP DIT的所有记录(如果能搜索到就说明安装成功了,至此ldap服务器安装完成(按这个安装只支持uid用户的登录))
ldapsearch -x -b "dc=dzf,dc=com" -H ldap://localhost

alt

  1. 开放端口

Linux开放端口

三、电脑端安装客户端

  1. ldapadmin官网下载地址 alt

  2. 电脑端下载完成后,点击进入填写ldap服务器地址 alt alt alt alt

  3. 创建用户组或用户

在ou=People下去创建用户组或用户(右击--new--Group或User)

alt alt alt

  1. 设置密码

给用户设置密码(右击--Set Password) alt

  1. 登录到ldap服务器去查看信息,就可以看到增加的一条信息如图
ldapsearch -x -b "dc=dzf,dc=com" -H ldap://localhost

alt

  • 这里的信息就是通过ldapadmin客户端添加进来的,到此全部部署完成

开启ssl

  • 如果要开启ssl要修改配置文件,要增加ldaps:///
vi  /etc/sysconfig/slapd
SLAPD_URLS="ldapi:///  ldap:///  ldaps:///"

alt

  • 再重启服务:
systemctl restart slapd.service