come posso configurare la directory triggers per far passare le password a mezzanotte?

Quando un utente cambia la password, è tipicamente durante il giorno. Ciò significa che una data di scadenza della password impostata all'ultima modifica + n giorni comporterà la scadenza della password durante il giorno. Come posso forzare le password per scadere invece a mezzanotte di quel giorno?

  • Server 2008 DC che rigetta le richieste di replica
  • Come forzare la replica di directory triggers da una CC all'altra
  • Creare automaticamente l'amministratore locale utente sul proprio computer tramite GPO?
  • Utilizzo di Active Directory tramite un firewall
  • U2F (YubiKey, ecc.) E Active Directory
  • Come modificare la password di dominio dell'utente corrente senza essere amministratore di dominio?
  • 3 Solutions collect form web for “come posso configurare la directory triggers per far passare le password a mezzanotte?”

    Non credo che sia ansible senza modificare manualmente l'attributo PwdLastSet all'interno di ADSI Edit, che non mi piacerebbe fare.

    Il valore viene memorizzato in intervalli di 100 nanosecondi dal 1 ora 16 gennaio 1601. Tuttavia le tue uniche opzioni per modificare l'attributo sono impostarla a 0 (la password è ora scaduta e l'utente deve reimpostare) oppure -1 (valore per PwdLastSet viene cambiato nella data / ora corrente).

    Come indicato nei commenti, è necessario impostare prima il valore su 0 , quindi impostarlo a -1 .

    Potresti scrivere uno script per aggiornare l'attributo a -1 a mezzanotte in un determinato giorno per tutti gli utenti. Tuttavia, ciò avrebbe impostato tutte le password dell'utente per la scadenza di @ mezzanotte in N giorni (N è l'impostazione dell'età massima della password del dominio di dominio). Questo potrebbe potenzialmente estendere l'età massima di una password.

    Qual è il tuo objective nell'impostazione della password per scadere a mezzanotte?

    Windows non support semplicemente il concetto di "password di scadenza" che si applica a livello globale. Inoltre, non è ansible impostare l'ora, ad exception di dire che è scaduto adesso o che è stato appena modificato. Tuttavia, è ansible scrivere uno script utilizzando gli strumenti AD-row o powershell che si eseguono each giorno: può richiedere l'accesso AD per gli utenti con password per scadere in less di 24 ore (pwdLastSet è più vecchio di un giorno inferiore alla tua età massima password giorni) e impostarlo a -1 (la password è scaduta). Ciò eviterà l'estensione involontaria della password e anche la scadenza della password di mezzogiorno.

    Ci sono anche strumenti di terze parti che possono fare questo tipo di cose per te. Ad esempio, una caratteristica di Hitachi ID Password Manager ti consente di aprire un browser web in cui l'utente deve cambiare la propria password o altrimenti essere disconnesso e puoi impostare questo per un numero arbitrario di giorni prima della scadenza effettiva .

    È ansible eseguire uno script each giorno a mezzanotte e se la password è impostata per scadere durante il giorno successivo, si forza la scadenza.

    Un po ' qui illustrato

    Mai testato in VBS;

     Const SEC_IN_DAY = 86400 Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 Const ADS_SCOPE_SUBTREE = 1000 dim strname dim strdist dim dtmvalue on error resume next Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.CommandText = "SELECT distinguishedName, profilepath, name from 'LDAP://dc=Example,dc=com' where objectCategory = 'User'" Set objuserRecordSet = objCommand.Execute objUSerRecordSet.MoveFirst Do Until objuserRecordSet.EOF strdist = objuserRecordSet.Fields("distinguishedName").Value strname = objuserRecordSet.Fields("name").Value Set objUserLDAP = GetObject _ ("LDAP://" & strdist) intCurrentValue = objUserLDAP.Get("userAccountControl") dtmValue = objUserLDAP.PasswordLastChanged If intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then x = "The password does not expire." Else Set objDomainNT = GetObject("WinNT://escc.gov.uk") intMaxPwdAge = objDomainNT.Get("MaxPasswordAge") If intMaxPwdAge < 0 Then x = "Password does not expire" Else intMaxPwdAge=intMaxPwdAge/86400 strold = ((dtmValue + intMaxPwdAge)-now) if strold < 2 and strold > 0 then objUserLDAP.pwdLastSet = 0 objUserLDAP.SetInfo end if end if End If dtmValue= "" objuserrecordset.movenext Loop 

    Oppure per un esempio di powerhell:

     # This PowerShell Script will query Active Directory and return the user accounts with passwords # set to expire before the end of the next day, export a list of the affected accounts, and require # a password change at the next logon. The script is configured to ingore accounts which have been # configured with passwords that never expire, and to ignore accounts who do not have permission to # change their own password. Any other account would be affected, so be warned before running this # script, as you could experience unintended consequences. Either modify the script to reduce the # scope of user accounts, or ensure that accounts that shouldn't be affected are either flaged with # a non-expiring password or are flagged with "cannot change password. When ready to run/schedule # in production, remove the -WhatIf from the last line. # # - MWT, 10/11/13 # The 89 is based upon your environment. If passwords expire every X (90) days, and you run the script # in the early morning, you can set it to -1*(X-1) (-89), if you run the script late at night, set it to # -1*(X-2) (-88). Import-Module ActiveDirectory # Required for PowerShell 2.0 only $a = (Get-Date).Date.AddDays(-89) # The following line will build the variable based upon the noted criteria $b = Get-ADUser -Property Name,SamAccountName,PasswordLastSet,CannotChangePassword,PasswordNeverExpires -Filter {(PasswordLastSet -lt $a) -and (PasswordNeverExpires -eq $false)} | Where-Object {$_.CannotChangePassword -eq $false} # The following line will display/export the data logging the accounts to be changed; please note the # Out-File path and change to suit your needs. $b | Format-Table Name,PasswordLastSet,CannotChangePassword,PasswordNeverExpires -AutoSize | Out-File -FilePath C:\passwordchanges.txt # The following line will actually flag the accounts to require a password change (after -WhatIf is removed) $b.SamAccountName | ForEach-Object {Set-ADUser -Identity $_ -ChangePasswordAtLogon $true -WhatIf} 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.