Разрешить пользователям изменять просроченный пароль через подключение к удаленному рабочему столу

13

ИНФОРМАЦИЯ:

  • У меня возникает ситуация, когда я вынужден использовать сервер (Windows 2012 R2), который НЕ является частью домена и НЕ имеет AD. Это не мой выбор, не оптимальный, но вне моего контроля.

  • У меня также есть локальные пользователи, которые подключаются к этому серверу через RDP, и у локальных пользователей есть политика истечения срока действия пароля.

  • Поскольку AD / Exchange не является частью изображения, пользователи не получают уведомления о том, что срок действия их паролей истекает.

ПРОБЛЕМА . Проблема в том, что истек срок действия пароля пользователя, и он пытается войти в систему с помощью подключения к удаленному рабочему столу. Это не позволяет им менять свой пароль.

Я снял флажок «Разрешить подключения ТОЛЬКО с компьютеров, на которых запущен удаленный рабочий стол с аутентификацией на уровне сети» со стороны сервера, поэтому сервер НЕ требует NLA для входящих сеансов RDP.

Тем не менее, при использовании диспетчера подключений к удаленному рабочему столу Windows, кажется, принудительно NLA.

Если я использую клиент удаленного рабочего стола «Терминалы», на стороне клиента есть возможность отключить использование «Аутентификация на уровне сети». Если я отключаю NLA через клиент Terminals и подключаюсь к серверу, это позволяет мне изменить пароль пользователя с истекшим сроком действия.

ВОПРОС: Я предполагаю, возможно, неправильно, что программа Terminals просто находится поверх протоколов подключения к удаленному рабочему столу Windows, и что если вы можете отключить клиентскую часть проверки подлинности на уровне сети через программу Terminals, то вы также должны иметь возможность отключите это через встроенный диспетчер подключений к удаленному рабочему столу Windows. К сожалению, я не вижу этой опции в графическом интерфейсе диспетчера соединений и не вижу никаких параметров в файлах ".RDP", специфичных для NLA.

Если я нажимаю «О программе» в диспетчере подключений к удаленному рабочему столу на стороне клиента, он сообщает, что «Проверка подлинности на уровне сети поддерживается». Формулировка заставляет меня поверить, что использовать ее необязательно, но, опять же, я не вижу способа отключить ее в диспетчере соединений. Кстати, этот конкретный менеджер соединений v10.

guht
источник
1
Я отредактировал ваш вопрос (конкретно название), чтобы сосредоточиться на вашей основной цели, а не на предлагаемом способе достижения цели. Смотрите проблему XY .
Я говорю: восстанови Монику

Ответы:

13

Вы можете решить эту проблему двумя способами:

1. Установите роль RD Web Access и включите опцию удаленной смены пароля.

Следующие указания взяты из статьи woshub.com Разрешить пользователям сбрасывать просроченный пароль через RD WebAccess в Windows Server 2012 :

В Windows 2012/2012 R2 появилась опция, позволяющая удаленному пользователю изменять свой пароль (текущий или устаревший) с помощью специальной веб-страницы на сервере RD Web Access. Пароль будет изменен следующим образом: пользователь входит на веб-страницу регистрации на сервере с ролью RD Web Access и меняет свой пароль с помощью специальной формы.

Параметр удаленного изменения пароля доступен на сервере с ролью «Веб-доступ к удаленному рабочему столу», но по умолчанию он отключен. Для изменения пароля используется скрипт password.aspx , который находится в C: \ Windows \ Web \ RDWeb \ Pages \ en-US .

  1. Чтобы включить параметр смены пароля, на сервере с настроенной ролью RD Web Access откройте консоль IIS Manager, перейдите в [Имя сервера] -> Сайты -> Веб-сайт по умолчанию -> RDWeb -> Страницы и откройте раздел Настройки приложения .

    введите описание изображения здесь

  2. На правой панели найдите параметр PasswordChangeEnabled и измените его значение на true .

    введите описание изображения здесь

  3. Вы можете проверить механизм смены пароля, перейдя на следующую веб-страницу:

    https: //RDSServerName/RDWeb/Pages/en-US/password.aspx

    введите описание изображения здесь

  4. Теперь при попытке подключения к серверу Веб-доступ к удаленным рабочим столам с просроченным паролем пользователь будет перенаправлен на веб-страницу password.aspx и предложит сменить пароль.

    введите описание изображения здесь

    Совет . Та же функция Windows Server 2008 R2 может стать доступной после установки специального патча - KB2648402 .


2. Включить подсказки, уведомляющие пользователей об истечении срока действия пароля

  1. Запустите gpedit.mscна RDSH-сервере, чтобы открыть локальную групповую политику
  2. Нагиват к Computer Configuration\Windows Settings\Local Policies\Security Options
  3. Измените настройку Интерактивный вход в систему: попросите пользователя сменить пароль до истечения срока действия и укажите разумное количество дней, например 14.
  4. Пользователи, включая тех, кто вошел в систему с помощью удаленного рабочего стола, получат уведомление до истечения срока действия пароля.
Я говорю Восстановить Монику
источник
Спасибо @twisty, я должен был упомянуть, что установка роли сервера удаленного рабочего стола также не была возможной. Тем не менее, это отличная информация для кого-то еще в аналогичной ситуации. Подсказки это хорошая вещь, чтобы знать, хотя!
17
3
Тогда у вас нет выбора, кроме как отключить NLA на сервере и клиентах, чтобы позволить им сменить пароль. Опасно, что это значительно снижает безопасность соединений RDP.
Я говорю Восстановить Монику
10

Оказывается, это контролируется с помощью свойства, отсутствующего в списке, в файле конфигурации .RDP, называемом «enablecredsspsupport», и, устанавливая для него значение «0», оно загружает страницу входа в сеанс RDP и позволяет пользователю изменять свой пароль с истекшим сроком действия.

Точный синтаксис, необходимый в файле конфигурации .RDP:

enablecredsspsupport: я: 0

Если вам нужна дополнительная ссылка или чтение, перейдите сюда: Тирания аутентификации сетевого уровня и CredSSP

guht
источник
7
Это работает, только если NLA не требуется сервером. В противном случае вы получите сообщение о том, что поддержка сетевого уровня требуется удаленному компьютеру, но не поддерживается на локальном компьютере. Вы должны объяснить, что на самом деле делает этот параметр, возможно, ссылаясь на абзац из связанной статьи.
Симл
1
Примечание. Нажатие кнопки «Сохранить» в подключении к удаленному рабочему столу создаст файл конфигурации Default.rdc. (Нажмите кнопку «Сохранить как», чтобы увидеть, в каком каталоге хранится файл.) Это файл для редактирования, если вы хотите использовать этот параметр по умолчанию. Или вы можете поместить его в другой файл .RDP, который вы открываете вручную, когда вам это нужно.
Бампфер
3

Ни один из вариантов не работал для меня, так как у меня включен NLA. Вот способ изменить его с помощью PowerShell - полная история о том, как изменить свой пароль с истекшим сроком, когда вы не можете войти в RDP .

function Set-PasswordRemotely {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)][string] $UserName,
        [Parameter(Mandatory = $true)][string] $OldPassword,
        [Parameter(Mandatory = $true)][string] $NewPassword,
        [Parameter(Mandatory = $true)][alias('DC', 'Server', 'ComputerName')][string] $DomainController
    )
    $DllImport = @'
[DllImport("netapi32.dll", CharSet = CharSet.Unicode)]
public static extern bool NetUserChangePassword(string domain, string username, string oldpassword, string newpassword);
'@
    $NetApi32 = Add-Type -MemberDefinition $DllImport -Name 'NetApi32' -Namespace 'Win32' -PassThru
    if ($result = $NetApi32::NetUserChangePassword($DomainController, $UserName, $OldPassword, $NewPassword)) {
        Write-Output -InputObject 'Password change failed. Please try again.'
    } else {
        Write-Output -InputObject 'Password change succeeded.'
    }
}

Просто запустите Set-PasswordRemotelyи он задаст вам 4 вопроса - имя пользователя, старый пароль, новый пароль, контроллер домена и измените пароль для вас. Он работает и с подключенного к домену компьютера. Требуется подключение к DC.

Сумасшедший мальчик
источник
Вы можете использовать ECHO% LOGONSERVER%, чтобы получить свой контроллер домена, это и PowerShell выше работал отлично
Кевински