Quando uma conta de computador de domínio está programada para alterar a senha?

Quando uma conta de computador de domínio está programada para alterar a senha?

Entendo que os computadores associados ao domínio têm contas de máquina no AD e essas contas têm senhas que expiram (aparentemente a cada 30 dias por padrão) e essas senhas são alteradas automaticamente sem intervenção do usuário.

Dado que isso causa problemas ao restaurar instantâneos de máquinas virtuais ingressadas no domínio, é possível consultar o computador ou AD ingressado no domínio para determinar quando a próxima senha da conta da máquina será programada para ser alterada?

Responder1

É possível consultar o domínio para isso, o script abaixo informará quando a senha do domínio de uma determinada máquina foi redefinida pela última vez.

'Replace "yourdom.com" with your domain name.
DomainName = "yourdom.com"

querymachine = UCase(inputbox("Enter full machine name"))
lngBias = 2

'****************Setup Log file******************************************************

Set fso = CreateObject("Scripting.FileSystemObject")
'The 8 in this line will append to an existing file, replace with a 2 to override
set txtStream = fso.OpenTextFile("System.txt", 8, True)
txtStream.WriteLine "Ran on " & Date & " *******************************"

'****************Setup ADSI connection and populate ADSI Collection******************

Set objADOconnADSI = CreateObject("ADODB.Connection")
objADOconnADSI.Open "Provider=ADsDSOObject;"
Set objCommandADSI = CreateObject("ADODB.Command")
objCommandADSI.ActiveConnection = objADOconnADSI
'there is a 1000 object default if these next 2 lines are omited.
objCommandADSI.Properties("Size Limit")= 100000
objCommandADSI.Properties("Page Size")= 100000
objCommandADSI.Properties("Sort on") = "sAMAccountName"
objCommandADSI.CommandText = "<LDAP://" & DomainName & ">;(objectClass=computer);sAMAccountName,pwdLastSet,name,distinguishedname,operatingSystem;subtree"
Set objRSADSI = objCommandADSI.Execute

'Loop through record set and compare machine name*************************************

do while NOT objRSADSI.EOF
    if not isnull(objRSADSI.Fields("distinguishedname")) and objRSADSI.Fields("distinguishedname") <> "" then
    objDate = objRSADSI.Fields("PwdLastSet")
    'Go to function to make sense of the PwdLastSet value from AD for the machine account.
    dtmPwdLastSet = Integer8Date(objDate, lngBias)
    'calculate the current age of the password.
    DiffADate = DateDiff("d", dtmPwdLastSet, Now)

    'Is the machine the one we're looking for?
        if UCase(objRSADSI.Fields("name")) = querymachine then
        txtStream.WriteLine objRSADSI.Fields("name") & ";" & dtmPwdLastSet & ";" & DiffADate & ";" & objRSADSI.Fields("operatingSystem") 
        wscript.echo objRSADSI.Fields("name") & ", Last set: " & dtmPwdLastSet & ", Days since last change: " & DiffADate
        end if
    end if
objRSADSI.MoveNext
loop
wscript.echo "Done!"



Function Integer8Date(objDate, lngBias)
' Function to convert Integer8 (64-bit) value to a date, adjusted for
' local time zone bias.
Dim lngAdjust, lngDate, lngHigh, lngLow
lngAdjust = lngBias
lngHigh = objDate.HighPart
lngLow = objdate.LowPart
' Account for bug in IADslargeInteger property methods.
If lngLow < 0 Then
lngHigh = lngHigh + 1
End If
If (lngHigh = 0) And (lngLow = 0) Then
lngAdjust = 0
End If
lngDate = #1/1/1601# + (((lngHigh * (2 ^ 32)) _
+ lngLow) / 600000000 - lngAdjust) / 1440
Integer8Date = CDate(lngDate)
End Function 

(Eu adoraria dar crédito ao script acima, mas ele foi passado de pessoa para pessoa e modificado de várias maneiras, não tenho ideia de onde veio originalmente)

Salve isso como algo como MachinePasswordDate.vbs, clicar duas vezes no arquivo no Windows deve abrir uma caixa na qual você pode colocar um nome de máquina, que deve consultar o domínio e informar quando a senha da máquina foi alterada pela última vez.

Se você restaura regularmente instantâneos de máquinas virtuais, pode valer a pena dar uma olhada nas políticas de segurança dessas máquinas antes de salvar uma imagem. Você pode alterar o intervalo de redefinição de senha da máquina em até 999 dias com bastante facilidade, assumindo que os GPOs do seu domínio não o substituirão e que sua política de segurança permita esse tipo de coisa:

Clique em Iniciar, clique em Executar, digite Gpedit.msc e pressione ENTER.

Expanda Política do Computador Local, Configuração do Computador, expanda Configurações do Windows, expanda Configurações de Segurança, expanda Políticas Locais e, em seguida, expanda Opções de Segurança.

Defina as seguintes configurações:

  • Membro do Domínio: Desativar alterações de senha da conta da máquina (Ativado)

  • Membro do domínio: Duração máxima da senha da conta da máquina (999 dias)

  • Controlador de domínio: recusar alterações de senha da conta da máquina (ativado)

Responder2

No DC ou em qualquer computador com RSAT você pode executardsquery computer -name ComputerName -stalepwd x

ComputerName é o nome do computador que você deseja verificar
x é o número de dias desde a última configuração da senha.

Se a senha não tiver sido definida há x dias, ela retornará o nome e os contêineres do computador. Se a senha tiver sido definida nos últimos x dias, ela não retornará nada.

informação relacionada