Resumo do projeto
Neste projeto configurei um servidor OpenLDAP para centralizar a autenticação de utilizadores Linux,
integrando com SSSD e PAM. O objetivo é que as contas existam apenas no diretório
e possam fazer login em vários servidores, com políticas de senha e gestão consistente.
Trabalhei desde a estrutura de DN e OUs, criação de utilizadores via LDIF, até à integração com
login e sudo nas máquinas cliente.
Modelo de diretório LDAP
Estrutura básica que utilizei (exemplo simplificado):
dc=lab,dc=local
├── ou=People,dc=lab,dc=local
│ ├── uid=carlos,ou=People,dc=lab,dc=local
│ └── uid=devuser,ou=People,dc=lab,dc=local
└── ou=Groups,dc=lab,dc=local
└── cn=developers,ou=Groups,dc=lab,dc=local
A separação em ou=People e ou=Groups permite gerir utilizadores e grupos de forma
limpa e previsível.
Exemplo de LDIF – criação de utilizador
Exemplo de ficheiro LDIF usado para criar um utilizador no diretório:
dn: uid=carlos,ou=People,dc=lab,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: Carlos Menezes
sn: Menezes
uid: carlos
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/carlos
loginShell: /bin/bash
mail: carlos.menezes@example.com
Depois, a password é definida com:
ldappasswd -H ldap://ldap.lab.local \
-D "cn=admin,dc=lab,dc=local" -W \
"uid=carlos,ou=People,dc=lab,dc=local"
Configuração do cliente – /etc/sssd/sssd.conf
Nos clientes Linux, utilizei o SSSD para falar com o servidor LDAP:
[sssd]
services = nss, pam
config_file_version = 2
domains = LDAP
[domain/LDAP]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://ldap.lab.local
ldap_search_base = dc=lab,dc=local
ldap_id_use_start_tls = true
cache_credentials = true
enumerate = false
Com o sssd.conf configurado e sssd ativo, o login em tty e SSH passa
a aceitar contas do LDAP.
Integração com PAM
Integração típica em /etc/nsswitch.conf:
passwd: files sss
group: files sss
shadow: files sss
E uso de pam_sss.so nos ficheiros de PAM (ex.: /etc/pam.d/common-auth):
auth [success=1 default=ignore] pam_sss.so use_first_pass
Com isso, o fluxo de autenticação passa a delegar ao SSSD, que valida o utilizador junto do LDAP.