NSS e PAM – Autenticando o sistema no LDAP
Em algumas situações não é o bastante autenticar apenas usuários de algum serviço instalado. Pode ser necessário autenticar todos os usuários do sistema em uma base LDAP. Para situações assim pode-se configurar o sistema de autenticação do Sistema Operacional para validar contas em uma base LDAP.
A autenticação de um usuário necessita de duas etapas:
Busca pelo nome de usuário e seu ID (uid); Autenticação propriamente dita, confrontando-se o par usuário/senha fornecido com o par armazenado.
A primeira etapa envolve o uso de bibliotecas NSS – Name Server Switches – que se encarregam de fazer a busca nas bases de usuários especificadas. O módulo “nss_ldap” permite que sistemas GNU/Linux façam a busca de usuários do sistema em bases OpenLDAP.
A segunda etapa é usada para aplicação de políticas relacionadas a autenticação (verificar se o diretório pessoal existe, por exemplo). Em sistemas GNU/Linux os módulos do PAM – Pluggable Authentication Modules – são responsáveis por essa etapa. O módulo “libpam_ldap” é o responsável pela integração do PAM com o OpenLDAP.
Ambas as etapas são realizadas por módulos permitindo que sistemas Gnu/Linux utilizem uma grande gama de serviços de armazenamento de usuários. São bastante usados sistemas baseados em Gerenciadores de Bancos de Dados (MySQL, por exemplo) e sistemas baseados em serviços de diretórios (OpenLDAP, por exemplo).
Na realidade o módulo “libpam_ldap” não é necessário para login, mas é fundamental para que ferramentas funcionem corretamente. É o caso do utilitário de troca de senhas. Outro bom motivo é que sem o uso do “libpam_ldap”, o método de criptografia a ser usado é obrigatoriamente o {CRYPT}, considerado por muitos como ultrapassado e passível de quebra em processadores contemporâneos.
Usando “libpam_ldap” pode-se usar os mecanismos de criptografia entendidos pelo sistema OpenLDAP. Veja em: http://www.debianplanet.org/node.php?id=1048
Praticamente todos os serviços que utilizem o sistema de autenticação interna do GNU/Linux podem se beneficiar do uso do OpenLDAP. A aplicação de políticas de restrição de usuários (uma regra baseada em horários, por exemplo) é geralmente realizada por módulos PAM.
Instalando e configurando o NSS - Name Server Switches
1. Para instalar o NSS execute o seguinte comando:
aptitude install libnss-ldap
2. Na tela de configuração preencha com o DN completo do seu usuário “admin”:
3. Na tela seguinte coloque a senha do usuário “admin”:
4. Altere o arquivo “/etc/nsswitch.conf” para que ele busque as informações de usuários e senhas na base OpenLDAP:
passwd: compat ldap group: compat ldap shadow: compat ldap
OBSERVAÇÃO: Quando se instala o “libnss-ldap” usando o aptitude também é instalado o programa “nscd”. Este aplicativo funciona como um cache para autenticação, mantendo informações na memória. Apesar de sua função ser agilizar o processo de busca sua presença traz mais instabilidade do que algum possível benefício. Portanto sugerimos que ele seja removido. Sendo assim, “aptitude purge nscd”
5. Confira o arquivo “/etc/libnss-ldap.conf”, que já deve ter sido configurado pelo “debconf”, e confira se as seguintes diretivas estão corretas:
uri ldap://ldap__.kyapanel.com.br/ base dc=kyapanel,dc=com,dc=br ldap_version 3
Se tudo estiver correto já deve ser possível listar o conteúdo do arquivo “passwd”, por exemplo e, ver as entradas da base OpenLDAP.
6. Liste o conteúdo do arquivo “/etc/passwd” com o comando abaixo:
getent passwd
Instalando e configurando o PAM - Pluggable Authentication Modules
1. Instale o libpam-ldap com o comando abaixo:
aptitude install libpam-ldap
2. A primeira tela de configuração pergunta se desejamos fazer o usuário “root local o administrados base. A resposta é sim:
3. A segunda tela pergunta se é necessária autenticação na base de dados para uma simples pesquisa? A resposta padrão é não:
4. Na terceira tela informe a conta do usuário administrador da base para eventuais trocas de senhas.
5. Na quarta e última tela devemos fornecer a senha do usuário “admin”
O PAM atua nos quatro estágios da autenticação: session, account, authentication e password. Como queremos que nossas alterações tenham efeito nos quatro estágios e para todos os programas que suportam PAM, precisamos fazer as alterações nos arquivos comuns a todos os aplicativos, ou seja: common-auth, common-account, common-session e common-password.
6. Edite o arquivo “/etc/pam.d/common-account” e adicione o suporte ao OpenLDAP. Deixe ele assim:
account sufficient pam_ldap.so account required pam_unix.so
7. Edite o arquivo “/etc/pam.d/common-auth” para que seja suficiente a autenticação via base OpenLDAP. Deixe ele assim:
auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure
A opção “try_first_pass” tenta usar a mesma senha que o usuário já digitou em um módulo anterior, caso essa senha não tenha sido validada ele pede a senha do usuário novamente. Para obter maiores informações sugere-se a leitura da RFC86.0.
8. Edite o arquivo “/etc/pam.d/common-password” e adicione o suporte ao OpenLDAP. Deixe ele assim:
password required pam_unix.so nullok obscure min=4 max=8 md5 password required pam_ldap.so try_first_pass
9. Edite o arquivo “/etc/pam.d/common-session” e adicione o suporte ao OpenLDAP. Deixe ele assim:
session sufficient pam_ldap.so session required pam_unix.so
10. Verifique as configurações do arquivo “/etc/pam_ldap.conf” para ter certeza de que o “debconf” as fez corretamente:
base dc=kyapanel,dc=com,dc=br uri ldap://ldap__.kyapanel.com.br/ ldap_version 3 rootbinddn cn=admin,dc=kyapanel,dc=com,dc=br pam_password crypt
Teste de funcionamento
Para testar a autenticação no sistema operacional basta abrir uma nova sessão ou executar uma conexão via “ssh” na própria máquina.
Entretanto é provável que, apesar de validar corretamente, o usuário não consiga ter acesso ao sistema. E se tiver será apresentado um erro. Algo como:
“Could not chdir to home directory /home/fulano1: No such file or directory”
Isso acontece porque o diretório “HOME” do usuário não existe:
Criar o diretório “home” do usuário manualmente. Algo como:
mkdir /home/fulano1 chown fulano1: /home/fulano1 -R
Finalmente faça uma tentativa de “login” no seu servidor utilizando o usuário “fulano1”.
Licença
Copyright 2007 Anahuac de Paula Gil e Francisco Kem Iti Saito
Permite-se distribuição, publicação e cópia literal da íntegra deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright, a URL oficial do documento e esta nota de permissão.
Permite-se também distribuição, publicação e cópia literal de seções individuais deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright e a nota de permissão acima, e que a URL oficial do documento seja preservada ou substituída pela URL oficial da seção individual.





