CentOS 8.5安装和配置OpenLDAP
- 系统运维
- 2024-05-24
- 216热度
- 0评论
本文讲述如何安装及配置OpenLDAP服务端和OpenLDAP客户端,并使用TLS加密协议部署。
一、环境信息
Hostname | IP | OS |
---|---|---|
Server | 192.168.232.135 | CentOS 8.5 |
Client | 192.168.232.134 | CentOS 8.5 |
二、配置hosts文件
下面是在服务端修改的/etc/hosts配置文件,将两台机器的主机名对应IP添加进去。
image.png下面是在客户端修改的/etc/hosts配置文件,将两台机器的主机名对应IP添加进去。
三、服务端和客户端安装程序
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文件内。
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
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
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
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
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"
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
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
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'
可以看到已经添加密码了
六、安装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认证程序:
4. 获取证书文件
从服务器端获取证书文件:
[root@client \~]# wget -O /etc/openldap/certs/cert.pem \ http://Server.ldap.com/cert.pem
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
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
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
转载申明
转载请注明出处:365文档