В этой статье мы покажем, как удаленные пользователи самостоятельно могут менять свои истекшие пароли через с помощью специальной веб формы на сервере Remote Desktop Services (RDS) с ролью RD Web Access на Windows Server 2022/2019/2016/2012 R2.
Проблема смены истекшего пароля по RDP
В Windows Server 2012 R2 и выше по умолчанию включен механизм аутентификации на уровне сети NLA (Network Level Authentication, подробнее о нем здесь). Особенность этого метода аутентификации в том, что при включенном NLA пользователи с истекшим сроком действия пароля (или у которых в атрибуте пользователя useraccountcontrol включена опция смены пароля при первом входе) не смогут подключиться к RDP/RDS хосту. Конечно, вы можете отключить NLA ссылка1, ссылка2, но это не хорошо с точки зрения безопасности. При попытке подключится к серверу RDSH (Remote Desktop Session Host) с учетной записью пользователя, пароль которого истек, появляется такое сообщение об ошибке:
An authentication error has occurred. The Local Security Authority cannot be contacted Remote computer:xxxxxx This could be due to an expired password Please update your password if it has expired.
Получается, что при использовании NLA удаленные RDP пользователи не могут сменить свой истекший пароль, если у них нет других способов доступа в корпоративную сеть кроме RDS. Можно конечно, попросить пользователей заранее сменить свой пароль непосредственно в RDP сессии, или включить на RDS серверах политику Interactive logon: Prompt user to change password before expiration (Computer Configuration -> Windows Settings -> Local Policies -> Security Options), но, обычно это не всегда срабатывает из-за элементарной забывчивости пользователей.
В Windows Server 2012 R2 и выше удаленные пользователи могут самостоятельно сбросить свой пароль (текущий пароль или пароль с истекшим сроком действия) через специальную веб-страницу на сервере с ролью RD Web Access. Чтобы изменить пароль, пользователь должен аутентифицироваться под своей учетной записью на веб-странице регистрации RDS-WebAccess и с изменить свой пароль с помощью специальной aspx формы.
Разрешить смену истекшего пароля пользователя на RDWeb Access
Функционал удаленной смены пароля доступен на сервере с ролью Remote Desktop Web Access (RD Web Access), но по-умолчанию эта функция отключена.
Если у вас развернута ферма серверов RDS, вы можете найти сервер, на котором установлена роль RDS-WEB-Access, обратившись к RD Connection Broker:
Get-RDServer -ConnectionBroker srv-rdscb.winitpro.ru| where {$_.roles -eq "RDS-WEB-ACCESS"}
Для смены пароля используется сценарий в файле password.aspx, который находится в каталоге C:\Windows\Web\RDWeb\Pages\en-US.
Чтобы включить функцию смены пароля, нужно на сервере RD Web Access запустите консоль управления веб-сервером IIS Manager (inetmgr), перейдите в раздел [Server Name] –> Sites –> Default Web Site –> RDWeb –> Pages и откройте настройки приложения (Application Settings).
В правой панели найдите параметр с именем PasswordChangeEnabled и измените его значение на true.
Параметр PasswordChangeEnabled позволяет пользователям Active Directory сменить пароль через портал RD Web Access. Эта опция не позволяет сменить пароль локальных пользователей на RDS хостах в рабочей группе (без домена).
Перезапустите веб сервер IIS из консоли или с помощью команды:
IISRESET
Чтобы проверить доступность страницы смены, перейдите на веб-адрес:
https://[RD-WEB-1]/RDWeb/Pages/en-US/password.aspx
Укажите имя пользователя, старый пароль и дважды новый.
После успешной смены пароля пользователя должно появится сообщение:
Your password has been successfully changed.
Нажмите ОК, и пользователь будет перенаправлена на страницу входа RD Web.
Если пароль пользователя не соответствует парольной политике домена, появится окно с предупреждением:
Your new password does not meet the length, complexity, or history requirements of your domain. Try choosing a different new password.
Вывести и изменить поддерживаемые типы аутентификации можно в консоли IIS Manager. Выберите Sites -> Default Web Sites -> RDWeb -> Pages в правом окне выберите Forms Authentication.
Теперь при попытке подключиться к веб серверу RD Web Access с истекшим паролем, пользователь будет перенаправлен на веб-страницу password.aspx, на которой ему будет предложено сменить пароль.
Добавить ссылку на смену пароля на страницу входа Remote Desktop Web Access
Вы можете добавить ссылку на страницу с формой смены пароля можно непосредственно в веб-форму входа на сервер RDWeb. Благодаря этому пользователь в любой момент может самостоятельно изменить свой пароль, не дожидаясь окончания его срока действия.
Добавьте ссылку на файл password.aspx на страницу входа в систему (создайте копию файла login.aspx перед редактированием).
- На сервере RDWeb найдите и откройте в любом тестовом редакторе (я предпочитаю Notepad++) файл C:\Windows\Web\RDWeb\Pages\en-US\login.aspx;
- Перейдите на 429 строку (В Windows Server 2022 она находится после html блока
<tr id="trPasswordExpiredNoChange" <%=strErrorMessageRowStyle%> > ……..… </tr>
) и добавьте следующий код:
<!-- Start Add Link to Change Password -->
<tr>
<td align="right"> <a href="password.aspx" title="Change User Password">Click here </a>to change your password.
</td>
</tr>
<!-- End Add Link to Change Password --> - Сохраните изменения в файле login.aspx, перезапустите сайт IIS и проверьте, что на странице регистрации RD Web появилась ссылка на страницу смены пароля.
Теперь удаленные пользователи смогут самостоятельно менять истекший пароль RDS сервере без вмешательства администратора. Обратите внимание, что если вы используете закэшированные учетные данные (Cached Credentials) для входа на локальный компьютер, то после смены пароля через RDWeb они не будут обновлены.