Ajuda do script de expiração da conta LDAP

1

Eu preciso encontrar uma maneira de notificar automaticamente os usuários da conta LDAP sobre quando as senhas irão expirar e também forçá-los a alterar suas senhas. Eu sou relativamente novo no LDAP.Estou executando o openldap 2.3.43.el5 no RHEL 5.3 Eu estou tentando encontrar uma solução (possivelmente em um formulário de script), mas estou aberto a outras soluções experimentadas e testadas.

O que eu pretendo fazer é analisar, filtrar ou formatar a saída da consulta LDAP a partir do comando abaixo (exemplo)

slapcat -b "cn=Manager,dc=berkerly dc=ac dc=uk"

tal que eu recebo uma saída que mostra o usuário cn (nome) e o campo users pwChangedTime do banco de dados LDAP, por exemplo

cn: jbloggs :
pwdChangedTime: 2011078159Z

ou melhor ainda, todos na mesma linha, como

cn: jbloggs :pwdChangedTime: 2011078159Z

Desta forma, eu posso dizer quando as senhas dos usuários foram alteradas pela última vez e, em seguida, com base em nossa política de senhas, funcione quando as senhas dos usuários da conta LDAP expirarem. Com efeito, isso me permitirá descobrir quais senhas vencem em breve a partir de um mini relatório. Eu estou esperando para fazer isso em um script, mas não sei como conseguir isso a partir da saída do comando slapcat.
Existe uma maneira ou comando no LDAP, de listar um usuário cn (nome) e tempo pwdChanged ou outros campos.Eu sou um novato LDAP e eu só estou familiarizado com o comando slapcat que lista todos os usuários LDAP e seus vários campos de atributo i Banco de dados LDAP. Esta saída do slapcat não é fácil para grep e awk para encontrar exatamente o que estou procurando.

Também preciso de confirmação se o campo pwdChangedTime: representa verdadeiramente a data em que a senha desse usuário foi alterada pela última vez.

Por fim, existe uma maneira de forçar os usuários a alterar suas senhas LDAP, como você faz em contas Unix, Linux locais normais.

Sua ajuda seria muito apreciada.

    
por Dominiqs 04.08.2011 / 11:32

3 respostas

1

O próprio OpenLDAP pode ser estendido com sobreposições . Dê uma olhada na sobreposição de Políticas de senha .

Que tipo de aplicativos seus usuários LDAP estão usando?

    
por 04.08.2011 / 11:38
1

Acho que a saída deve ser greppable assim (não testada):

slapcat -b "cn=Manager,dc=berkerly dc=ac dc=uk" | egrep "(cn:|pwdChangedTime)"

isto deve mostrar o cn e o pwdChangedTime para todos os usuários. Como eu faria isso:

1) obtenha uma lista de usuários com o slapcat

2) para cada usuário dessa lista, obtenha o cn e o pwdChangedTime usando o grep acima. Outra opção é usar o perl, que possui um LDAP lib. Com esta lib é fácil obter dados do LDAP.

3) check tire a data do pwdChangedTime var.

Eu não sei se você pode forçar os usuários a mudarem seus dados com o LDAP. Eu acho que há um jeito, só não tenho certeza disso.

espero que meu post seja útil.

P.S .: desculpe, eu não posso postar mais exemplos de código, mas estou no trabalho atm.

    
por 04.08.2011 / 11:48
0

É certamente possível, embora dificilmente aconselhável e definitivamente não escalável, despejar o LDIF para determinar quais senhas dos usuários expirarão e quando. O método que você propõe exige uma varredura completa na tabela do diretório, seguida de alguma disputa de texto para obter tudo em uma linha e assim por diante.

Até onde eu sei, o OpenLDAP suporta os controles de Senha Expirada e Expiração de Senha. Esses controles são retornados do servidor na resposta de ligação. Sua finalidade é informar os clientes sobre o estado da senha de um usuário no que se refere à política de senha. Esses controles estão descritos em VCHU .

O uso desses controles torna os clientes responsáveis pela notificação dos usuários e já são suportados pelos clientes de login do UNIX, por exemplo (embora o cliente Solaris esteja corrompido, consulte este artigo ). Quando o cliente recebe uma resposta de ligação e verifica a presença do controle expirado da senha (se a autenticação não foi bem-sucedida) e o controle de expiração da senha, o cliente pode então tomar a ação apropriada. Os clientes devem sempre verificar se há controles nas respostas LDAP.

A notificação executada pelo cliente é flexível, configurável, dinâmica e escalável. Ter as notificações feitas pelo servidor não é nada disso.

Há outras coisas que podem ser feitas para melhorar a experiência de autenticação, por exemplo, usando um controle de asserção LDAP com um filtro que verifica o pwdChangedTime e condiciona a ligação ao sucesso do filtro.

    
por 05.08.2011 / 13:52