本文讲述如何安装及配置OpenLDAP服务端和OpenLDAP客户端,并使用TLS加密协议部署。

一、环境信息

HostnameIPOS
Server192.168.232.135CentOS 8.5
Client192.168.232.134CentOS 8.5

二、配置hosts文件

下面是在服务端修改的/etc/hosts配置文件,将两台机器的主机名对应IP添加进去。

image.png

下面是在客户端修改的/etc/hosts配置文件,将两台机器的主机名对应IP添加进去。

image.png

三、服务端和客户端安装程序

CentOS8的软件源中没有openldap相关的程序包,所以需要下载官方源,并进行安装。

下面在Server端安装程序包:

[root@server \~]# wget -q https://repo.symas.com/configs/SOFL/rhel8/sofl.repo -O /etc/yum.repos.d/sofl.repo

[root@server \~]# yum -y install openldap openldap-servers openldap-clients

下面在Client端安装程序包:

[root@client \~]# wget -q https://repo.symas.com/configs/SOFL/rhel8/sofl.repo -O /etc/yum.repos.d/sofl.repo

[root@client \~]# yum -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir

四、配置LDAP服务端

1. 生成密码文件

生成密码,密码为123456,密码文件保存在/etc/openldap/passwd文件内。

image.png

2. 为LDAP生成密钥证书

[root@server \~]# openssl req -new -x509 -nodes -out /etc/openldap/certs/cert.pem -keyout

image.png

下面修改证书的权限:

[root@server \~]# cd /etc/openldap/certs/

[root@server certs]# chown ldap: *

[root@server certs]# chmod 600 priv.pem

image.png

3. 生成一份数据库文件

从/usr/share/openldap-servers/目录复制一份数据库文件到/var/lib/ldap目录中

[root@server \~]# cp /usr/share/openldap-servers/DB\_CONFIG.example /var/lib/ldap/DB\_CONFIG

修改数据库文件的owner和group:

[root@server \~]# chown ldap:ldap /var/lib/ldap/DB\_CONFIG

4. 启用slapd服务,并设置开机启动

[root@server \~]# systemctl enable slapd

Created symlink /etc/systemd/system/openldap.service → /usr/lib/systemd/system/slapd.service.

Created symlink /etc/systemd/system/multi-user.target.wants/slapd.service → /usr/lib/systemd/system/slapd.service.

[root@server \~]# systemctl start slapd

五、创建ldif文件并导入ldap数据库中

1. 添加schema相关ldif数据文件

向数据库中添加/etc/openldap/schema目录下面的ldif文件

[root@server \~]# for i in \`ls -1 /etc/openldap/schema/*.ldif\`; do ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f $i; done

SASL/EXTERNAL authentication

image.png

2. 创建changes.ldif文件。

创建changes.ldif文件,内容包括修改域名、修改root用户名、修改root密码、修改公钥、修改私钥等内容。

下面首先复制之前创建的密钥:

[root@server ldap]# cd /etc/openldap/

[root@server openldap]# cat passwd

{SSHA}BDRhlkTa4KP9UKm1QH/QwvI7y5H3BdmA

创建changes.ldif文件,并将下面内容复制粘贴(注意:复制下面内容时请将#井号和后面你的文字删掉):

[root@server openldap]# vim changes.ldif

dn: olcDatabase={2}mdb,cn=config

changetype: modify

replace: olcSuffix

olcSuffix: dc=ldap,dc=com #改成自己的域名

dn: olcDatabase={2}mdb,cn=config

changetype: modify

replace: olcRootDN

olcRootDN: cn=Manager,dc=ldap,dc=com #Manager是将修改成的名称

dn: olcDatabase={2}mdb,cn=config

changetype: modify

replace: olcRootPW

olcRootPW: {SSHA}BDRhlkTa4KP9UKm1QH/QwvI7y5H3BdmA #root的密码

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

3. 将changes.ldif文件导入数据库

下面使用ldapmodify命令修改数据库中的内容:

[root@server openldap]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/changes.ldif

image.png

4. 创建base.ldif文件

下面创建base.ldif文件,添加域,添加People和Group两个组织单元,将下面内容添加进去。

[root@server \~]# cd /etc/openldap/

[root@server openldap]# vim base.ldif

dn: dc=ldap,dc=com

dc: ldap

objectClass: top

objectClass: domain

dn: ou=People,dc=ldap,dc=com

ou: People

objectClass: top

objectClass: organizationalUnit

dn: ou=Group,dc=ldap,dc=com

ou: Group

objectClass: top

objectClass: organizationalUnit

image.png

5. 将base.ldif导入数据库

下面使用ldapadd命令将base.ldif文件导入数据库:

[root@server \~]# ldapadd -x -w 123456 -D cn=Manager,dc=ldap,dc=com -f /etc/openldap/base.ldif

adding new entry "dc=ldap,dc=com"

adding new entry "ou=People,dc=ldap,dc=com"

adding new entry "ou=Group,dc=ldap,dc=com"

image.png

6. 创建域用户和域用户组

下面创建users.ldif文件,将下面内容添加进去,用来创建用户和用户组:

[root@server \~]# cd /etc/openldap/

[root@server openldap]# vim users.ldif

dn: cn=user01,ou=Group,dc=ldap,dc=com

objectClass: posixGroup

cn: user01

gidNumber: 10001

memberUid: user01

dn: uid=user01,ou=People,dc=ldap,dc=com

objectClass: posixAccount

objectClass: shadowAccount

objectClass: inetOrgPerson

cn: bob

sn: pang

uid: user01

uidNumber: 10001

gidNumber: 10001

homeDirectory: /home/user01

loginShell: /bin/bash

gecos: Bob Pang

image.png

7. 将users.ldif导入数据库

[root@server \~]# ldapadd -x -w 123456 -D cn=Manager,dc=ldap,dc=com -f /etc/openldap/users.ldif

adding new entry "cn=user01,ou=Group,dc=ldap,dc=com"

adding new entry "uid=user01,ou=People,dc=ldap,dc=com"

使用ldapsearch命令查看是否已添加user01:

[root@server \~]# ldapsearch -x uid=user01 -b dc=ldap,dc=com

image.png

8. 如何为用户添加密码:

[root@manage\_node \~]# ldappasswd -x -w 123456 -D 'cn=Manager,dc=ldap,dc=com' -h server.ldap.com -s 123456 'uid=user01,ou=People,dc=ldap,dc=com'

可以看到已经添加密码了

image.png

六、安装httpd服务

安装httpd服务,为了使客户端获取到cert.pem公钥。

[root@server \~]# yum -y install httpd

[root@server \~]# systemctl enable httpd --now

Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

将证书文件复制到/var/www/html目录中:

[root@server \~]# cp -p /etc/openldap/certs/cert.pem /var/www/html/

七、 配置客户端

CentOS 8已经不再使用authconfig , authconfig-gtk , authconfig-tui来连接目录服务器了,系统自带authselect工具。

1. 使用authselect工具查看由哪个程序提更认证:

[root@client \~]# authselect current

No existing configuration detected.

发下没有检测到配置

2. 查看authselect提供的认证程序:

[root@client \~]# authselect list

- minimal Local users only for minimal installations

- nis Enable NIS for system authentication

- sssd Enable SSSD for system authentication (also for local users only)

- winbind Enable winbind for system authentication

3. 使用authselect切换为sssd认证程序:

image.png

4. 获取证书文件

从服务器端获取证书文件:

[root@client \~]# wget -O /etc/openldap/certs/cert.pem \ http://Server.ldap.com/cert.pem

image.png

5. 修改ldap.conf配置文件

打开/etc/openldap/ldap.conf配置文件并修改:

[root@client \~]# vim /etc/openldap/ldap.conf

修改以下面几条内容即可,有注释的去掉注释

BASE dc=ldap,dc=com #指定域名

URI ldap://Server.ldap.com # 指定ldap服务器地址

TLS\_CACERT /etc/openldap/certs/cert.pem #指定证书文件

SASL\_NOCANON on

image.png

6. 修改sssd.conf配置文件

创建/etc/sssd/sssd.conf配置文件,并添加下面的内容

[root@client \~]# cd /etc/sssd/

[root@client sssd]# vim sssd.conf

[domain/default]

id\_provider = ldap

autofs\_provider = ldap

auth\_provider = ldap

chpass\_provider = ldap

ldap\_uri = ldap://Server.ldap.com

ldap\_search\_base = dc=ldap,dc=com

ldap\_id\_use\_start\_tls = True

cache\_credentials = True

ldap\_tls\_cacertdir = /etc/openldap/certs

ldap\_tls\_cacert = /etc/openldap/certs/cert.pem

ldap\_tls\_reqcert = allow

[sssd]

services = nss, pam, autofs

domains = default

[nss]

homedir\_substring = /home

image.png

7. 修改sssd.conf配置文件的权限

[root@client \~]# chmod 600 /etc/sssd/sssd.conf

8. 重启sssd和oddjobd服务

[root@client \~]# systemctl enable sssd oddjobd

Created symlink /etc/systemd/system/multi-user.target.wants/oddjobd.service → /usr/lib/systemd/system/oddjobd.service.

[root@client \~]# systemctl restart sssd oddjobd

9. 测试以下用户登录

可以看到下面可以切换到ldap用户了。

[root@client \~]# id user01

uid=10001(user01) gid=10001(user01) groups=10001(user01)

[root@client \~]# su - user01

Last login: Sat Jul 2 11:30:10 EDT 2022 on pts/0

image.png

转载申明

转载请注明出处:365文档

本文二维码
最后修改:2023 年 10 月 23 日
如果觉得我的文章对你有用,请随意赞赏