Esta semana precisávamos expirar a senha dos usuários aqui da rede AD, mas queríamos dar um prazo de alguns dias para eles não sofrerem tanto com isso. Mas como faremos para definir uma data específica para a expiração das senhas dos usuários no AD? Como expirar as senhas de diferentes contas ao mesmo tempo?
Como as Senhas Expiram?
Senhas expiram após um determinado período de tempo a partir da data de criação ou alteração da mesma. Por exemplo: A equipe de segurança decide que a partir de hoje as senhas dos usuários devem ser alteradas a cada 30 dias. O usuário que alterar sua senha hoje só será solicitado a troca-la daqui a 30 dias. Porém, o usuário que alterou sua senha semana passada, isto é, a 7 dias atrás, deverá altera-la novamente daqui a 23 dias. Usuários que alteraram sua senha a mais de 30 dias já serão solicitados a altera-la ainda hoje pois sua senha já expirou.
Desta forma fica impossível que o servidor solicite a troca da senha de todos os usuários ao mesmo tempo, afinal, cada conta teve sua senha alterada em diferentes datas. Precisamos então alterar a data de criação ou modificação da senha dos usuários para uma mesma data, e assim as senhas expirariam ao mesmo tempo
Como podemos alterar esta data?
Alterando o valor do atributo
pwdLastSet na conta do usuário. Este atributo armazena a data em que a senha da conta foi criada ou modificada, porém só podemos utilizar os valores
0 ou
-1. Não é possível alterar o campo para outro mesmo que este represente uma data e hora.
O valor
0 zera a data de alteração da senha, definido o valor do campo como "(nunca)". Então, só após a alteração da senha será definida a data de modificação pelo próprio sistema ao atributo
pwdLastSet.
O valor
-1 corresponde ao maior inteiro permitido a um atributo de 64-bit, 2^63-1. Isto fará com que o sistema preencha o atributo
pwdLastSet com a data e hora atual.
Solução
Podemos alterar o atributo
pwdLastSet das contas através do Console de Gerenciamento de Usuários e Computadores do Active Directory, ou via Power Shell Script.
Alterando via Console de Gerenciamento
1. Abra o Console de Gerenciamento de Usuários e Computadores do Active Directory e ative a opção
Recursos Avançados (
Advanced Features).
2. Abra as
Propriedades de uma conta de usuário e clique na aba
Editor de Atributos (
Attribute Editor).
3. Desça até o atributo
pwdLastSet, selecione-o e clique em
Editar.
4. Altere o valor do campo para
0 (zero) e clique em
OK.
5. Note que agora o valor do atributo é "(nunca)". Clique em
OK novamente para confirmar e fechar a janela de
Propriedades.
6. Abra novamente as
Propriedades da conta, selecione a aba
Editar Atributos e edite o campo
pwdLastSet.
7. Altere o valor para
-1, clique em
OK para confirmar o valor e em
OK novamente para fechar a janela de
Propriedades.
8. Esta feito! Agora o valor do atributo
pwdLastSet é a data a atual. Para conferir abra as
Propriedades da conta, selecione a aba
Editar Atributos e localize o campo
pwdLastSet.
Alterando via PowerShell Script
1. Abra o console
PowerShell e importe o módulo ActiveDirectory para carregar os cmdlets para esta sessão.
Import-Module ActiveDirectory
2. Execute o comando abaixo, substituindo a palavra
nomedeusuario pelo SamAccountName da conta, para carregar o atributo
pwdLastSet em uma variável.
$User = Get-ADUser nomedeusuario -properties pwdlastset
3. Defina o valor do atributo como
0 (zero) e confirme a alteração.
$User.pwdlastset = 0
Set-ADUser -Instance $User
4. Em seguida defina o valor para
-1 e confirme a alteração.
$user.pwdlastset = -1
Set-ADUser -instance $User
5. Esta feito! Agora o valor do atributo
pwdLastSet é a data a atual. Para conferir, execute os comandos abaixo, substituindo a palavra
nomedeusuario pelo SamAccountName da conta:
$user = Get-ADUser nomedeusuario -Properties pwdlastset
Get-Date($user.pwdlastset)
Estas e outras dicas aqui no IT Way of Life.
Gostou? Compartilhe!