O PAM (Pluggable Authentication Modules) é o serviço responsável por realizar a autenticação de usuários nos ambientes Linux/Unix. Através do PAM e de suas bibliotecas, é possível configurar um esquema de autenticação segura para qualquer aplicação de forma transparente.
O pacote libpam-ldap é o plugin do LDAP para o PAM, ou seja, ele é que permitirá ao PAM autenticar usuários armazenados no diretório LDAP. O PAM apenas realiza a autenticação dos usuários que foram reconhecidos durante a pesquisa do NSS, ou seja, é necessário instalar e configurar o módulo libnss-ldap antes do libpam-ldap para que a autenticação dos usuários do diretório LDAP seja efetuada.
Procedimento 3.3. Instalação
O pacote libpam-ldap deverá ser instalado junto com o pacote libnss-ldap normalmente, no entanto, caso isso não ocorra execute o seguinte comando:
usuario
@cliente
:~$
sudo aptitude install libnss-ldap
Esse pacote pertence ao repositório Universe da distribuição Ubuntu. Para saber como adicionar os repositórios extras à lista de repositórios do gerenciador de pacotes, consulte a documentação do Ubuntu: Extra Repositories.
Procedimento 3.4. Configuração
O processo de configuração do pacote libpam-ldap deve iniciar automaticamente após a instalação. Caso ele tenha sido instalado automaticamente junto com o libnss-ldap, sua configuração será realizada após a primeira. A seguir explicaremos esse processo para cada tela apresentada. O processo pode ser repetido a qualquer momento, utilizando o seguinte comando:
usuario
@cliente
:~$
sudo dpkg-reconfigure libpam-ldap
Digite o endereço do servidor LDAP.
Digite a raiz (ou base) do diretório LDAP.
Configure para a versão 3 do protocolo LDAP.
Selecione não para essa opção também.
Configure a base de dados para que ela não precise de autenticação.
Na próxima tela vamos configurar o algoritmo utilizado para criptografar as senhas nos casos em que um algoritmo não for explicitamente especificado.
Apenas mantenha a opção padrão (crypt
) e confirme.
Precisamos agora alterar os arquivos /etc/pam.d/common-account
, /etc/pam.d/common-auth
e /etc/pam.d/common-password
. Os exemplo abaixo ilustram esses arquivos com as alterações necessárias para que o PAM utilize os usuários do diretório para autenticação do sistema:
Listagem do arquivo /etc/pam.d/common-account
:
Exemplo 3.2. Arquivo /etc/pam.d/common-account
# # /etc/pam.d/common-account - authorization settings common to all # services # This file is included from other service-specific PAM config files, # and should contain a list of the authorization modules that define # the central access policy for use on the system. The default is to # only deny service to users whose accounts are expired in /etc/shadow. # account sufficient pam_ldap.so account required pam_unix.so
Listagem do arquivo /etc/pam.d/common-account
:
Exemplo 3.3. Arquivo /etc/pam.d/common-auth
# # /etc/pam.d/common-auth - authentication settings common to all # services # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure use_first_pass
A opção use_first_pass
utilizada na última linha do arquivo /etc/pam.d/common-auth
evita que o usuário digite a senha duas vezes durante a autenticação.
Listagem do arquivo /etc/pam.d/common-account
:
Exemplo 3.4. Arquivo /etc/pam.d/common-password
# # /etc/pam.d/common-password - password-related modules common to all # services # This file is included from other service-specific PAM config files, # and should contain a list of modules that define the services to be # used to change user passwords. The default is pam_unix # The "nullok" option allows users to change an empty password, else # empty passwords are treated as locked accounts. # # (Add `md5' after the module name to enable MD5 passwords) # # The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in # login.defs. Also the "min" and "max" options enforce the length of the # new password. password sufficient pam_ldap.so password required pam_unix.so nullok obscure min=4 max=8 md5 # Alternate strength checking for password. Note that this # requires the libpam-cracklib package to be installed. # You will need to comment out the password line above and # uncomment the next two in order to use this. # (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH') # # password required pam_cracklib.so retry=3 minlen=6 difok=3 # password required pam_unix.so use_authtok nullok md5
O PAM precisará se comunicar com o servidor LDAP através de TLS para garantir a segurança dos dados transmitidos, nos casos em que ele for instalado em uma máquina diferente da que está rodando o serviço slapd. Para isso, precisamos descomentar a seguinte linha no arquivo /etc/pam_ldap.conf
:
… ssl start_tls …
Também será necessário ter um arquivo /etc/ldap/ldap.conf
com o seguinte conteúdo:
Exemplo 3.5. Arquivo de configuração /etc/ldap/ldap.conf
####################### /etc/ldap/ldap.conf ####################### # Arquivo de configuração para os clientes do diretório LDAP. # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE dc=ime,dc=usp,dc=br URI ldap://ldapserver
.ime.usp.br TLS_CACERT /etc/ssl/certs/ssl-cert-ldapserver
.pem
Este arquivo deve ter as permissões ajustadas para 644.
O certificado do servidor (caso ele seja do tipo auto-assinado) ou o da CA que o certificou deve ser colocado no diretório /etc/ssl/certs
e sua permissão de acesso deve ser ajustada para 644 também. Altere o valor do parâmetro TLS_CACERT
de acordo com o nome do arquivo do certificado.