Voltar ao portfólio

Infraestrutura LDAP – OpenLDAP + PAM/SSSD

Autenticação centralizada para Linux, com políticas de senha e integração com login de utilizadores.

PT EN

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.

OpenLDAP SSSD PAM Autenticação centralizada

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.