logo       

Usando políticas de senhas em diretórios LDAP: msg#02633

culture.publications.dicas

Subject: Usando políticas de senhas em diretórios LDAP

Usando políticas de senhas em diretórios LDAP
=============================================

Colaboração: Gabriel Menezes Nunes

Vou descrever nesse artigo uma maneira que encontrei de usar os recursos
de políticas de senhas em diretórios LDAP. Essa é uma ótima maneira de
reforçar a segurança total da sua infra-estrutura da rede, pois um usuário
com senha fraca pode colocar em risco todo um planejamento feito durante
muito tempo. Caso um servidor seja penetrado por um intruso, devido a uma
conta com senha fraca, o invasor estará a um passo de uma possível escalada
de privilégios e total comprometimento da máquina em questão. Então, uma
"cartilha" de políticas a serem usadas numa rede que contém dados privados
de usuários, é crucial para qualquer pequena ou grande empresa.

Procurei muito por esse assunto na internet, mas não encontrei uma documentação
interessante usando o OPENLDAP (http://www.openldap.org).

Esse artigo irá apenas demonstrar a instalação e configuração do schema
"ppolicy", usado nas políticas de senhas no servidor. Qualquer configuração
adicional do LDAP ou configuração do cliente estão fora do escopo desse
documento.

Para usar os atributos LDAP de aplicação de senhas fortes, será necessário o
PAM. Logo distribuições que não o usem, como o SLACKWARE, não serão afetadas
e irão ignorar qualquer bloqueio de usuário ou expiração de senha. Nessas
distros, você terá que compilar o PAM , e recompilar alguns pacotes como
OpenSSH e Shadow.

Começando pela instalação a partir do código fonte:

Pegue o OpenLDAP mais atual (http://www.openldap.org/software/download)
Estou usando a versão 2.3.23

tar xvzf openldap-2.3.23.tgz

Agora vem uma parte interessante: a alteração do código fonte!

Teremos que alterá-lo para podermos usar as políticas de senhas diferentes
para cada usuário, e não apenas uma genérica para a base de dados inteira,
e também para podermos modificar alguns atributos operacionais que o OpenLDAP
padrão não nos deixa modificar.

Então vamos "hackear" o OpenLDAP !!!

Entre no diretório "servers/slapd/overlays" dentro da pasta do openldap.


cd openldap-2.3.23/servers/slapd/overlays


Dentro desse diretório localize e abra o arquivo ppolicy.c, de preferência
com um editor que localize facilmente uma string de busca!


kate ppolicy.c


Aberto o arquivo, retire todas as strings "NO-USER-MODIFICATION" dos atributos
do schema.

Explicando melhor, schema é um conjunto de atributos e classes usados no LDAP
para guardar dados específicos do usuário. Caso esse atributo esteja como
"NO-USER-MODIFICATION", ele não poderá ser mudado para usuários normais,
logo não será possível uma política individual para cada um no seu banco
de dados. Exemplos de schema podem ser samba.schema, para uso do samba com
ldap, ou até mesmo um schema feito por um administrador para uso privado
e exclusivo da empresa, usando atributos como RG, número do funcionário,
salário, andar em que se localiza no prédio, etc.

Arquivo alterado, e só salvar, e agora iremos compilar

Volte ao diretório base do openldap


cd ../../..
./configure --enable-overlays --enable-lmpasswd --enable-crypt


A parte mais importante é habilitar todos os "overlays", mais especificamente o
"ppolicy". LMPasswd é para manter alguma compatibilidade com o samba, caso
queira integrá-lo ao LDAP, e "crypt" mantém compatibilidade com sistemas
que não usam PAM, como o SLACKWARE.

Caso dê algum problema com o Berkeley DB, exporte o CPPFLAGS: export
CPPFLAGS="-I/usr/include/db4" ou onde estiver os includes do Berkeley DB.
Repita o configure

E para terminar a instalação


make
make install

Para configurar o ppolicy será necessário apenas a adição de uma linha
ao slapd.conf


overlay ppolicy


Pronto! Já temos as políticas de senhas rodando no servidor.

Para testar podemos montar um LDIF:


lock_user.ldif
-----------------------------------------------
dn: uid=gabriel,dc=servidor,dc=org,dc=br
changetype: modify
add: pwdAccountLockedTime
pwdAccountLockedTime: 000001010000Z
-----------------------------------------------

e adicionamos


ldapmodify -x -D 'cn=admin,dc=servidor,dc=org,dc=br' -w senha_do_ldap -f
lock_user.ldif


A partir desse comando esse usuário estará bloqueado no servidor e não poderá
mais logar. Para permitir sua autenticação:


unlock_user.ldif
-----------------------------------------------
dn: uid=gabriel,dc=servidor,dc=org,dc=br
changetype: modify
delete: pwdAccountLockedTime
-----------------------------------------------

ldapmodify -x -D 'cn=admin,dc=servidor,dc=org,dc=br' -w senha_do_ldap -f
unlock_user.ldif


O servidor volta a permitir o usuário "gabriel" a se autenticar na base
de dados.

Para mais atributos e manipulação de tais políticas, olhe no arquivo
ppolicy.schema no diretório schema do OpenLDAP ou no Google!!!



<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise