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.
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!!!
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários