De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Usando políticas de senhas em diretórios LDAP

Colaboração: Gabriel Menezes Nunes

Data de Publicação: 21 de Junho de 2006

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!!!

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Gabriel Menezes Nunes