更新时间:2023-01-24 09:53:03浏览次数:351+次
本文将学习如何在Rocky Linux 8/AlmaLinux 8上配置OpenLDAP客户端,并启用身份验证和共享有关多个网络资源的信息。
开始之前
对于本文,我假设您已经设置了OpenLDAP服务器。如果还没有,您可以使用以下指南安装和配置OpenLDAP:
在Rocky Linux 8/AlmaLinux 8上安装和配置OpenLDAP服务器:https://www.hmxthome.com/linux/4954.html
安装完成后,设置主机名:
sudo hostnamectl set-hostname ldapclient.computingforgeeks.com
现在更新/etc/hosts文件,如下所示:
$ sudo vim /etc/hosts
##OpenLDAP服务器
192.168.205.2 ldapmaster.computingforgeeks.com
##OpenLDAP客户端
192.168.205.16 ldapclient.computingforgeeks.com
对于这种情况,我的OpenLDAP服务器以域名“ldapmaster.computingforgeeks.com”运行。
验证服务器是否可访问:
$ sudo ping -c3 ldapmaster.computingforgeeks.com
PING ldapmaster.computingforgeeks.com (192.168.205.2) 56(84) bytes of data.
64 bytes from ldapmaster.computingforgeeks.com (192.168.205.2): icmp_seq=1 ttl=64 time=0.362 ms
64 bytes from ldapmaster.computingforgeeks.com (192.168.205.2): icmp_seq=2 ttl=64 time=0.295 ms
64 bytes from ldapmaster.computingforgeeks.com (192.168.205.2): icmp_seq=3 ttl=64 time=0.265 ms
--- ldapmaster.computingforgeeks.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2030ms
rtt min/avg/max/mdev = 0.265/0.307/0.362/0.043 ms
配置OpenLDAP客户端的方法
步骤1、安装OpenLDAP客户端和SSSD包
配置了FQDN和主机文件后,我们将在Rocky Linux 8/AlmaLinux 8上安装OpenLDAP客户端和SSSD包。SSSD包(System Security Service Daemon)用于将Linux系统注册到目录服务,如Active directory IPA服务器和LDAP域。
要安装所有必需的软件包,请发出以下命令:
sudo dnf install openldap-clients sssd sssd-ldap oddjob-mkhomedir libsss_sudo
依赖关系树:
Install 1 Package
Upgrade 16 Packages
Total download size: 4.6 M
Is this ok [y/N]: y
安装后,您需要将身份验证配置文件更改为SSSD。列出可用的配置文件:
$ 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
现在切换到SSSD配置文件:
$ sudo authselect select sssd with-mkhomedir --force
Backup stored at /var/lib/authselect/backups/2023-01-23-18-22-35.bE7tCJ
Profile "sssd" was selected.
The following nsswitch maps are overwritten by the profile:
- passwd
- group
- netgroup
- automount
- services
Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.
- with-mkhomedir is selected, make sure pam_oddjob_mkhomedir module
is present and oddjobd service is enabled and active
- systemctl enable --now oddjobd.service
之后,启动并启用oddjobd服务:
sudo systemctl enable --now oddjobd.service
验证服务是否正在运行:
$ systemctl status oddjobd.service
步骤2、配置OpenLDAP客户端和SSSD服务
安装后,您可以配置OpenLDAP客户端和SSSD服务。我们将首先配置OpenLDAP客户端:
sudo vim /etc/openldap/ldap.conf
在文件中,按配置定义OpenLDAP服务器和基本搜索域名:
URI ldap://ldapmaster.computingforgeeks.com
BASE dc=computingforgeeks,dc=com
SUDOERS_BASE ou=sudo,dc=computingforgeeks,dc=com
最后一行是我们将在本文稍后创建的SUDO访问。保存文件并配置SSSD服务:
sudo vim /etc/sssd/sssd.conf
添加以下文件并适当替换“ldap_uri”、“ldap_search_base”和“sudoers_base”:
[domain/default]
id_provider = ldap
autofs_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://ldapmaster.computingforgeeks.com
ldap_search_base = dc=computingforgeeks,dc=com
sudoers_base ou=sudo,dc=computingforgeeks,dc=com
sudo_provider = ldap
ldap_id_use_start_tls = True
ldap_tls_cacertdir = /etc/openldap/certs
cache_credentials = True
ldap_tls_reqcert = allow
[sssd]
services = nss, pam, autofs, sudo
domains = default
[nss]
homedir_substring = /home
[sudo]
保存文件并设置所需的权限:
sudo chmod 0600 /etc/sssd/sssd.conf
重新启动服务:
sudo systemctl restart sssd
验证服务是否正在运行:
$ systemctl status sssd
步骤3、在Rocky Linux 8/AlmaLinux 8上测试OpenLDAP身份验证
完成以上配置后,我们将测试是否可以使用OpenLDAP服务器上的可用用户帐户登录。
查找服务器上的可用用户帐户:
ldapsearch -x -b "ou=people,dc=computingforgeeks,dc=com"
比如,显示出来的是“testuser”,则现在我们将使用用户“testuser”登录进行测试。从GUI中,您可以使用新用户帐户登录,然后提供密码,并在验证后,如图所示验证ID:
也可以使用SSH,如下所示:
ssh testuser@192.168.205.16
样本输出:
步骤4、将sudoers添加到OpenLDAP
可以将具有sudo属性的用户添加到OpenLDAP。在设置OpenLDAP服务器时,我们在/etc/openldap/schema/sudo.ldif为sudo模式创建了LDIF:
$ cat /etc/openldap/schema/sudo.ldif
dn: cn=sudo,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudo
olcAttributeTypes: {0}( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {1}( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {2}( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {3}( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {4}( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {5}( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {6}( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {7}( 1.3.6.1.4.1.15953.9.1.8 NAME 'sudoNotBefore' DESC 'Start of time interval for which the entry is valid' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
olcAttributeTypes: {8}( 1.3.6.1.4.1.15953.9.1.9 NAME 'sudoNotAfter' DESC 'End of time interval for which the entry is valid' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
olcAttributeTypes: {9}( 1.3.6.1.4.1.15953.9.1.10 NAME 'sudoOrder' DESC 'an integer to order the sudoRole entries' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcObjectClasses: {0}( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' DESC 'Sudoer Entries' SUP top STRUCTURAL MUST cn MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoOrder $ sudoNotBefore $ sudoNotAfter $ description ) )
现在,在OpenLDAP服务器上,创建一个sudoers组织单元(ou):
vim sudoers.ldif
在文件中,添加以下行:
dn: ou=sudo,dc=computingforgeeks,dc=com
objectClass: organizationalUnit
objectClass: top
ou: sudo
description: my-demo LDAP SUDO Entry
应用LDIF:
$ sudo ldapadd -x -D cn=Manager,dc=computingforgeeks,dc=com -W -f sudoers.ldif
Enter LDAP Password:
adding new entry "ou=sudo,dc=computingforgeeks,dc=com"
创建默认LDIF:
$ vim defaults.ldif
dn: cn=defaults,ou=sudo,dc=computingforgeeks,dc=com
objectClass: sudoRole
objectClass: top
cn: defaults
sudoOption: env_reset
sudoOption: mail_badpass
sudoOption: secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
#sudoOrder: 1
应用更改:
$ sudo ldapadd -x -D cn=Manager,dc=computingforgeeks,dc=com -W -f defaults.ldif
Enter LDAP Password:
adding new entry "cn=defaults,ou=sudo,dc=computingforgeeks,dc=com"
最后,将用户添加到角色:
$ vim sudo_user.ldif
dn: cn=testuser,ou=sudo,dc=computingforgeeks,dc=com
objectClass: sudoRole
objectClass: top
cn: testuser
sudoCommand: ALL
sudoHost: ALL
sudoRunAsUser: ALL
sudoUser: testuser
#sudoOrder: 2
记住用OpenLDAP服务器中的实际用户替换testuser。您还可以设置用户执行的sudo命令,而不是ALL,例如:
sudoCommand: /usr/sbin/useradd
如果要使用NOPASSWD OpenLDAP SUDO,请添加以下行:
sudooption: !authenticate
现在将LDIF添加到服务器:
sudo ldapadd -x -D cn=Manager,dc=computingforgeeks,dc=com -W -f sudo_user.ldif
添加后,返回LDAP客户端并修改以下文件:
##在LDAP客户端上##
sudo vim /etc/nsswitch.conf
在文件中,添加以下行:
sudoers: files sss
完成更改后,重新启动服务:
sudo systemctl restart sssd
现在测试是否为用户添加了sudo:
至此,配置成功。
总结
我们已经在Rocky Linux 8/AlmaLinux 8上成功配置了OpenLDAP客户端。现在,您可以将几个Rocky Linux 8/AlmaLinux 8客户端添加到OpenLDAP服务器,并根据需要使用它们。另外,我们还学习了如何为OpenLDAP用户配置sudo访问。
相关资讯