Безопасный и автоматический сброс пароля с помощью команды PowerShell

Приведенный ниже сценарий PowerShell можно использовать для автоматического сброса паролей через регулярные промежутки времени. ADSelfService Plus также предлагает функцию, которую можно использовать для автоматического сброса паролей пользователей домена по истечении срока их действия. Если эта функция включена, планировщик запускается через регулярные интервалы времени для поиска учетных записей пользователей с истекшим сроком действия паролей и автоматически сбрасывает пароли. Затем всем пользователям отправляются новые пароли. Ниже приведено сравнение автоматического сброса пароля с помощью PowerShell и ADSelfService Plus:

PowerShell ADSelfService Plus
Param ( [Parameter(Mandatory=$True)] [String]$InputFile ) Function MakeRandomPass { Param ( [Int]$PLength ) If ($PLength -LT 4) {Return $Null} $Numbers = $Null For ($A=48;$A -LE 57;$A++) {$Numbers+=,[Char][Byte]$A} $UpCase = $Null For ($A=65;$A -LE 90;$A++) {$UpCase+=,[Char][Byte]$A} $LowCase = $Null For ($A=97;$A -LE 122;$A++) {$LowCase+=,[Char][Byte]$A} $SpChar = $Null For ($A=33;$A -LE 47;$A++) {$SpChar+=,[Char][Byte]$A} For ($A=58;$A -LE 64;$A++) {$SpChar+=,[Char][Byte]$A} For ($A=123;$A -LE 126;$A++) {$SpChar+=,[Char][Byte]$A} $Buffer = @() For ($A=1;$A -LE $PLength;$A++) {$Buffer+=0} While ($True) { $NumChar = (Get-Random -Minimum 0 -Maximum $PLength) If ($Buffer[$NumChar] -EQ 0) {$Buffer[$NumChar] = 1; break} } While ($True) { $NumChar = (Get-Random -Minimum 0 -Maximum $PLength) If ($Buffer[$NumChar] -EQ 0) {$Buffer[$NumChar] = 2; break} } While ($True) { $NumChar = (Get-Random -Minimum 0 -Maximum $PLength) If ($Buffer[$NumChar] -EQ 0) {$Buffer[$NumChar] = 3; break} } While ($True) { $NumChar = (Get-Random -Minimum 0 -Maximum $PLength) If ($Buffer[$NumChar] -EQ 0) {$Buffer[$NumChar] = 4; break} } $ThisPassword = $Null ForEach ($CharType In $Buffer) { If ($CharType -EQ 0) { $CharType = ((1,2,3,4) | Get-Random) } Switch ($CharType) { 1 {$ThisPassword+=($Numbers | Get-Random)} 2 {$ThisPassword+=($UpCase | Get-Random)} 3 {$ThisPassword+=($LowCase | Get-Random)} 4 {$ThisPassword+=($SpChar | Get-Random)} } } Return $ThisPassword } $ErrorActionPreference = "SilentlyContinue" $T = Get-Date If ($Error) {$Error.Clear()} Write-Host "`n" Write-Host "Working. Please wait" Write-Host "`n" $RepFile = $T -Replace " ", $Null $RepFile = $RepFile -Replace ":", $Null $RepFile = $RepFile -Replace "/", $Null $RepFile = $RepFile -Replace "-", $Null If (Test-Path "Report_$RepFile.txt") { Remove-Item "Report_$RepFile.txt" } New-Item -Path "Report_$RepFile.txt" -Type File -Force -Value "REPORT: Reset Local User Account Password On Multiple Computers" | Out-Null Add-Content "Report_$RepFile.txt" "`n" Add-Content "Report_$RepFile.txt" "`n" Add-Content "Report_$RepFile.txt" "Report Created On $T" Add-Content "Report_$RepFile.txt" Add-Content "Report_$RepFile.txt" "`n" Import-CSV -Path $InputFile | ForEach-Object { Try { $ThisMachine = $_.ComputerName $ThisAccount = $_.LocalAccountLoginID If (!([string]::IsNullOrEmpty($ThisMachine)) -AND !([string]::IsNullOrEmpty($ThisAccount))) { Write-Host "`tAttempting to reset the local account password in computer: $ThisMachine" -ForeGroundColor "Yellow" $PassToSet = MakeRandomPass 20 $ThisUser = [ADSI]"WinNT://$ThisMachine/$ThisAccount, User" $ThisUser.SetPassword($PassToSet) $ThisUser.SetInfo() If (!$Error) { Add-Content "Report_$RepFile.txt" "$ThisMachine `t`t -- $ThisAccount `t`t -- $PassToSet `t`t --success: Password Has Been Reset/Changed." } } } Catch { [System.Exception] | Out-Null If ($Error) { Add-Content "Report_$RepFile.txt" "$ThisMachine `t`t -- $ThisAccount `t`t -- Password Reset has failed. An Error Has Occurred." Add-Content "Report_$RepFile.txt" $Error $Error.Clear() } } } Write-Host "`n" Write-Host "Task Completed. Check Report File: Report_$RepFile.txt" Notepad "Report_$RepFile.txt" Write-Host "`n"

В ADSelfService Plus:

  • Перейдите в раздел Конфигурация > Конфигурация политики.
  • Создайте новую политику.
  • После того как вы предоставите информацию, необходимую для создания политики, нажмите Дополнительно, перейдите на вкладку Автоматизация и установите флажок "Автоматически сбрасывать пароли пользователей домена по истечении срока их действия".
  • Укажите частоту , с которой должен запускаться планировщик.
  • При необходимости установите флажок Требовать изменения пароля при следующем входе в систему после автоматического сброса.
  • В поле "Сбросить пароль" можно выбрать Пользовательский текст или Политика паролей (случайный пароль, сгенерированный на основе настраиваемой политики паролей).
  • Перейдите в раздел Уведомление > Сброс пароля и введите необходимые данные, чтобы уведомить пользователей о сбросе их паролей.
  • Нажмите кнопку ОК, а затем в разделе "Конфигурация политики" нажмите кнопку Сохранить.

Преимущества ADSelfService Plus

  • Быстрая настройка.

    С помощью ADSelfService Plus можно включить автоматический сброс пароля несколькими щелчками мышью и ввести минимум информации. В PowerShell для этого требуется создание, отладка и запуск скриптов.

  • Выбор пользователей для автоматического сброса паролей.

    При создании политики ADSelfService администраторы могут выбрать домен, подразделения и группы в организации, пароли пользователей которых могут быть автоматически сброшены по истечении срока действия. Использование PowerShell для автоматизации сброса паролей определенных пользователей потребует создания обширного сценария и управления им

  • Предотвращение создания ненадежных паролей.

    Средство принудительного применения политики паролей ADSelfService Plus позволяет администраторам создавать и применять настраиваемые политики паролей, которые препятствуют созданию ненадежных паролей. В соответствии с этой настраиваемой политикой паролей можно выбирать пароли, сгенерированные автоматически.

  • Синхронизация паролей между корпоративными приложениями.

    Функция синхронизации паролей ADSelfService Plus при включении автоматически синхронизирует новый пароль с учетными записями пользователя в корпоративных приложениях, таких как G Suite и Salesforce.

  • Отчет об аудите сброса паролей.

    Все операции по сбросу паролей, включая автоматические сбросы паролей, фиксируются в отчетах, которые можно с легкостью создать одним щелчком мыши и экспортировать в различные форматы, такие как HTML, CSV, PDF и XLS.

  • Уведомление администраторов.

    Администраторам периодически отправляется сводный отчет, содержащий подробную информацию обо всех операциях по сбросу паролей.

Автоматический сброс паролей пользователей Active Directory.