Не смотря на то, что поддержка Windows XP прекращена уже 4 года назад (Windows XP End Of Support) – многие внешние и внутренние заказчики продолжают используют эту ОС, и похоже, кардинально эту проблему решить в ближайшее время не удастся 🙁 … На днях обнаружили проблему: клиенты с ОС Windows XP не могут подключиться через удаленный рабочий стол к новой терминальной Remote Desktop Services ферме на Windows Server 2012 R2. Аналогичная проблема появляется при попытке подключиться по RDP с Windows XP на Windows 10 1803.
Содержание:
- Невозможно подключиться по RDP с Windows XP к Windows Server 2016/2012R2 и Windows 10
- Отключаем NLA на сервере RDS Windows Server 2016/2012 R2
- Включаем NLA на уровне клиента Windows XP
Невозможно подключиться по RDP с Windows XP к Windows Server 2016/2012R2 и Windows 10
Пользователи XP жаловались на такие ошибки rdp клиента:
Because of a security error, the client could not connect to the remote computer. Verify that you are logged on to the network, and then try reconnecting again.
The remote session was disconnected because the remote computer received an invalid licensing message from this computer.
The remote computer requires Network Level Authentication, which your computer does not support. For assistance, contact your system administrator or technical support.
Чтобы решить данную проблему, проверьте что на компьютерах с Windows XP обновлена версия клиента RDP. На текущий момент максимальная версия RDP клиента, которую можно установить на Windows XP — rdp клиент версии 7.0 (KB969084 — https://blogs.msdn.microsoft.com/scstr/2012/03/16/download-remote-desktop-client-rdc-7-0-or-7-1-download-remote-desktop-protocol-rdp-7-0-or-7-1/). Установить данное обновление можно только на Windows XP SP3. Установка RDP клиента версии 8.0 и выше на Windows на XP не поддерживается. После установки данного обновления у половины клиентов проблема с RDP подключением решилась. Осталась вторая половина….
Отключаем NLA на сервере RDS Windows Server 2016/2012 R2
Начав более подробно изучать тему RDS сервера на базе Windows 2012 R2 мы обнаружили, что в ОС Windows Server 2012 (и выше) по умолчанию требует от своих клиентов обязательной поддержки технологии NLA (Network-Level Authentication — проверки подлинности на уровне сети, подробнее об этой технологии здесь), если же клиент не поддерживает NLA, подключиться к RDS серверу ему не удастся. Аналогично NLA включен по-умолчанию при включении RDP в Windows 10.
Из вышесказанного есть два вывода, чтобы оставшиеся XP-клиенты смогли подключаться по RDP к терминальному серверу на Windows Server 2016/2012 R2 или к Windows 10 нужно:
- отключить проверку NLA на серверах фермы Remote Desktop Services 2012 R2/2016 или в Windows 10;
- или включить поддержку NLA на XP-клиентах;
Чтобы на сервере RDS Windows Server 2012 R2 отключить требование обязательного использования протокола NLA клиентами, нужно в консоли Server Manager перейти в раздел Remote Desktop Services -> Collections -> QuickSessionCollection, выбрать Tasks -> Edit Properties, выбрать раздел Security и снять опцию: Allow connections only from computers running Remote Desktop with Network Level Authentication.
В Windows 10 можно отключить Network-Level Authentication в свойствах системы (Система – Настройка удаленного доступа). Снимите галку «Разрешить подключения только с компьютеров, на которых работает удаленный рабочий стол с проверкой подлинности на уровне сети (рекомендуется)».
Естественно, нужно понимать, что отключение NLA на уровне сервера уменьшает защищенность системы и в общем случае использовать не рекомендуется. Предпочтительнее использовать вторую методику.
Включаем NLA на уровне клиента Windows XP
Для корректной работы Windows XP в качестве клиента необходимо наличие, как минимум, Service Pack 3. Если нет, то обязательно скачайте и установите это обновление. Именно Service Pack 3 является минимальным требованием для обновления клиента RDP с версии 6.1 до 7.0 и поддержки необходимых компонентов, в том числе Credential Security Service Provider (CredSSP -KB969084), о котором чуть ниже.
Без поддержки CredSSP и NLA при RDP подключении с Windows XP к новым версия Windows будет появлятся ошибка
Ошибка при проверке подлинности (код: 0x80090327).
Ранее мы уже описывали, как включить поддержку Network Level Authentication на компьютерах с Windows XP, вкратце напомним основные моменты.
Поддержка NLA появилась в Windows XP, начиная с SP3, но по-умолчанию она не включена. Включить поддержку аутентификации NLA и CredSSP-провайдера можно только реестр. Для этого:
- В ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders нужно отредактировать значение ключа SecurityProviders, добавив в конце credssp.dll (через запятую от его текущего значения);
- Далее в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa в значение параметра Security Packages добавьте строку tspkg;
- После внесения указанных изменений, компьютер нужно перезагрузить.
После выполнения всех манипуляций, компьютер с Windows XP SP3 должен без проблем подключится по rdp к терминальной ферме на Windows Server 2016 / 2012 R2 или к Windows 10. Однако вы не сможете сохранить пароль для RDP подключения на клиенте Windows XP (пароль придется вводить при каждом подключении).
Совет. Параллельно возникла еще одна проблема с печатью через Easy Print. Чтобы компьютеры с Windows XP могли печатать на RDS 2012 с помощью Easy Print, клиенты должны удовлетворять следующим требованиям: ОС — Windows XP SP3, версия rdp клиента не меньше 6.1, наличие .NET Framework 3.5 (как узнать версию NET Framework).
Ошибка CredSSP encryption oracle remediation
В 2018 года в протоколе CredSSP была обнаружена серьезная уязвимость (бюллетень CVE-2018-0886), которая была исправлена в обновлениях безопасности Microsoft. В мае 2018 года MSFT выпустила дополнительное обновление, которое запрещает клиентам подключаться к RDP компьютерам и сервера с уязвимой версией CredSSP (см статью: https://winitpro.ru/index.php/2018/05/11/rdp-auth-oshibka-credssp-encryption-oracle-remediation/). При подключении к удаленным компьютерам по RDP появляется ошибка Произошла ошибка проверки подлинности. Указанная функция не поддерживается.
В связи с тем, что Microsoft не выпускает обновления безопасности обновлений безопасности для Windows XP и Windows Server 2003, вы не сможете подключится к поддерживаемым версиям Windows из этих ОС.
Чтобы обеспечить возможность RDP подключения из Windows XP к обновлённым Windows 10/8.1/7 и Windows Server 2016/2012R2/2012/2008 R2, необходимо на стороне RDP сервера включить политику Encryption Oracle Remediation / Исправление уязвимости шифрующего оракула (Computer Configuration -> Administrative Templates -> System -> Credentials Delegation / Конфигурация компьютера -> Административные шаблоны -> Система -> Передача учетных данных) со значением Mitigated, что, как вы понимаете, небезопасно.
Совет. Для Windows XP (версия называется Windows Embedded POSReady 2009) на самом деле есть отдельно обновление для CredSSP уязвимость удаленного выполнения кода — https://support.microsoft.com/ru-ru/help/4056564 (WindowsXP-KB4056564-x86-Embedded-ENU.exe) и в теории существует возможность установить обновления для Embedded POSReady и на обычную версию Windows XP x86 и на Windows Server 2003.
This guide describes how to disable Network Level Authentication on various versions Windows Server with or without RD Session Host Role.
Windows 10 or Windows Server 2016 and Windows 8 or Windows Server 2012 without RD Session Host Role
Note: These steps do not apply to Windows Server 2012 and 2016 with the RD Session host role.
-
Open the Control Panel. Ensure that the control panel is showing items by Category. Click on System and Security and under System click on Allow remote access.
-
Under the Remote Desktop group un-tick the checkbox Allow connections only from computers running Remote Desktop with Network Level Authentication (recommended).
- Click OK.
Windows Vista or Windows 7 and Windows Server 2008 or Windows Server 2008 R2 without RD Session Host Role.
Note: These steps do not apply to Windows 2008 and Windows 2008 R2 with the RD Session host role.
-
Open the Control Panel. Ensure that the Control Panel is showing items by Category (i.e. not in Classic View). Click on System and Security and under System click on Allow remote access
-
Under the Remote Desktop group choose Allow connections from computers running any version of Remote Desktop (less secure).
- Click OK.
Windows Server 2016 and Windows Server 2012 with RD Session Host role
- On the RD Session Host server, open the Server Manager.
-
Click on Remote Desktop Services, then under Collections click on the name of the session collection name that you want to modify. Click on Tasks and select Edit Properties.
-
Under the Security tab un-tick the option Allow connections only from computers running Remote Desktop with Network Level Authentication. (For maximum compatibility ensure that Security Layer is set to Negotiate).
- If the Allow connections only from computers running Remote Desktop with Network Level Authentication check box is selected and is not enabled, the Require user authentication for remote connections by using Network Level Authentication Group Policy setting has been enabled and has been applied to the RD Session Host server.
- Click OK.
Windows 2008 and Windows 2008 R2 with RD Session Host Role
- On the RD Session Host server, open Remote Desktop Session Host Configuration. To open Remote Desktop Session Host Configuration, click Start, point to Administrative Tools, point to Remote Desktop Services, and then click Remote Desktop Session Host Configuration.
- Under Connections, right-click the name of the connection, and then click Properties.
-
In the General tab, un-tick the Allow connections only from computers running Remote Desktop with Network Level Authentication check box. (For maximum compatibility ensure that Security Layers are set to Negotiate).
- If the Allow connections only from computers running Remote Desktop with Network Level Authentication check box is selected and is not enabled, the Require user authentication for remote connections by using Network Level Authentication Group Policy setting has been enabled and has been applied to the RD Session Host server.
- Click OK.
Using Group Policies
Configure policies on Terminal Server:
-
Open gpedit.msc applet.
-
Navigate to Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Security.
- Enable Require use of specific security layer for remote (RDP) connections and select RDP as Security Layer.
- Disable Require user authentication for remote connections by using Network Level Authentication policy.
- Reboot Terminal server.
-
При использовании удалённого подключения к операционным системам Microsoft Windows/Windows Server по протоколу RDP в некоторых случаях может возникать потребность в смене пароля учётной записи пользователя. При этом инициатором смены пароля в разных ситуациях может выступать как сам пользователь, так и администратор Windows-системы. В некоторых сценариях может получиться так, что, казалось бы, несложная задача смены пароля может стать не такой уж и простой. Поэтому в данной записи я попробую собрать информацию о самых разнообразных способах смены пароля учётной записи пользователя в RDP-сессии.
Способ №1 — «Горячие» клавиши
В случае, если пользователю Windows необходимо самостоятельно изменить пароль своей учётной записи, то в стандартной Windows-сессии пользователем может использоваться всем известное сочетание «горячих» клавиш Ctrl-Alt-Del. Это сочетание клавиш вызывает специальный экран Безопасности Windows (Windows Security), с которого доступна функция изменения пароля:
Если же речь заходит об использовании горячих клавиш в RDP-сессиях, то стоит заметить то, что во избежание перехвата некоторых сочетаний клавиш локальной клиентской системой (системой, с которой запускается RDP-клиент), перенаправление сочетаний клавиш Windows должно быть явно разрешено в свойствах RDP-клиента. Например в клиенте mstsc.exe, встроенном в Windows, данную опцию можно включить на закладке управления локальными ресурсам.
В стандартной первичной RDP-сессии для вызова специального экрана Безопасности Windows с функцией изменения пароля используется сочетание клавиш: Ctrl—Alt—End
В случае использования вложенных RDP-сессий (второго и последующего уровней), то есть когда из одной RDP-сессии открывается другая RDP-сессия, стандартное сочетание клавиш работать не будет. В разных источниках в интернете можно найти информацию об использовании более сложных сочетаний клавиш, таких как Ctrl—Alt—Shift-End или Shift-Ctrl-Alt-End. Однако мои эксперименты с Windows 10/Windows Server 2012 R2 показали, что данные сочетания клавиш попросту не работают (возможно они работали в ранних версиях ОС Windows). В этом случае на выручку нам может прийти следующий способ.
Способ №2 — Экранная клавиатура
В составе Windows имеется приложение «Экранная клавиатура» (On-Screen Keyboard), расположенное по умолчанию в %SystemRoot%\System32\osk.exe. Используя это приложение, мы можем решить проблему использования «горячих» клавиш во вложенных RDP-сессиях.
Находясь во вложенной RDP-сессии, вызовем окно запуска приложений. Вызвать его можно разными способами, например, через контекстное меню по кнопке Windows, или через Диспетчер задач (Task Manager):
Либо можно использовать сочетание клавиш Win-R.
В окне запуска приложений выполним запуск исполняемого файла osk.exe
После того, как откроется приложение «Экранная клавиатура», нажмём на физической клавиатуре сочетание клавиш Ctrl—Alt, так, чтобы это отобразилось на экранной клавиатуре и затем, удерживая это сочетание клавиш, на экранной клавиатуре мышкой нажмём кнопку Del.
Таким образом мы отправим в удалённую RDP-сессию сочетание клавиш Ctrl-Alt-Del, в следствие чего откроется специальный экран Безопасности Windows с функцией изменений пароля пользователя.
Способ №3 – Ярлык на VBS-скрипт или Powershell
Вызов экрана Безопасности Windows можно выполнить не только интерактивными способами, но и программными, например, с помощью скриптов.
Создадим VBS-скрипт, например, с именем Windows Security.vbs. Наполним скрипт следующим содержимым:
Set objShell = CreateObject("Shell.Application")
objShell.WindowsSecurity
Разместим скрипт в месте, доступном на чтение (но не для редактирования) для всех пользователей удалённого рабочего стола, например в каталоге %SystemRoot% (C:\Windows). А ярлык на запуск скрипта можно разместить в любом доступном пользователям месте, например, в каталоге общего профиля %SystemDrive%\Users\Public\Desktop\
При запуске данного ярлыка у пользователя будет открываться экран Безопасности Windows с возможностью изменения пароля.
Для любителей PowerShell приведённый VBS-скрипт можно заменить PS-скриптом следующего вида:
$ShellObject = New-Object -ComObject Shell.Application
$ShellObject.WindowsSecurity()
Либо запускать из ярлыка команду вида:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -nologo -noninteractive -command "(new-object -ComObject shell.application).WindowsSecurity()"
Однако стоит отметить тот факт, что запуск варианта с PowerShell будет происходить медленней, чем варианта с VBS-скриптом.
Описанные здесь способы с запуском ярлыка, ссылающегося на скрипт, может попросту не сработать, так как в некоторых окружениях серверов служб удалённых рабочих столов может быть заблокирована возможность выполнения скриптов. В таком случае, можно воспользоваться следующим способом.
Способ №4 – Ярлык оболочки Windows Explorer
Если говорить о создании ярлыка запуска экрана Безопасности Windows, то имеется ещё один вариант создания такого ярлыка. Создаётся ярлык со ссылкой на расширение оболочки Windows Explorer следующего вида:
C:\Windows\explorer.exe shell:::{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}
Опять же, при запуске такого ярлыка у пользователя будет открываться экран Безопасности Windows с возможностью изменения пароля. Этот способ одинаково хорошо работает на Windows 10 и на Windows Server 2012 R2.
Способ №5 – Панель управления Windows (локальные учётные записи)
Данный способ относится лишь к локальным учётным записям пользователей. Изменить пароль учётной записи рядового локального пользователя можно через Панель управления Windows. В Windows 10 из раздела Панели управления «Учётные записи пользователей» доступен вызов окна «Параметры компьютера«, в котором имеется функция изменения пароля текущего локального пользователя.
Такие методы вызова апплета управления учётными записями пользователей Панели управления Windows, как, например команда «control userpasswords2«, в качестве отдельного способа мы выделять не будем, так как подобные действия требуют административных прав в удалённой системе. То же самое касается и таких CLI-утилит Windows, как net.exe (%SystemRoot%\System32\net.exe) (пример команды «net user username newpassword«), так как они тоже требуют повышения уровня прав пользователя.
Ремарка
Отдельно хочется отметить обстоятельство, про которое порой забывают администраторы, и это может приводить к разным курьёзным ситуациям.
Попытки смены пароля, инициированные самим пользователем, могут оказаться безуспешными в случае, если пароль был недавно изменён и на удалённую Windows систему действует политика безопасности, определяющая минимальный срок действия пароля.
Как правило, это настраивается на уровне стандартных доменных групповых политик Active Directory и/или механизмов Password Settings objects (PSOs).
Повторюсь, что повлиять на ситуацию эта политика может только в случаях, когда пользователь самостоятельно инициирует процедуру смены пароля.
Далее мы поговорим о сценарии, при котором требование смены пароля включается для учётной записи пользователя форсировано администратором сервера (для локальных учётных записей), либо администратором службы каталогов Active Directory (для доменных учётных записей).
Практика показывает, что как только администратором включено требование смены пароля пользователя при следующем входе в систему, у пользователя могут возникнуть проблемы с подключением по протоколу RDP, если на стороне RDS сервера (а в некоторых случаях и на стороне RDS клиента) предварительно не предпринято никаких действий по специальной настройке обработки таких ситуаций. Далее мы рассмотрим пару примеров такой настройки.
Способ №6 — Remote Desktop Web Access
Клиентский доступ к службам Windows Server RDS может быть организован через веб-интерфейс серверной роли Remote Desktop Web Access (RDWA). В функционале этой роли имеется выключенная по умолчанию возможность смены пароля пользователя в процессе аутентификации на веб-странице RDWA.
Сразу стоит отметить то, что данный способ смены пароля будет доступен только в том случае, если на веб-узлах RDWA используется аутентификация на основе формы (Forms Authentication), а этот тип аутентификации несовместим с типом Windows Authentication, о подключении которого мы говорили ранее.
Чтобы включить данную возможность в Windows Server 2012/2012 R2 откроем консоль управления Internet Information Services (IIS) Manager, выберем сайт RDWA, развернём RDWeb > Pages и в разделе настроек ASP.NET выберем настройку опций веб-приложения Application Settings:
В перечне опций находим PasswordChangeEnabled и меняем установленное по умолчанию значение false на true:
Если серверов RDWA несколько и они работают в пуле за балансировщиком, например Windows NLB, то не забываем выполнить данное изменение на всех других серверах пула.
Теперь попытаемся от имени пользователя, у которого в свойствах учётной записи установлено требование смены пароля при следующем входе, аутентифицироваться на веб-странице RDWA:
После ввода учётных данных пользователя появится сообщение о том, что пароль пользователя требует замены и ссылка на страницу с функцией смены пароля (https://<RDWA FQDN>/RDWeb/Pages/ru-RU/password.aspx):
На этой отдельной странице пользователь сможет ввести свои текущие учётные данные и новый пароль:
В случае успешной смены пароля пользователь получит соответствующее сообщение:
При необходимости ссылку на страницу смены пароля можно сделать доступной не только тем пользователям, у которых после аутентификации возникает требование смены пароля, но и всем остальным пользователям, чтобы они могли самостоятельно выполнять смену пароля по собственной инициативе через веб-страницу RDWA. Для этого можно будет внедрить ссылку на страницу password.aspx на странице входа login.aspx (по умолчанию страницы расположены в каталоге %windir%\Web\RDWeb\Pages\ru-RU)
Если же говорить про Windows Server 2008 R2, то в этой ОС для использования функции смены пароля в RDWA может потребоваться установка обновления KB2648402 — You cannot change an expired user account password in a remote desktop session that connects to a Windows Server 2008 R2-based RD Session Host server in a VDI environment.
Способ №7 – Специальный RDP-файл
Если пользователь выполняет подключение к удалённому рабочему столу на базе Windows Server 2012/2012 R2 через прямой запуск стандартного клиента mstsc.exe, то в ситуации с включенным признаком требования смены пароля, попытка подключения может быть завершена с ошибкой «You must change your password before logging on the first time. Please update your password or contact your system administrator or technical support«.
Если ситуация требует того, чтобы пользователь самостоятельно изменил свой пароль при первом входе в систему, то это потребует некоторого изменения уровня безопасности настроек протокола RDP на стороне RDS сервера и подготовки специального RDP-файла на стороне клиента.
Сначала на клиентской стороне откроем mstsc.exe, настроим все нужные параметры подключения к серверу RDS и используя кнопку Сохранить как, создадим RDP-файл.
После этого откроем RDP-файл в текстовом редакторе и добавим в конец файла строку «enablecredsspsupport:i:0«
Добавление данного параметра в свойствах RDP-подключения позволит клиенту успешно установить RDP-сессию с удалённой системой и сменить пароль до получения доступа к удалённому рабочему столу. Однако этот параметр понизит уровень безопасности RDP-подключения, так как клиент не сможет использовать проверку подлинности на уровне сети — Network Level Authentication (NLA). И если на стороне RDS сервера включена обязательная проверка NLA, то пользователь всё равно не сможет подключиться и получит соответствующую ошибку «The remote computer requires Network Level Authentication, which your computer does not support…«.
Разрешить эту ситуацию можно только понизив уровень безопасности RDP на стороне RDS сервера, отключив обязательное требование проверки подлинности на уровне сети (NLA). Изменить эту настройку можно в свойствах системы на закладке Удалённый доступ:
В английской версии Windows название опции звучит как «Allow connections only from computers running Remote Desktop with Network Level Authentication (recommended)»
Если NLA нужно отключить на уровне коллекции серверов Windows Server 2012 R2, то сделать этом можно в свойствах коллекции сеансов, например через оснастку Server Manager:
После того, как отключено требование NLA на стороне RDS сервера, клиент с помощью специального RDP-файла, о котором мы сказали выше, должен успешно установить RDP-сессию и уже в ней получить сообщение о необходимости смены пароля:
И после этого пользователю будет показан экран, на котором он сможет задать новый пароль:
После успешной смены пароля последующие подключения по протоколу RDP будут проходить в штатном режиме без лишних запросов.
Заключение
Приведённый здесь перечень способов смены пароля при использовании протокола RDP не претендует на какую-то полноту и исключительность, а лишь отражает ту информацию, которую мне удалось найти в разных источниках по этому поводу. На мой взгляд, ни один из перечисленных способов нельзя считать наиболее удобным или универсальным, так как каждый из способов может применяться в определённых ограниченных сценариях и имеет, как преимущества, так и недостатки по сравнению с другими способами.
Дополнительные источники информации:
- TechNet Forums — RDP Message: You must change your password before logging on the first time. Please update your password or contact …
- Freek Berson — Password change option also available in RD Web Access on Windows Server 2008 R2
- TechNet Wiki — Windows Server 2012 RDS: Enabling the RD WebAccess Expired password reset option
Network Level Authentication (NLA) is a Remote Desktop Service security feature that requires the client to be authenticated before an RDP session is established. NLA is enabled by default in all supported versions of Windows. When performing NLA authentication in an Active Directory domain environment, domain controllers are used to validate user credentials.
If the RDP host can’t access DC, a user authentication will fail:
The remote computer that you are trying to connect to requires Network Level Authentication but your Windows domain controller cannot be contacted to perform NLA. If you are an administrator on the remote computer, you can disable NLA by using the options on the Remote tab of the System Properties dialog box.
In this case, NLA cannot be performed because:
- Remote computer (Remote Desktop Host) cannot contact domain controller;
- The DC used as the logon server is unhealthy or down;
- RD host cannot establish a security channel with a DC;
- The RDS host IP address is specified in RDP client prompt instead of FQDN.
To check DC connectivity and troubleshoot the underlying problem, you should log in locally to the RD host. Use one of the following methods:
- Log on to the RDP host remotely using the local administrator account (instead of the domain account).
- Login to RD host from a local console (e.g. VM console, HPE iLO, Dell iDRAC, etc.).
If neither of these methods work, you can temporarily disable the NLA requirement on the Remote Desktop host as a workaround.
Note. For security reasons, it is not recommended to completely disable NLA in most cases. But if you are using an alternative RDP client (for example, on Linux or macOS) that doesn’t support NLA, these are the only ways to fix the connection problem.
How to Disable Network Level Authentication (NLA) on Windows
Disabling NLA in Windows depends on whether you can logon RD host locally or remotely.
Method 1. Disable NLA via System Properties
If you can logon to the RD host locally, you can disable NLA in the system settings.
- Run the sysdm.cpl command and go to the Remote tab;
- Disable the option Allow connections only from computer running Remote Desktop with Network Level Authentication (recommended).
On Windows 11, you can disable NLA from Settings > System > Remote Desktop. Disable the option Require devices to use Network Level Authentication to connect.
Method 2. Disable NLA using Group Policy
Network Level Authentication can be disabled in Windows via Group Policy.
- Open the Local Group Policy Editor console (gpedit.msc);
- Go to Computer configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Security;
- Open the option Require user authentication for remote connections by using Network Level Authentication and set it to Disabled;
- Run the gpupdate /force command to update the local Group Policy settings.
Method 3. Disabling RDP Network Level Authentication (NLA) remotely
In case you cannot sign Remote Desktop host, you can disable NLA remotely via the Registry Editor or with PowerShell:
- Open the Registry Editor (regedit.exe) on a domain-joined computer and select File > Connect Network Registry.
- Enter the RD hostname where you want to disable NLA.
- Navigate to the registry key RDS1\HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
- Change the value of the UserAuthenticationRequired parameter from 1 to 0.
- This will disable NLA on the remote host.
Also, you can check the NLA status on the remote computer using PowerShell:
$Computer = 'wks12lk22' (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -ComputerName $Computer -Filter "TerminalName='RDP-tcp'").UserAuthenticationRequired
NLA is enabled if the return value is 1.
To remotely disable Network Level Auth on the host, run the command:
(Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -ComputerName $Computer -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(0)
If you are using Azure VM, you can disable NLA using the built-in script in Azure Portal.
- Sign in to Azure Portal;
- Select your VM > go to Run command;
- Find the DisableNLA script and click Run.
Once NLA has been enabled, you can log in to the target host via RDP and attempt to resolve connectivity issues that may be preventing access to the DC when performing NLA.
Fix the DC Connectivity Issue That Prevents NLA
Check whether the RD host can connect to a DC. Ping the DC by its name and check that the client can discover the DC in a domain:
ping dc1.theitbros.loc nltest /dsgetdc:theitbros.loc
If the DC is not reachable, check the network configuration and the DC health (also check How to fix Active Directory Domain Controller could not be contacted problem).
Make sure that the client is able to establish a security channel with a domain controller. Check the trust relationship between a workstation and a domain using the PowerShell command
Test-ComputerSecureChannel -verbose
If this command returns False, you can repair the security channel with the command:
Test-ComputerSecureChannel -Repair -Credential corp\domain_adm
Note. A domain unjoin and rejoin operation is required in some cases to resolve this issue.
Check the assigned network connection profile both on a DC and a client:
Get-NetConnectionProfile
If it returns Public or Private instead of DomainAuthenticated, try disabling and enabling the NIC.
Be sure to enable NLA on the RD host after resolving the DC connectivity issue. Leaving it disabled is a security breach.
Cyril Kardashevsky
I enjoy technology and developing websites. Since 2012 I’m running a few of my own websites, and share useful content on gadgets, PC administration and website promotion.
The remote computer that you are trying to connect to requires Network Level Authentication (NLA), but your Windows domain controller cannot be contacted to perform NLA. RDP stands for Remote Desktop Protocol. To learn Microsoft RDP Disable NLA follow the below steps:
While NLA does provide a security benefit, disabling it does not alone pose a major security risk, which could be further mitigated by restricting RDP access to the host with appropriate firewall policies.
Microsoft RDP Disable NLA in Remote Registry:
- Start > Run > Regedit. You may need to use “Run As” to launch it using an account with admin priviliges on the target server.
- File > “Connect Network Registry…”
- Enter remote computer name and click OK.
- Navigate to HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
- Select “SecurityLayer” and change the value to 0.
OR
- Open Registry Editor with administrative access.
- Connect Network Registry.
- Enter your remote computer Name.
- Browse to the Key “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp”.
- Find Value Name “UserAuthentication” and change Value Data to 0.
OR
- Open regedit on another computer on the same network.
- Under the File menu click “Connect Network Registry…”
- Enter your computer name and click Ok. If this fails to connect you may be out of luck.
- Scroll down in the left pane to find the newly added server. Navigate to this Key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp - Find the value “SecurityLayer” and change the data to 0 (that is a zero).
OR
- Press Windows image + R keys to open the run command box on your Microsoft windows.
- Type regedit and press Enter.
- In Registry Editor navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp - At the right-pane double-click at UserAuthentication REG_DWORD value.
- Set the Value Data to 0 and click OK.
Microsoft RDP Disable NLA in Remote PowerShell:
- $TargetServer = “Server_with_NLA_Enabled”
(Get-WmiObject -class “Win32_TSGeneralSetting” -Namespace root\cimv2\terminalservices -ComputerName $TargetServer -Filter “TerminalName=’RDP tcp’”).SetUserAuthenticationRequired(0)
Disable NLA using Group Policy:
- Create and apply GPO to the server(s) via the Group Policy Management Console.
- Edit the GPO and navigate to the following setting:
- Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security
- Set the policy “Require user authentication for remote connections by using Network Level Authentication” to DISABLED.
OR
- Press simultaneously the Windows image + R keys to open the run command box.
- Type gpedit.msc & press Enter to open the Group Policy Editor.
- At the left pane navigate to:
Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Security - At the right-pane, open the “Require user authentication for remote connections by using Network Level Authentication” policy.
- Select Disabled and click OK.
Disable NLA using Settings App:
- Click Start and select the Settings icon.
- On the Windows Settings page, select System.
- Scroll down and click About.
- Under Related settings, select Advanced System Settings.
- You will now see the System Properties window.
- Under Remote Desktop, uncheck the box Allow connections only from computers running Remote Desktop with Network level Authentication (recommended).
- Click OK.
Why is NLA important?
The advantages of Network Level Authentication are: It requires fewer remote computer resources initially, by preventing the initiation of a full remote desktop connection until the user is authenticated, reducing the risk of denial-of-service attacks.
Is NLA secure?
There are some security advantages to enabling NLA, but one of the drawbacks is that users with expired passwords are prevented from logging on to the remote system. More information about NLA and RDP can be found at the Microsoft site and on Wikipedia.