• Aumentar tamanho da fonte
  • Tamanho da fonte padrão
  • Diminuir tamanho da fonte
Este pacote configura o arquivo /etc/pam_ldap.conf que deve ter o conteúdo a seguir. Se algum item estiver diferente, corrija antes de continuar, ok.O arquivo de configuração criado na instalação do libnss-ldap é o /etc/libnss-ldap.conf que deve ter o conteúdo a seguir. Se algum item estiver diferente, corrija antes de continuar, ok. Você pode manter os comentários do arquivo.A

Autenticando o Debian e Ubuntu no OpenLDAP

Alguns leitores me escreveram informando dificuldades em autenticar os usuários do Linux diretamente no LDAP usando o Debian versão 5 (lenny) e o Ubuntu 9.10. Bem vou mostrar a seguir como permitir a autenticação de usuários do Linux para estas versões e, de quebra, vamos melhorar a configuração do PAM que foi mostrada no livro.

Para executar os passos a seguir você já deve ter algum usuário posix cadastrado na base do serviço LDAP, ok. Se você ainda não cadastradou usuário algum, use o ldif a seguir para inclusão de um usuário de testes. Não se esqueça de modificar os dados DIT e OU de acordo com sua estrutura.

# grupo pessoal marcos
dn: cn=marcos,ou=groups,dc=empresa,dc=com,dc=br
objectClass: top
objectClass: posixGroup
cn: marcos
gidNumber: 10001

# usuário marcos
dn: uid=marcos,ou=Users,dc=empresa,dc=com,dc=br
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Marcos Sungaila
givenName: Marcos
sn: Sungaila
uid: marcos
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/marcos
loginShell: /bin/bash
gecos: Marcos Sungaila
userPassword: {MD5}WrbkuYvH+3FvwH7Zj+34Ag==
shadowLastChange: 14641
shadowMin: 0
shadowMax: 45
shadowWarning: 7

Debian Lenny

Autenticando usuários LDAP no Debian

Os pacotes necessários são os mesmos mostrados na configuração do livro, não houve mudança, nem mesmo as perguntas que o debconf faz para a pré-configuração dos pacotes. Em todo caso, segue os procedimentos:

# apt-get install libnss-ldap libpam-ldap nscd

Ao instalar estes pacotes, o debconf solicita algumas informações para pré-configurar os serviços, a seguir estão as respostas. Veja que muitas destas respostas serão repetidas pois estamos instalando dois pacotes com funções parecidas porém em subsistemas diferentes. Primeiro as respostas do libnss-ldap:

1ª - Qual o protocolo e endereço para consulta de usuários no LDAP? ldap://127.0.0.1/
2ª - Nome distinto da base de pesquisa? dc=empresa,dc=com,dc=br
3ª - Versão do protocolo LDAP a ser utilizada? 3
4ª - Privilégios especiais LDAP para o root? Sim
5ª - Conta LDAP para o root? cn=admin,dc=empresa,dc=com,dc=br
6ª - Password da conta root do LDAP? coloque-a-senha-do-admin-aqui

Em seguida o debconf informa que o arquivo /etc/nsswitch.conf deve ser alterado manualmente. Faremos isso daqui a pouco.

O arquivo de configuração criado na instalação do libnss-ldap é o /etc/libnss-ldap.conf que deve ter o conteúdo a seguir. Se algum item estiver diferente, corrija antes de continuar, ok. Você pode manter os comentários do arquivo.

base dc=empresa,dc=com,dc=br
uri ldap://127.0.0.1/
ldap_version 3
rootbinddn cn=admin,dc=empresa,dc=com,dc=br

Agora as respostas do libpam-ldap:

1ª - Tornar a conta root local o administrador da base de dados? Sim
2ª - A base de dados LDAP requer autenticação? Não
3ª - Conta LDAP para o root? cn=admin,dc=empresa,dc=com,dc=br
4ª - Password da conta root do LDAP? coloque-a-senha-do-admin-aqui

Este pacote configura o arquivo /etc/pam_ldap.conf que deve ter o conteúdo a seguir. Se algum item estiver diferente, corrija antes de continuar, ok.

base dc=empresa,dc=com,dc=br
uri ldap://127.0.0.1/
ldap_version 3
rootbinddn cn=admin,dc=empresa,dc=com,dc=br
pam_password md5

Agora vamos alterar o arquivo /etc/nsswitch.conf para que o Linux consiga encontrar os usuários do LDAP.

...
passwd: compat ldap
groups: compat ldap
shadow: compat ldap
...
netgroup: ldap

Para testar esta configuração não é necessário reiniciar serviço algum, apenas execute o comando a seguir. A última linha deve apresentar o usuário cadastrado no LDAP no começo deste artigo.

# getent passwd marcos
marcos:x:10001:10001:Marcos Sungaila:/home/marcos:/bin/bash
# id marcos
uid=10001(marcos) gid=10001(marcos) grupos=10001(marcos)

Agora vamos configurar o PAM. É aqui que vamos colocar alguns itens de forma difrente do que foram apresentadas no livro para termos uma configuração um pouco mais coerente.

Arquivo /etc/pam.d/common-auth:

auth      required        pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so

Arquivo /etc/pam.d/common-account:

account   required                                      pam_unix.so broken_shadow
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so

Arquivo /etc/pam.d/common-session:

session   optional                    pam_keyinit.so revoke
session optional pam_mkhomedir.so skel=/etc/skel umask=0077 silent
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so

Arquivo /etc/pam.d/common-password:

password  requisite     pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so

Para você poder usar a cracklib na configuração do PAM é necessário instalar o pacote correspondente que, por padrão, não são instalados no Debian.

# apt-get -y install cracklib2 libpam-cracklib

Agora vou fazer um teste simples. De outro equipamento vou fazer um ssh para o equipamento Debian configurado para autenticar os usuários via LDAP.

svntmsungaila@host01:~$ ssh marcos @192.168.131.12
The authenticity of host '192.168.131.12 (192.168.131.12)' can't be established.
RSA key fingerprint is 5e:5d:d1:a7:fe:6d:a8:dd:0a:05:5a:84:f8:f6:e3:9a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.131.12' (RSA) to the list of known hosts.
marcos @192.168.131.12's password:
marcos@ldapmaster:~$

Módulos PAM muitas vezes têm comportamentos diferentes de acordo com o tipo de teste realizado, um exemplo é o módulos pam_unix que aparece várias vezes nas configurações anteriores. Veja uma breve descrição da função dos módulos PAM utilizados neste processo em cada etapa.

Autenticação (auth)

  • pam_env: define as variáveis de ambiente definidas em /etc/security/pam_env.conf
  • pam_unix: autentica o usuário usando os arquivos locais
  • pam_succeed_if: realiza os testes de conta de usuário especificados na linha de configuração
  • pam_ldap: autentica o usuário usando o serviço LDAP
  • pam_deny: rejeita o acesso se o processo de autenticação chegar até este módulo

Autorização (account)

  • pam_unix: verifica a expiração da senha do usuário.
  • pam_succeed_if: realiza os testes de conta de usuário especificados na linha de configuração.
  • pam_ldap: faz vários testes quanto à origem da conexão (host), serviço utilizado para configuração, uid/gid do usuário entre outros.
  • pam_permit: garante o acesso caso os testes cheguem até este módulo.

Abertura de sessão (session)

  • pam_keyinit:utilizado pelo processo de login criando um chaveiro digital (keyring) de sessão.
  • pam_mkhomedir: cria a pasta pessoal do usuário caso ela não exista. Este procedimento só é executa no acesso local ou shell remoto (via ssh por exemplo). Não tem efeito via samba ou nfs.
  • pam_limits: ativa limites de uso do equipamento baseado nas configurações do arquivo /etc/security/limits.conf.
  • pam_succeed_if: realiza os testes de conta de usuário especificados na linha de configuração
  • pam_unix: registra em log o início e fim da sessão do usuário

Troca de senhas (password)

  • pam_cracklib: testa a complexidade da senha fornecida pelo usuário
  • pam_unix: atualiza a senha do usuário nos arquivos locais
  • pam_ldap: atualiza a senha do usuário na base do serviço LDAP
  • pam_deny: encerra o processo de troca de senha

 

Ubuntu

O Ubuntu mudou a forma como faz a configuração do servidor OpenLDAP. A partir da versão 9.04 o padrão é usar as configurações do servidor e Diretórios via cn=config. Depois vou postar como montar a configuração do seu Diretório com OpenLDAP usando este método.

Se você quiser usar o método de configuração convencional via arquivo slapd.conf você pode alterar a opção SLAPD_CONF do arquivo /etc/default/slapd como a seguir. Antes de modificar isto pare o servidor slapd.

SLAPD_CONF="/etc/ldap/slapd.conf"

Agora você pode usar a configuração via arquivo /etc/ldap/slapd.conf e iniciar seu serviço slapd como vinha fazendo até agora.

Autenticando os usuários LDAP no Ubuntu

Os pacotes necessários são os mesmos usados com o Debian. Em todo caso, segue os procedimentos:

$ sudo apt-get install libnss-ldap libpam-ldap nscd

Ao instalar estes pacotes, o debconf solicita algumas informações para pré-configurar os serviços, a seguir estão as respostas.

1ª - Qual o protocolo e endereço para consulta de usuários no LDAP? ldap://127.0.0.1/
2ª - Nome distinto da base de pesquisa? dc=empresa,dc=com,dc=br
3ª - Versão do protocolo LDAP a ser utilizada? 3
4ª - Tornar o usuário root local administrador do LDAP? Sim
5ª - O Diretório LDAP requer login? Não
5ª - Conta LDAP para o root? cn=admin,dc=empresa,dc=com,dc=br
6ª - Password da conta root do LDAP? coloque-a-senha-do-admin-aqui

Com a instalação destes pacotes é criado o /etc/ldap.conf com a configuração a seguir.

base dc=empresa,dc=com,dc=br
uri ldap://127.0.0.1/
ldap_version 3
rootbinddn cn=admin,dc=empresa,dc=com,dc=br
pam_password md5

Alguns itens adicionais já são alterados também. Por exemplo, a configuração do PAM já está pronta mas ainda não foi habilitada, estes recursos foram incluídos com os pacotes ldap-auth-config e ldap-auth-client que o Ubuntu tem como pré-requisitos.

Para habilitar o Ubuntu a autenticar usuários do LDAP instale o pacote ldap-client-config e, em seguida, execute o comando auth-client-config como segue.

$ sudo apt-get -y install ldap-client-config
$ sudo auth-client-config -t nss -p lac_ldap

Você pode fazer os mesmos testes que mostrei com o Debian anteriormente. Use o comando getent, por exemplo:

$ getent passwd marcos
marcos:x:10001:10001:Marcos Sungaila:/home/marcos:/bin/bash

Agora teste a autenticação do usuário.

$ ssh marcos@127.0.0.1
marcos@ 192.168.131.25's password:
Linux web1 2.6.31-19-server #56-Ubuntu SMP Thu Jan 28 03:40:48 UTC 2010 x86_64

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/

System information as of Tue Mar 2 16:32:57 BRT 2010

System load: 0.0 Memory usage: 11% Processes: 82
Usage of /: 5.3% of 18.58GB Swap usage: 0% Users logged in: 1

Graph this data and manage this system at https://landscape.canonical.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

Last login: Tue Mar 2 16:32:04 2010 from 192.168.131.11
Could not chdir to home directory /home/marcos: No such file or directory
marcos@ldap-ubuntu:/$

A única falha neste processo é que o diretório pessoal não foi criado. Para corrigir este item, edite o arquivo /etc/pam.d/common-session e acrescente o módulo pam_mkhomedir.

session   optional   pam_mkhomedir.so skel=/etc/skel umask=0077 silent

Agora você pode testar a conexão via ssh ou autenticação local tudo deve funcionar normalmente.

[]'s

Marcos Sungaila