Como lembrar os usuários para mudarem suas senhas antes de expirarem
Solução Nativa vs. Netwrix Auditor for Active Directory
Netwrix Auditor for Active Directory
- Execute o Netwrix Password Expiration Notifier → Selecione o seu domínio → Clique em “Editar” → Clique em “Ativar alerta de expiração de senha” → Clique em “Salvar”.
Netwrix Auditor enviará automaticamente um e-mail de notificação de expiração de senha do Active Directory para cada proprietário de conta cuja senha está prestes a expirar.
Auditoria Nativa
- Copie, modifique e salve o seguinte script usando o PowerShell ISE:
#requires -module ActiveDirectory
<#
.SYNOPSIS
Script will scan Active Directory for accounts with expiring passwords
.DESCRIPTION
Script will scan Active Directory for accounts with expiring passwords and will send customized email to users
.PARAMETER Domain
.PARAMETER specifies which domain search will be performed against
.PARAMETER Cred
The PS credential to use to query AD (if not using the logged in credential)
.PARAMETER SearchBase
The OU path to search for user accounts in
.PARAMETER PasswordExpirationThreshold
Specifies accounts where this value exceeded will be emailed
.PARAMETER Subject
Which subject shall be put into email
.PARAMETER From
Which address shall be used as a FROM field in Email
.PARAMETER EmailServerAddress
SMTP relay address
.PARAMETER FailoverEmail
Emails address where all errors will be sent to
.PARAMETER LogFilePath
The path to where the informational log file is generated by this script.
#>
[CmdletBinding()]
Param(
[string]$Domain = $env:USERDNSDOMAIN,
[PSCredential]$cred,
[string]$SearchBase,
[string]$UserSearchString = '*',
[int]$PasswordExpirationThreshold = 14,
[string]$Subject = "Password Expiration Notification",
[string]$From = "J.Carter@enterprise.com",
[string]$EmailServerAddress = "mail.enterprise.com",
[string]$FailoverEmail = "J.Carter@enterprise.com",
[string]$LogFilePath = 'D:\Temp\ServiceAccountExpirations.log'
)
begin {
function Write-Log($Message) {
$MyDateTime = Get-Date -Format 'MM-dd-yyyy H:mm:ss'
Add-Content -Path $LogFilePath -Value "$MyDateTime - $Message"
}
try {
$MaxPasswordAge = (Get-ADDefaultDomainPasswordPolicy -Server $Domain).MaxPasswordAge.Days
Write-Log -Message "The max password age for the $Domain domain is $MaxPasswordAge"
if ($PasswordExpirationThreshold -gt $MaxPasswordAge) {
throw "The value '$PasswordExpirationThreshold' specified as the password expiration threshold is greater than the max password age for the domain" }
[string]$EmailTemplate = @'
<html> <body> <font SIZE="6" COLOR="#ff0000"> <p ALIGN="CENTER" style='font-size:20.0pt;font-family:"Times New Roman";color:#CC0000;mso-bidi-font-weight: bold'>Password Expiration Notice</p> </font><font style='font-size:14.0pt;font-family:"Times New Roman";color:#1C1C1C;mso-bidi-font-weight:bold'> <p>Dear $FirstName $LastName,</p> <p>Your password in <U> $domain </U> domain will expire in $DaysBeforeExpiration days. Please change it as soon as possible to make sure your account does not get locked out. To change your password press CTRL+ALT+DEL and select "Change Password". </p> <p>Please review the guidelines below as they are necessary for successfully updating your password.</p> <p>PASSWORD MUST:</p> <dir> <p>Be at least 8 total characters</p> <p>Contain at least one uppercase character</p> <p>Contain at least one numeral</p> <p>Not be the same or similar to the last 5 used passwords</p> <p>Be used for at least 24 hours before changing again</p> </dir> <p></p> <p>If you enter an incorrect password 5 or more times, your account will be locked and you will need to contact the Help Desk for assistance. </p> </font><font SIZE="4" style='font-size:13.0pt;font-family:"Times New Roman";color:#CC0000'> <p ALIGN="CENTER">*** Please do not respond to this e-mail. <BR>Direct any questions or concerns regarding this issue to the IT Help Desk. <BR> For information on how to contact the Help Desk, please visit </font> <a HREF="http://helpdesk.enterprise.com"> <font SIZE="4" COLOR="#0000ff"><u> http://helpdesk.enterprise.com/ </u></font> </dir> </font></b> </body> </html>
'@
} catch {
Write-Log -Message $_.Exception.Message
exit
}
}
process {
try {
$GetAdUserParams = @{
'Filter' = { (Enabled -eq $True) -and (PasswordNeverExpires -eq $false) -and (samAccountName -like $UserSearchString)}
'Properties' = 'PasswordLastSet', 'PasswordExpired', 'PasswordNeverExpires','EmailAddress'
}
if ($SearchBase) {
$GetAdUserParams.SearchBase = $SearchBase
}
if ($Cred) {
$GetAdUserParams.Credential = $cred
}
$Today = Get-Date
$Users = Get-ADUser @GetAdUserParams | Where-Object { $_.PasswordLastSet -and !$_.PasswordExpired }
Write-Log -Message "Found '$($Users.Count)' total expirable AD user accounts"
$ExpiringUsers = [System.Collections.ArrayList]@()
foreach ($User in $Users) {
$UserPwdExpireDate = $User.PasswordLastSet.AddDays($MaxPasswordAge)
$DaysUntilExpire = ($UserPwdExpireDate - $Today).Days
$FirstName = $User.GivenName
$LastName = $User.Surname
if ($DaysUntilExpire -le $PasswordExpirationThreshold) {
Write-Log -Message "The user $($User.samAccountName)'s password will expire in $DaysUntilExpire days"
$EmailBody = $EmailTemplate.Replace('$FirstName', $FirstName).Replace('$LastName', $LastName).Replace('$DaysBeforeExpiration', $DaysUntilExpire).Replace('$domain', $Domain)
Send-MailMessage -To $User.EmailAddress -From $From -Subject $Subject -BodyAsHtml $EmailBody -SmtpServer $EmailServerAddress -Priority High -UseSsl
$ExpiringUsers.Add($User) | Out-Null
}
}
Write-Log -Message "'$($ExpiringUsers.Count)' accounts found with expiring passwords within $PasswordExpirationThreshold days"
} catch {
Write-Log -Message "$($_.Exception.Message) - $($_.InvocationInfo.ScriptLineNumber)"
}
}
- Automatize a execução de scripts com o Task Scheduler.
Saiba mais sobre Netwrix Auditor for Active Directory
Lembre os usuários de alterar suas senhas para maximizar a produtividade do usuário e reduzir a carga de trabalho do helpdesk
Muitas melhores práticas exigem a mudança regular de senha para reforçar a segurança dos dados corporativos e sistemas críticos contra ameaças internas e externas. Mas se os usuários ignoram as notificações para mudar suas senhas, ou não as recebem de todo – por exemplo, se trabalham remotamente — eles devem esperar que os administradores do helpdesk redefinam suas senhas expiradas, prejudicando a produtividade de todos. Para minimizar a carga de trabalho do helpdesk enquanto mantém uma política de segurança de senha forte, os profissionais de TI precisam de uma maneira mais eficiente de notificar seus usuários sobre a expiração da senha.
Netwrix Auditor for Active Directory possibilita que profissionais de TI obtenham visibilidade completa sobre o que está acontecendo no Active Directory e na Política de Grupo. Ele também pode enviar e-mails de notificação que lembram os usuários de alterar suas senhas antes que expirem; administradores de TI podem até personalizar os alertas para especificar o número exato de dias restantes antes da expiração da senha. Além disso, administradores de TI recebem relatórios resumidos mostrando quais contas de usuários estão com senhas prestes a expirar. Esses alertas e relatórios permitem que profissionais de TI aprimorem a segurança sem sacrificar a produtividade dos usuários ou do suporte técnico.
Compartilhar em