Pesquisa de site

Configure o cliente OpenLDAP no Rocky Linux 8/AlmaLinux 8


Em nosso guia anterior, explicamos como instalar e configurar o servidor OpenLDAP no Rocky Linux 8/AlmaLinux 8. Hoje aprenderemos como configurar o cliente OpenLDAP no Rocky Linux 8/AlmaLinux 8 e habilitar a autenticação e compartilhar informações sobre diversos recursos de rede .

O que é OpenLDAP?

LDAP é uma abreviatura de Protocolo leve de acesso a diretórios. É um protocolo usado para acessar e modificar serviços de diretório baseados em X.500 executados em TCP/IP. Uma vez configurado, o LDAP pode ser usado para autenticação e compartilhamento de informações sobre usuários, redes, sistemas, serviços e aplicativos de um serviço de diretório para outros serviços/aplicativos.

OpenLDAP é uma implementação gratuita e de código aberto do LDAP. Esta ferramenta fornece um utilitário de linha de comando que pode ser usado para criar e gerenciar o diretório LDAP. OpenLDAP é altamente preferido devido a:

  • Econômico, pois é gratuito e de código aberto
  • Ele oferece suporte para autenticação simples e camada de segurança e segurança da camada de transporte.
  • Servidor LDAP autônomo aprimorado
  • Suporta o protocolo da Internet de próxima geração versão 6.
  • Ampla aplicabilidade devido à sua flexibilidade
  • É totalmente compatível com sistemas Mac, Windows e Linux.
  • API C atualizada, que é muito essencial para desenvolvedores
  • Total conformidade com o LDAP Data Interchange Format (LDIF) versão 1

Depois que o servidor OpenLDAP for configurado, você precisará configurar um sistema cliente para autenticar no serviço de diretório. Existem várias maneiras de conseguir isso, mas a forma preferida é usando o serviço SSSD. Isso ocorre porque o pacote SSSD é fornecido na maioria dos repositórios Linux padrão e facilita a administração e o provisionamento de sistemas clientes.

A imagem abaixo mostra a arquitetura cliente-servidor OpenLDAP.

Antes de você começar

Para este guia, presumo que você já tenha um servidor OpenLDAP configurado. Nesta página, você pode instalar e configurar o OpenLDAP usando os guias abaixo:

  • Como executar o servidor OpenLDAP em contêineres Docker
  • Instale e configure o servidor OpenLDAP no Rocky Linux 8/AlmaLinux 8
  • Instalar e configurar o servidor OpenLDAP no CentOS 8 | RHEL 8
  • Instale e configure o servidor OpenLDAP no Ubuntu

Assim que a instalação for concluída, defina o nome do host:

sudo hostnamectl set-hostname ldapclient.computingforgeeks.com

Agora atualize seu arquivo /etc/hosts conforme mostrado:

$ sudo vim /etc/hosts
##OpenLDAP server
192.168.205.2 ldapmaster.computingforgeeks.com

##OpenLDAP Client
192.168.205.16 ldapclient.computingforgeeks.com

Neste caso, meu servidor OpenLDAP está rodando sob o nome de domínio ‘ldapmaster.computingforgeeks.com’

Verifique se o servidor está acessível:

$ 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

Etapa 1 – Instale o cliente OpenLDAP e os pacotes SSSD

Tendo configurado o arquivo FQDN e Hosts, instalaremos o cliente OpenLDAP e os pacotes SSSD no Rocky Linux 8/AlmaLinux 8. O pacote SSSD (System Security Service Daemon) é usado para registrar sistemas Linux nos serviços de diretório, como Active Directory IPA Server e o domínio LDAP.

Para instalar todos os pacotes necessários, emita o comando:

sudo dnf install openldap-clients sssd sssd-ldap oddjob-mkhomedir libsss_sudo

Árvore de dependência:

......
Transaction Summary
================================================================================
Install   1 Package
Upgrade  16 Packages

Total download size: 4.6 M
Is this ok [y/N]: y

Depois de instalado, você precisa alterar o perfil de autenticação para SSSD. Liste os perfis disponíveis

$ 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

Agora mude para o perfil SSSD;

$ sudo authselect select sssd with-mkhomedir --force
Backup stored at /var/lib/authselect/backups/2022-09-24-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

Depois disso, inicie e habilite o serviço oddjobd:

sudo systemctl enable --now oddjobd.service

Verifique se o serviço está em execução:

$ systemctl status oddjobd.service
● oddjobd.service - privileged operations for unprivileged applications
   Loaded: loaded (/usr/lib/systemd/system/oddjobd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-09-24 14:23:52 EDT; 6s ago
 Main PID: 1080524 (oddjobd)
    Tasks: 1 (limit: 23198)
   Memory: 876.0K
   CGroup: /system.slice/oddjobd.service
           └─1080524 /usr/sbin/oddjobd -n -p /run/oddjobd.pid -t 300

Etapa 2 – Configurar cliente OpenLDAP e serviços SSSD

Depois de instalado, você pode configurar o cliente OpenLDAP e os serviços SSSD. Começaremos configurando o cliente OpenLDAP:

sudo vim /etc/openldap/ldap.conf

No arquivo, defina seu servidor OpenLDAP e o nome de domínio de pesquisa base conforme configurado:

URI ldap://ldapmaster.computingforgeeks.com
BASE dc=computingforgeeks,dc=com
SUDOERS_BASE ou=sudo,dc=computingforgeeks,dc=com

A última linha é para o acesso SUDO que criaremos posteriormente neste guia. Salve o arquivo e configure o serviço SSSD:

sudo vim /etc/sssd/sssd.conf

Adicione os arquivos abaixo e substitua 'ldap_uri', 'ldap_search_base' e ' sudoers_base' apropriadamente:

[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]

Salve o arquivo e defina as permissões necessárias:

sudo chmod 0600 /etc/sssd/sssd.conf

Reinicie o serviço:

sudo systemctl restart sssd

Verifique se o serviço está em execução:

$ systemctl status sssd
● sssd.service - System Security Services Daemon
   Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2022-09-24 14:26:27 EDT; 6s ago
 Main PID: 1081322 (sssd)
    Tasks: 6 (limit: 23198)
   Memory: 45.2M
   CGroup: /system.slice/sssd.service
           ├─1081322 /usr/sbin/sssd -i --logger=files
           ├─1081327 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
           ├─1081328 /usr/libexec/sssd/sssd_be --domain default --uid 0 --gid 0 --logger=files
           ├─1081329 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
           ├─1081330 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --logger=files
           └─1081331 /usr/libexec/sssd/sssd_autofs --uid 0 --gid 0 --logger=files

Etapa 3 – Teste a autenticação OpenLDAP no Rocky Linux 8/AlmaLinux 8

Uma vez feitas as configurações acima, testaremos se podemos fazer login usando as contas de usuário disponíveis nos servidores OpenLDAP.

Encontre as contas de usuário disponíveis no servidor:

ldapsearch -x -b "ou=people,dc=computingforgeeks,dc=com"

Saída de amostra:

Agora vamos testar fazendo login usando o usuário ‘testuser‘. Na GUI, você pode fazer login com a nova conta de usuário conforme mostrado

Forneça a senha.

Depois de autenticado, verifique o ID conforme mostrado.

Também é possível usar SSH conforme mostrado:

ssh testuser@192.168.205.16

Exemplo de saída:

Passo 4 – Adicionando sudoers ao OpenLDAP

É possível adicionar usuários com o atributo sudo ao OpenLDAP. Ao configurar o servidor OpenLDAP, criamos um LDIF para o esquema sudo em /etc/openldap/schema/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 ) )

Agora no servidor OpenLDAP, crie uma unidade organizacional sudoers (ou)

vim sudoers.ldif

No arquivo, adicione as linhas abaixo:

dn: ou=sudo,dc=computingforgeeks,dc=com
objectClass: organizationalUnit
objectClass: top
ou: sudo
description: my-demo LDAP SUDO Entry

Aplique o 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"

Crie o LDIF padrão:

$ 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

Aplique as alterações:

$ 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"

Por fim, adicione o usuário à função:

$ 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

Lembre-se de substituir testuser por um usuário real em seu servidor OpenLDAP. Você também pode definir o comando sudo exato a ser executado pelo usuário em vez de ALL, por exemplo:

sudoCommand: /usr/sbin/useradd

Se você deseja ter o NOPASSWD OpenLDAP SUDO, adicione a linha:

sudooption: !authenticate

Agora adicione o LDIF ao servidor;

sudo ldapadd -x -D cn=Manager,dc=computingforgeeks,dc=com -W -f sudo_user.ldif

Depois de adicionado, volte ao cliente LDAP e modifique o arquivo abaixo:

##On the LDAP client##
sudo vim /etc/nsswitch.conf

No arquivo, adicione a linha:

sudoers: files sss

Depois que as alterações forem feitas, reinicie o serviço:

sudo systemctl restart sssd

Agora teste se sudo foi adicionado para o usuário:

Voilá!

Configuramos com sucesso o cliente OpenLDAP no Rocky Linux 8/AlmaLinux 8. Agora você pode adicionar vários clientes Rocky Linux 8/AlmaLinux 8 ao servidor OpenLDAP e usá-los conforme desejado. Também aprendemos como configurar o acesso sudo para os usuários do OpenLDAP. Espero que isso tenha sido significativo para você,

Ver mais:

  • Como executar o servidor OpenLDAP em contêineres Docker
  • Integre TrueNAS com LDAP/Active Directory para autenticação de usuário
  • Configure a replicação OpenLDAP Multi-Master no CentOS 8

Artigos relacionados: