Изменить (сбросить) пароль пользователя Active Directory из ADUC и PowerShell

Доменные пользователи могут самостоятельно изменить свой пароль после входа в систему через меню Windows Security, или на экране входа в Windows, если срок действия пароля пользователя истек. Если же пользователь забыл свой пароль, или его аккаунт был скомпрометирован, сбросить (изменить) пароль пользователя может администратор домена или член группы Account Operators. В этой сатье мы рассмотрим основные инструменты, которую позволяют сбросить пароль пользователя Active Directory.

Изменить пароль пользователя домена из графической консоли Active Directory

Для сброса паролей пользователей домена можно использовать графическую оснастку Active Directory Users & Computers (ADUC). Это самый простой и интуитивно понятный инструмент для принудительной смены пароля доменного пользователя.

  1. Откройте оснастку dsa.msc
  2. Воспользуйтесь поиском в консоли ADUC и найдите учетную запись пользователя, которому нужно изменить пароль.
  3. Щелкните по аккаунту правой кнопкой и выберите пункт Смена пароля (Reset password) .

консоль active directory users and computers изменить пароль пользователя

Задайте новый пароль (дважды). Здесь можно включить две опции:

задать новый пароль для пользователя домена

В свойствах пользователя на вкладке редактора атрибутов AD вы можете найти информацию о дате последней смены пароля. Это значение хранится в атрибуте пользователя pwdLastSet.

атрибут pwdLastSet пользователя AD

Для сброса пароля ваша учетной запись должна обладать соответствующими правами. По-умолчанию обычные пользователи AD не могут сбросить пароль других аккаунтов. Такие права есть только у учетных записей с правами администратора домена (Domain Admins), или Account Operators. Вы можете предоставить другим группам пользователям право на сброс паролей в определенных OU с помощью делегирования. По ссылке доступен пример делегирования прав на сброс паролей и разблокировку пользователей группе HelpDesk.

Чтобы проверить, что у вашей учетной записи есть право на сброс пароля определенного пользователя, откройте его свойства в консоли ADUC, перейдите на вкладку Security -> Advanced -> Effective Access -> укажите имя своей учетной записи -> убедитесь, что у вас есть разрешение Reset Password.

Active Directory эффективные разрешения на сброс пароля пользователяeffektivnie_rasresheniya_reset_password

Сценарий сброса пароля доменного администратора, если он был забыт/утрачен.

Сброс пароля пользователя Active Directory с помощью PowerShell

Для сброса пароля доменного пользователя можно использовать PowerShell команды Set-ADAccountPassword. Для использования этой команды на компьютере должен быть установлен модуль Active Directory для Windows PowerShell (в десктопых версиях Windows он входит в состав RSAT, а в серверных редакциях устанавливается в виде отдельного компонента AD DS Snap-Ins and Command-Line Tools).

Чтобы сбросить пароль для пользователя dakimov и установить новый пароль SuperStr0n@p1, выполните команду:

Set-ADAccountPassword dakimov -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "SuperStr0n@p1" -Force -Verbose) –PassThru

Set-ADAccountPassword сброс пароля в Active Directory из Powershell

Для генерации случайных сложных паролей в PowerShell можно использовать метод GeneratePassword.

По умолчанию командлет возвращает объект и ничего не отображает в консоли. Чтобы вывести информацию об объекте пользователя в AD мы добавили параметр -PassThru.

В качестве имени пользователя можно указать sAMAccountName (как в нашем случае), objectGUID, SID пользователя, или его DN (Distinguished Name, например CN=Akimov,OU=Users,DC=winitpro,DC=ru ).

Если при смене пароля пользователя не указывать параметр -Reset, придется сначала ввести старый учетной записи.

Примечание. Если новый пароль соответствует требованиям сложности и длины, заданным в доменной политике паролей или гранулированной политике паролей, при сбросе появится ошибка:

Set-ADAccountPassword : The password does not meet the length, complexity, or history requirement of the domain.

Если у вас включено ведение истории PowerShell команд, и вы не хотите, чтобы пароли в открытом виде сохранялись в сессии PoSh, пароль как и при создании пользователя нужно преобразовать в безопасную строку (подробнее о защите паролей в скриптах PowerShell здесь):

$NewPasswd=Read-Host "Введите новый пароль пользователя" –AsSecureString

задать новый пароль пользователя в ad из powershell

Теперь можно задать новый пароль пользователю:

Set-ADAccountPassword dakimov -Reset –NewPassword $NewPasswd –PassThru

Несколько дополнительных полезных команд, которые часто используются при сбросе пароля:

  • Принудительно разблокировать пользователя в AD: Unlock-ADAccount –Identity dakimov
  • Потребовать от пользователя сменить заданный ему временный пароль при следующем входе (включить атрибут userAccountControl ChangePasswordAtLogon): Set-ADUser -Identity dakimov -ChangePasswordAtLogon $true

Убедитесь, что пароль пользователя был изменен, выведя с помощью Get-ADUser время последней смены пароля:

Get-ADUser dakimov -Properties * | select name, pass*

Get-ADUser время последней смены пароля

Вывести дату, когда истекает пароль пользователя:

Get-ADUser -Identity dakimov -Properties msDS-UserPasswordExpiryTimeComputed | select-object @{Name="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") }}

Get-ADUser срок действия пароля

Продлить срок действия текущего пароля в домене можно так.

PowerShell скрипт для сброса пароля нескольких пользователей в AD

Иногда администратору нужно одновременно сменить/сбросить пароль сразу нескольким доменным пользователем.

Например, следующая команда установит одинаковый пароль все сотрудникам департамента Sales и включит требование сменить пароль при входе:

get-aduser -filter "department -eq 'Sales Dept' -AND enabled -eq 'True'" | Set-ADAccountPassword -NewPassword $NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $True

Можно реализовать другой сценарий. Допустим, у вас есть CSV/Excel файл, в котором содержится список пользователей, которым нужно сбросить пароли и уникальный пароль для каждого пользователя. Формат файла users.csv:

sAMAccountName;NewPassword
aivanov;PaSSde0r1
bpetrov;New$isde01
ssidorov;k@nndj!223

С помощью следующего скрипта PowerShell можно импортировать список пользователей из CSV файла и сбросить пароль для каждого.
Import-Csv users.csv -Delimiter ";" | Foreach {
$NewPass = ConvertTo-SecureString -AsPlainText $_.NewPassword -Force
Set-ADAccountPassword -Identity $_.sAMAccountName -NewPassword $NewPass -Reset -PassThru | Set-ADUser -ChangePasswordAtLogon $false
}

После выполнения данного кода всем пользователям в файле будет установлен новый уникальный пароль.

Изменить пароль пользователя в домене из командной строки

Если на компьютере не установлена консоль ADUC, или модуль RSAT-AD-PowerShell, вы можете использовать консольную команду net use для сброса пароля. Выведите информацию об учетной записи пользователя в домене:

net user a.novak /domain

Password last set            4/20/2022 2:10:05 AM
Password expires             Never
Password changeable          4/21/2022 2:10:05 AM
Password required            Yes
User may change password     Yes
Last logon                   4/20/2022 2:58:47 AM
Logon hours allowed   All

Здесь видно когда последний раз менялся пароль и дата последнего входа пользователя в домен (как получить историю входа пользователя в домен).

net user: команда просмотр информация о пользователе домена и его пароле

Чтобы сбросит пароль этого пользователя, выполните команду:

net user a.novak /domain *

net user domain сбросить пароль пользователя

Укажите новый пароль и подтвердите его:

Type a password for the user: xx
Retype the password to confirm: xx
The command completed successfully.

Кто сбросил пароль пользователя в AD?

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

  1. Откройте консоль управления доменными GPO ( gpedit.msc )
  2. Откройте Default Domain Controller Policy и перейдите в раздел Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Audit Policy
  3. Включите политику Audit User Account Management (Define these policy settings: Success) gpo включить аудит учетных записией
  4. После обновления настроек групповых политик на контроллере домена в журнале событий Event Viewer будут логироваться события сброса паролей
  5. Откройте консоль eventvwr.msc и включите фильтр для журнала Security по событию с Event ID 4724 (пароль был сброшен администратором) и 4723 (пользователь самостоятельно изменил свой пароль)
  6. В описании события An attempt was made to reset an account’s password будет указано какому пользователю был сброшен пароль (Target Account)и кто из администраторов его изменил (Subject). eventid 4724 событие сброса пароля пользователя в домене
    Чтобы увеличить количество последних событий, которые будут хранится в журнале на DC, нужно увеличить размер журналов Event Viewer.

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

Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4724} | ForEach-Object {
$xml = [xml]$_.ToXml()
$data = $xml.Event.EventData.Data
[PSCustomObject]@{
TimeCreated = $_.TimeCreated
SubjectUser = ($data | Where-Object Name -eq 'SubjectUserName').'#text'
SubjectDomain = ($data | Where-Object Name -eq 'SubjectDomainName').'#text'
TargetUser = ($data | Where-Object Name -eq 'TargetUserName').'#text'
TargetDomain = ($data | Where-Object Name -eq 'TargetDomainName').'#text'
}
} | Select TimeCreated, @{n='Subject';e={"$($_.SubjectDomain)\$($_.SubjectUser)"}}, @{n='Target';e={"$($_.TargetDomain)\$($_.TargetUser)"}}

Powershell скрипт вывести кто сбросил пароль пользователя


Предыдущая статья Следующая статья


Комментариев: 34 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)