Как узнать срок окончания пароля у пользователя Active Directory

срок окончания пароля у пользователя AD

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik. В прошлой статье я вам показал как вы можете улучшить свою сетевую безопасность в Active Directory путем отключения протокола LLNMR, который просто в домене не нужен. В сегодняшней публикации я продолжу тематику активного каталога и хочу вас научить находить несколькими методами дату, когда закончиться срок окончания пароля у пользователя Active Directory. Данные методы вы можете использовать для автоматизации уведомлений, просто выявлении проблем с учетными записями и так далее. Думаю, что данный материал окажется вам полезным.

Для чего можете потребоваться дата истечения пароля

В Active Directory должны действовать парольные политики, которые определяют с точки зрения безопасности те временные периоды которые выделены под валидность пароля и не только. Очень плохо, когда у рядовых пользователей в свойствах учетной записи установлен параметр "Password Never Expires", так как это потенциальная жертва на взлом.

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

  • Он не сможет войти удаленно в корпоративную сеть, вы, конечно, можете выкрутиться подняв у себя на ADFS возможность смены пароля, но не у всех это есть
  • У сотрудника стухнет пароль во время работы, ему его сменят, но за счет того, что у него могут быть активные RDP сессии или сохраненные учетные записи в различных сервисах, его учетная запись начнет постоянно блокироваться и он будет обращаться в техническую поддержку, чтобы они нашли причины блокировки
  •  Пароль может протухнуть в самый неподходящий момент, когда будет важная презентация и нужно подключиться к WiFi, и так далее

Понимая как вы можете отслеживать время истечения пароля пользователя в Active Directory, есть возможность заранее придумать механизмы оповещения и наладить процесс его своевременной смены.

Как определить  срок действия пароля пользователя Active Directory средствами PowerShell

PowerShell это самый правильный и быстрый способ добиться поставленной цели, существуют разные подходы о которых мы и поговорим.

  • 1️⃣Атрибут msDS-UserPasswordExpiryTimeComputed - используется в Active Directory для хранения времени истечения пароля пользователя. Этот атрибут вычисляется автоматически системой и представляет собой время, когда пароль пользователя должен истечь, основываясь на политике паролей, установленной для домена. Зная это мы можем легко воспользоваться командлетом Get-ADUser, чтобы получить нужную информацию.

# Получите информацию о пользователе
$user = Get-ADUser -Identity "имя_пользователя" -Properties msDS-UserPasswordExpiryTimeComputed

# Преобразуйте значение в дату и время
$passwordExpiryDate = [DateTime]::FromFileTime($user."msDS-UserPasswordExpiryTimeComputed")

Write-Output "Срок окончания пароля: $passwordExpiryDate"

В моем примере есть замечательный пользователь Геннадий Барбоскин, у которого мы и посмотрим параметр msDS-UserPasswordExpiryTimeComputed отвечающий за срок действия пароля. В результате выполнения скрипта PowerShell в ISE оболочке, я вижу, что пароль еще будет валидным до 29 декабря.

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

Если нужно сделать массовую выборку из списка пользователей, который у вас в текстовом файле, то скрипт будет такой:

# Укажите путь к файлу с именами пользователей
$filePath = "C:\temp\users.txt"

# Проверьте, существует ли файл
if (Test-Path $filePath) {
# Читаете имена пользователей из файла
$usernames = Get-Content -Path $filePath

foreach ($username in $usernames) {
# Получите информацию о пользователе
$user = Get-ADUser -Identity $username -Properties msDS-UserPasswordExpiryTimeComputed

if ($user) {
# Преобразуйте значение в дату и время
$passwordExpiryDate = [DateTime]::FromFileTime($user."msDS-UserPasswordExpiryTimeComputed")
Write-Output "Пользователь: $username, Срок окончания пароля: $passwordExpiryDate"
} else {
Write-Output "Пользователь: $username не найден."
}
}
} else {
Write-Output "Файл не найден: $filePath"
}

Если нужно вывести срок действия пароля для всех пользователей нужной OU, можно воспользоваться такой конструкцией:

# Укажите DN (Distinguished Name) вашего OU
$ouDN = "CN=Users,DC=root,DC=pyatilistnik,DC=org"

# Получите всех пользователей из указанного OU
$users = Get-ADUser -Filter * -SearchBase $ouDN -Properties msDS-UserPasswordExpiryTimeComputed

# Переберите каждого пользователя и получите срок окончания пароля
foreach ($user in $users) {
# Преобразуйте значение в дату и время
$passwordExpiryDate = [DateTime]::FromFileTime($user."msDS-UserPasswordExpiryTimeComputed")

Write-Output "Пользователь: $($user.SamAccountName), Срок окончания пароля: $passwordExpiryDate"
}

Если выскочит ошибка Exception calling "FromFileTime" with "1" argument(s): "Not a valid Win32 FileTime, то это значит, что у определенной учетной записи стоит галка "Password Never Expires"

срок действия пароля AD через PowerShell

Чтобы изменить скрипт так, чтобы он искал всех пользователей, у которых в имени есть "bar", вам нужно использовать команду с фильтром.

# Получите информацию о пользователях, у которых в имени есть "bar"
$users = Get-ADUser -Filter { SamAccountName -like "*bar*" } -Properties msDS-UserPasswordExpiryTimeComputed

# Переберите найденных пользователей и выведите срок окончания пароля
foreach ($user in $users) {
# Преобразуйте значение в дату и время
$passwordExpiryDate = [DateTime]::FromFileTime($user."msDS-UserPasswordExpiryTimeComputed")

Write-Output "Пользователь: $($user.Name) - Срок окончания пароля: $passwordExpiryDate"
}

Находим срок действия пароля у всех у кого в имени bar

  • 2️⃣Второй метод это вычислить несколько других атрибутов: PasswordLastSet и ADDefaultDomainPasswordPolicy.
  1. PasswordLastSet - Этот атрибут хранит дату и время последнего изменения пароля учетной записи пользователя. Он используется для определения того, когда пользователь в последний раз обновлял свой пароль.
  2. ADDefaultDomainPasswordPolicy - Этот атрибут представляет собой политику паролей по умолчанию для домена Active Directory. Он определяет параметры, такие как минимальная длина пароля, сложность пароля, максимальный и минимальный срок действия пароля, а также количество неудачных попыток входа перед блокировкой учетной записи. Эта политика применяется ко всем пользователям в домене, если для них не установлены индивидуальные настройки.

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

# Получите информацию о пользователе
$user = Get-ADUser -Identity "имя_пользователя" -Properties "PasswordLastSet", "PasswordNeverExpires"

# Получите политику паролей домена
$passwordPolicy = Get-ADDefaultDomainPasswordPolicy

# Рассчитайте срок окончания пароля
if ($user.PasswordNeverExpires) {
Write-Output "Пароль никогда не истекает."
} else {
$maxPasswordAge = $passwordPolicy.MaxPasswordAge
$passwordExpiryDate = $user.PasswordLastSet + $maxPasswordAge
Write-Output "Срок окончания пароля: $passwordExpiryDate"
}

Как узнать срок пароля пользователя AD

Как вычислить срок действия пароля пользователя Active Directory через командную строку

Есть очень старая универсальная утилита net user, получить с ее помощью срок действия пароля можно в одну строку. Запустите командную строку от имени администратора и введите:

net user barboskin.g /domain

В выводе найдите строку "Password expires".

net user Password expires

Как найти срок действия пароля с помощью оснасток Active Directory

Существую и графические методы найти нужную нам информацию. Запустите оснастку ADUC (Active Directory - Пользователи и компьютеры). Перейдите в меню "View - Advanced Features". чтобы активировать дополнительные вкладки свойств объектов.

Advanced Features

Открываем свойства нужной учетной записи и переходим на вкладку "Attribute Editor", в фильтре ставим галочку "Show only attributes that have values".

Show only attributes that have values

Далее после фильтрации вам необходимо найти атрибут pwdLastSet, в нем вы можете увидеть дату последней смены пароля. ЕЕ нужно запомнить.

Читайте так же - Как создать RAID на Dell PERC H330 Adapter

Атрибут pwdLastSet

Далее откройте редактор групповой политики и посмотрите в GPO "Default Domain Policy" настройку "Maximum password age". В моем случае, это 60 дней. Значит прибавляем к pwdLastSet 60, получаем дату, когда подойдет срок действия пароля.

Maximum password age

Еще есть утилита ADSIEdit.msc, в которой вы можете подключиться к "Default naming context", найти в нужном контейнере учетную запись, открыть ее свойства и найти атрибут pwdLastSet. Проделав описанные выше действия.

Редактор атрибутов

Вот такие интересные методы, понять по сроку действия пароля пользователя. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Оцените статью
Настройка серверов windows и linux
Добавить комментарий