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