Aqui falaremos sobre uma solução eficiente para garantir a autonomia de algumas rotinas no AD de forma segura. O PWM permite uma série de funções (criar usuário, trocar a própria senha, etc.) usaremos aqui o exemplo de criar um portal self-service para um colaborador trocar uma senha esquecida de forma segura.

Um exemplo rápido para demostrar a segurança do PWM é que nele é possível criar um fluxo com diversas opções de pré autenticação, tais como:

  • Responder algumas informações existentes no seu usuário AD, como CPF ou matrícula;
  • Ter que responder perguntas do tipo “Qual o nome do seu animal de estimação?“;
  • Receber em um e-mail alternativo (já cadastrado no AD ou banco de dados) um código de liberação e ter que informar este código no PWM;
  • Receber um SMS com um código de liberação e ter que informar este código no PWM;

É possível escolher quais métodos (mais de um, inclusive) e qual ordem será seguida para garantir que a pessoa é quem diz antes de poder efetuar uma ação.

Em alguns momentos será necessário informar o DN (distinguished name) de algum objeto do AD, para saber o DN de um objeto leia aqui ou consulte as referências abaixo. Neste post iremos usar uma conta de serviço que seja do grupo Domain Admins, mas num ambiente de produção deve ser uma conta criada exclusivamente para isso e com delegações para fazer apenas o necessário e nas OUs necessárias.

Para habilitar a troca de senha é necessário que o Active Directory tenha suporte a LDAPs, para verificar se existe abra o aplicativo LDP.exe e tente a conexão SSL no servidor LDAP. Se a resposta for Fail to connect… significa que é necessário habilitar (se precisar, leia aqui ou nas referências abaixo um exemplo simples que usamos apenas para laboratório).

Além de todos os requisitos, será necessário um servidor de aplicação TomCat e um servidor de Banco de Dados MySQL (em nosso caso, usaremos um único servidor Ubuntu com ambos os serviços, para demonstração).

Instale o servidor MySQL (caso precise de ajuda, leia nosso post sobre isso), com o MySQL Server já instalado execute os seguintes comandos:

/usr/sbin/useradd -m -s /bin/bash pwm
mysql -u root -p

Insira a senha do root do MySQL (configurada durante a instalação do MySQL Server), dentro da console SQL digite:

create database pwm;
grant all privileges on pwm.* to pwm@localhost;
exit;

De volta ao bash Linux, execute:

apt-get install tomcat7 -y

cd /var/lib/tomcat7/webapps
wget http://pwm.googlecode.com/files/pwm_v1.7.0.zip

unzip pwm_v1.7.0.zip
rm -rf pwm_v1.7.0.zip
rm -rf ROOT

cd /tmp
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-
5.1.31.tar.gz

tar xpzf mysql-connector-java-5.1.31.tar.gz

mv mysql-connector-java-5.1.31/mysql-connector-java-5.1.31-bin.jar /var/lib/tomcat7/webapps/pwm/WEB-INF/lib/

/etc/init.d/tomcat7 restart

Em um desktop, abra o site http://<IP_SERVIDOR_PWM>:8080/pwm e clique em Manual Configuration (clique em OK na tela de confirmação). Na tela inicial do PWM clique em Configuration Manager.

Na tela seguinte clique no botão Configuration Editor. Em seguida clique no menu Template e escolha Active Directory – Store Response in a Database (clique em OK para confirmar). Agora clique no menu Settings, escolha escolha LDAP Directory e deixe configurado da seguinte forma (conforme figura abaixo):

  • LDAP URLs: ldaps://AD_LDAPS:636, altere AD_LDAPS pelo nome DNS do servidor que foi instalado o certificado digital.
  • LDAP Promiscuous SSL (Advanced): Enable
  • LDAP Proxy User: DN da conta membro do domain admin
  • LDAP Proxy Password: Clique em Store Password e insira a senha da conta usada
  • LDAP Contextless Login Roots: DN da OU da Empresa
  • LDAP Test User: DN de conta de teste (o PWM ficará trocando a senha para testar)
  • Administrator Query String: insira (groupMembership=CAMINHO_DN), altere CAMINHO_DN pelo DN do grupo de adminsitratores do pwm (crie um grupo para isso).

Depois, clique no menu Actions e escolha Save (clique em OK para confirmar). De volta à tela inicial do PWM clique novamente em Configuration Manager e depois no botão Configuration Editor. Clique no menu Actions e escolha Import LDAP Server Certificates, na tela seguinte clique em OK. Ainda no Configuration Editor, clique no menu View e marque Advanced Settings. Agora clique no menu Settings e clique em General, e configure o seguinte:

  • No item Site URL informe o site do PWM;
  • Em Known Locales (Advanced) apague todos os locais e adicione apenas pt::br,
  • Desmarque as opções avançadas (Advanced Settings) e clique no menu Actions e clique em Save (e clique em OK para confirmar).

De volta à tela inicial do PWM clique novamente em Configuration Manager e depois no botão Configuration Editor. Clique no menu Settings e clique em Password Policy. Configure de acordo com a política da empresa (tamanho mínimo da senha, máximo etc.), depois clique no menu Settings e clique em Challenge Policy, desmarque a opção Enable Setup Responses. Agora clique no menu Modules e clique em Forgotten Password, configure da seguinte forma (conforme figura abaixo):

  • Enable Forgotten Password: Marcado
  • Forgotten Password User Search Form: Apague tudo e crie conforme a tabela abaixo:
NameLabelTypeRequiredMinimum LengthMaximum Length
samaccountnameLogintextMarque430
postofficeboxMatriculanumberMarque47
streetaddressCPFnumberMarque1111
  • Forgotten Password User Search Filter: (&(objectClass=person)(samaccountname=%samaccountname%)(postofficebox=%postofficebox%)(streetaddress=%streetaddress%))
  • Response Storage Attribute: Deixe em branco
  • Allow Unlock: Desmarcado
  • Require Responses: Desmarcado
  • Token Send Method: Email Only – Send toe mail address
  • Forgotten Password Success Action: Send new password

Clique no menu Actions, clique em Save e clique em OK para confirmar. No Configuration Manager clique no menu Settings, clique em E-mail, configure de acordo com o servidor de E-mails de sua empresa e depois salve. No Configuration Manager clique no menu Settings, clique em Database, configure da seguinte forma (conforme figura abaixo):

  • Database Class:mysql.jdbc.Driver
  • Database Connection String: jdbc:mysql://localhost:3306/pwm
  • Database Username: pwm

No Configuration Manager clique no menu Settings, clique em Challenge Policy, desmarque as opções Enable Setup Responses e Force Response Setup. Feito isso clique no menu Actions e clique em Save (e clique em OK para confirmar). Para finalizar, no Configuration Manager clique no menu Actions, clique em Set Configuration Password. Digite (e confirme) a senha e clique em Store Password e salve esta configuração. Na tela inicial do PWM, faça logon com um usuário administrador (membro do grupo Admins. PWM), entre em Administration, System e clique em Close Configuration.

Para acessar o site do PWM (na sessão de troca de senha), acesse

http://SEU_SERVIDOR_PWM:8080/pwm/public/ForgottenPassword?locale=pt

Fontes/Referências

NVLAN – Como obter o Distinguished Name (DN) no Active Directory
NVLAN – Habilitando o LDAPs no Active Directory


http://www.serveradventures.com/the-adventures/installing-pwm-open-source-password-self-service-for-ldap

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.