Linux-OpenLDAP服务集中管理用户账户信息

目的:使用OpenLDAP目录服务管理用户账户信息,实现快速查询、更改、删除用户信息。

意义:在一台ldap服务器上进行账号的集中管理,在ldap客户端上使用这些账号,而无需再管理账户。

OpenLDAP目录服务

1、目录数据库:主要用于存储较小的信息【多查少改的信息】,同时具有很好的读性能,但在写性能方面比较差,所以不适合存放那些需要经常修改的数据。
2、目录服务是由目录数据库一套能够访问和处理数据库信息的协议组成的服务协议,用于集中的管理主机帐号密码,员工名字等数据,大大的提升了管理工作效率。
3、轻量级目录访问协议LDAP(Lightweight Directory Access Protocol)是在目录访问协议X.500的基础上研发的。
4、LDAP采用树状结构存储数据,条目是LDAP协议中最基本的元素。
5、树状结构目录,从上到下,层层递进,直到找到相应的条目【类似数据库中的记录】
6、dc根节点、ou子树、cn叶子节点、dn条目路径【自下往上,条目的唯一标识符】
7、OpenLdap是基于LDAP协议的开源程序,它的程序名称叫做slapd
yum install -y openldap openldap-clients openldap-servers migrationtools

部署OpenLDAP服务端

①配置LDAP服务端IP:192.168.10.10
在这里插入图片描述
②安装openldap服务相关的软件包,生成密钥文件,将主机与IP地址的解析记录写入/etc/hosts文件中。
yum install -y openldap openldap-servers openldap-clients migrationtools
在这里插入图片描述
在这里插入图片描述
slappasswd -s abong -n > /etc/openldap/passwd
密钥:{SSHA}Dxx/kRKeCx98w6Srxz9IIi10bxSTLdt/
在这里插入图片描述
echo "192.168.10.10 linuxfwd" >> /etc/hosts
在这里插入图片描述
③在LDAP目录服务中采用TLS加密机制传输数据,使用openssl工具生成x509格式的证书文件,有效期为365天。 【-out cert.pem -keyout priv.pem
openssl req -new -x509 -nodes -out /etc/openldap/certs/cert.pem -keyout /etc/openldap/certs/priv.pem -days 365
在这里插入图片描述
④证书存放在目录/etc/openldap/certs/下,将所有者和所属组改为ldap,并将priv.pem的权限设置为600
在这里插入图片描述
⑤复制一份LDAP数据库模板存放到/var/lib/ldap/目录下,改名为DB_CONFIG,LDAP数据库模板路径为/usr/share/openldap-servers/DB_CONFIG.example。然后使用命令slaptest/var/lib/ldap目录下生成数据库文件,最后修改LDAP数据库的属主和属组。
在这里插入图片描述
⑥重启slapd服务,并添加到开机自启中,可以看到slapd服务已经正常开启。
在这里插入图片描述
⑦LDAP服务中使用LDIF(LDAP Interchange Format)格式来保存条目。LDIF是一种标准的文本文件,可随意的导出导入。LDIF格式的数据条目是在schema数据模型的基础上创建出来的。类似对象与类之间的关系。【条目数据保存在.ldif文件中】【模板文件保存在.schema文件中】

#该目录下存放着类及其对象
[root@linuxfwd ~]# cd /etc/openldap/schema/
[root@linuxfwd schema]# ls
collective.ldif    cosine.schema         java.ldif      openldap.schema
collective.schema  duaconf.ldif          java.schema    pmi.ldif
corba.ldif         duaconf.schema        misc.ldif      pmi.schema
corba.schema       dyngroup.ldif         misc.schema    ppolicy.ldif
core.ldif          dyngroup.schema       nis.ldif       ppolicy.schema
core.schema        inetorgperson.ldif    nis.schema
cosine.ldif        inetorgperson.schema  openldap.ldif
[root@linuxfwd schema]# 

添加cosinenis模块到slapd服务程序中
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f nis.ldif
在这里插入图片描述
创建/etc/openldap/changes.ldif文件,并复制以下内容进去

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

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

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

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/cert.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/priv.pem

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: -1

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=abong,dc=com" read by * none

将新的配置文件/etc/openldap/changes.ldif更新到slapd服务程序中
ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/changes.ldif
在这里插入图片描述
创建/etc/openldap/base.ldif文件,并复制以下内容进去

dn: dc=abong,dc=com
dc: abong
objectClass: top
objectClass: domain

dn: ou=People,dc=abong,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=abong,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

将新的配置文件/etc/openldap/base.ldif添加到slapd服务程序中
ldapadd -x -w abong -D cn=Manager,dc=abong,dc=com -f /etc/openldap/base.ldif
在这里插入图片描述
⑧创建用户ldapuser,用于测试。设置账户的迁移。将当前系统的用户和用户组迁移到目录服务中【用户迁移到passwd文件中、使用passwd文件生成ldif文件、将ldif文件添加到slapd服务程序中】【用户组迁移到group文件中、使用group文件生成ldif文件、将ldif文件添加到slapd服务程序中】
useradd -d /home/ldap ldapuser
修改文件/usr/share/migrationtools/migrate_common.ph,如下:
在这里插入图片描述
迁移用户,并生成user.ldif文件,将user.ldif文件添加到slapd服务程序中
在这里插入图片描述
在这里插入图片描述
迁移用户组,并生成group.ldif文件,将group.ldif文件添加到slapd服务程序中
在这里插入图片描述
⑨测试用户ldapuser的配置文件是否正常,可以看到,用户ldapuser的条目数据是存在的。

[root@linuxfwd ~]# ldapsearch -x cn=ldapuser -b dc=abong,dc=com
# extended LDIF
#
# LDAPv3
# base <dc=abong,dc=com> with scope subtree
# filter: cn=ldapuser
# requesting: ALL
#

# ldapuser, People, abong.com
dn: uid=ldapuser,ou=People,dc=abong,dc=com
uid: ldapuser
cn: ldapuser
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSEh
shadowLastChange: 18358
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/ldap

# ldapuser, Group, abong.com
dn: cn=ldapuser,ou=Group,dc=abong,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapuser
userPassword:: e2NyeXB0fXg=
gidNumber: 1001

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2
[root@linuxfwd ~]# 

⑩安装httpd服务程序,将密钥文件/etc/openldap/certs/cert.pem复制到/var/www/html。然后重启httpd服务,并添加到开机自启中。然后清空防火墙并保存当前防火墙。最后,修改rsyslog服务的配置文件,追加echo "local4.* /var/log/ldap.log" >> /etc/rsyslog.conf,重启rsyslog服务。
在这里插入图片描述

部署OpenLDAP客户端

①将服务器的IP地址和主机名的解析记录写入到客户端的/etc/hosts文件中
在这里插入图片描述
②安装客户端的相关软件包
yum install -y openldap-clients nss-pam-ldapd authconfig-gtk pam_krb5
在这里插入图片描述
③运行系统认证工具,并填写LDAP服务信息
system-config-authentication
服务器主机名:
linuxfwd

证书URL(u):
http://192.168.10.10/cert.pem
http://linuxfwd/cert.pem
在这里插入图片描述
我这里是已经挂载了家目录,如果没挂载的可使用NFS进行挂载。

自动挂载用户的家目录

在客户端进行LDAP验证后,从客户端登录用户ldapuser时,是无法同步用户家目录的,即在客户端并不存在用户ldapuser的家目录。可以使用NFS(网络文件系统)将家目录自动挂载在客户端上。【即将服务器上的家目录作为一个共享资源,挂载在客户端】
①在ldap服务器上安装nfs-utils服务程序
yum install -y nfs-utils
②修改NFS的主配置文件/etc/exports
echo "/home/ldap 192.168.10.*(rw,sync,root_squash)" >> /etc/exports
③重启rpcbindnfs-server服务程序,并添加到开机自启中
在这里插入图片描述
④清空防火墙,并保存当前防火墙策略
在这里插入图片描述
⑤在客户端查看共享信息
showmount -e 192.168.10.10
在这里插入图片描述
⑥将家目录/home/ldap作为一个nfs文件系统挂载到客户端
在这里插入图片描述
⑦将挂载信息写入文件/etc/fstab,以实现永久挂载。
echo "192.168.10.10:/home/ldap /home/ldap nfs defaults 0 0" >> /etc/fstab

通过以上配置,我们可以在LDAP服务器上集中管理账户信息,无需在客户端上管理账户,提高了客户端的使用效能。

猜你喜欢

转载自blog.csdn.net/weixin_36522099/article/details/105325474