Руководства

Ошибка проверки подлинности RDP (CredSSP): что это и как исправить

«Произошла ошибка проверки подлинности» при RDP — несовпадение в исправлении CredSSP между клиентом и сервером. Что значит NLA и как исправить ошибку.

Опубликовано ~9 мин чтения

Короткий ответ: сообщение «Произошла ошибка проверки подлинности. Запрошенная функция не поддерживается. Это может быть связано с исправлением CredSSP для устранения уязвимости шифрования» означает, что патченный клиент и непропатченный сервер (или наоборот) расходятся в том, насколько строго применять исправление CredSSP — протокола, на котором держится Network Level Authentication (NLA). NLA заставляет RDP запросить имя пользователя и пароль до того, как откроется полноценная сессия удалённого рабочего стола, а не показывать экран входа Windows первым и проверять пароль уже после. Это делает проверку раньше и дешевле для сервера — неавторизованная попытка подключения просто не доходит до той точки, где начинает расходоваться память на сессию, — и именно поэтому старый или не-Windows клиент, который не говорит на CredSSP, не может подключиться к серверу, где NLA обязательна.

Где это находится в Windows

На сервере: Свойства системы → Удалённый доступ (или Параметры → Система → Удалённый рабочий стол → Дополнительные параметры в современной Windows) содержит флажок Разрешить подключения только с компьютеров, на которых работает удаленный рабочий стол с проверкой подлинности на уровне сети. Включён (по умолчанию на всех поддерживаемых версиях Windows) — значит NLA обязательна, и клиент без неё отклоняется ещё до появления экрана входа. Выключение пропускает старые клиенты, но ценой того, что весь экран входа до авторизации становится виден любому, кто дотянется до порта.

ОбластьРасположениеНастройка
Один компьютер, GUIСвойства системы → Удалённый доступ → Удалённый рабочий стол«Разрешить подключения только с компьютеров… с проверкой подлинности на уровне сети»
Один компьютер, реестрHKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-TcpUserAuthentication
Домен или много машин, групповая политикаКонфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удаленных рабочих столов → Узел сеансов удаленных рабочих столов → Безопасность«Требовать проверку подлинности пользователя для удаленных подключений путем использования проверки подлинности на уровне сети»

Значение реестра UserAuthentication в этом ключе RDP-Tcp — DWORD: 1 требует NLA, 0 — нет. Это то же самое значение, которое в итоге меняют и флажок в GUI, и групповая политика.

Зачем это нужно

  • Меньше поверхности до входа. Без NLA любой, кто дотянулся до порта 3389, доходит до самого экрана входа Windows ещё до предъявления каких-либо учётных данных — этот экран и инфраструктура сессии за ним — поверхность, по которой может постучаться удалённая неавторизованная сторона. NLA сначала проверяет подлинность по CredSSP и только потом выделяет настоящую сессию.
  • Дешевле для сервера под нагрузкой или атакой. Поток попыток подключения против сервера с NLA падает на лёгкой проверке учётных данных; тот же поток против сервера без NLA каждый раз доходит до запуска инфраструктуры сессии перед тем, как провалиться, — заметно более тяжёлая цена за попытку.
  • NLA не заменяет файрвол или VPN. NLA меняет момент проверки подлинности, а не то, доступен ли порт 3389 из интернета вообще. Сочетайте её с обычным усилением защиты: нестандартный порт, правило файрвола с ограничением по IP, либо вынос RDP за VPN целиком.

«Удаленному компьютеру требуется проверка подлинности на уровне сети»

Именно это сообщение значит, что используемый вами клиент не поддерживает NLA, а сервер её требует. Обычные причины по убыванию вероятности:

  • Старый клиент. Поддержка NLA появилась с RDP 6.0 и стандартна на любом клиенте Windows начиная с Windows Vista (с обновлением) и Windows 7, а также на современных мобильных клиентах и клиентах для Mac. Классический случай — непропатченный Windows XP или древнее сторонее приложение RDP.
  • Подключение к старой/legacy-цели, которая вообще не умеет NLA — например, некоторые встроенные или киоск-системы. Там решение обратное: ослабляют требование на целевой машине, а не трогают клиент.
  • Ключи mstsc вроде /admin иногда странно взаимодействуют с очень старыми конфигурациями сервера — сначала попробуйте обычное подключение, прежде чем копать дальше.

Если сервер под вашим контролем, а клиент действительно нельзя обновить, снимите флажок требования NLA в Свойства системы → Удалённый доступ, как описано выше, — понимая, что это осознанный обмен безопасности на совместимость, а не исправление ошибки.

Ошибка CredSSP encryption oracle remediation

Второе, на первый взгляд несвязанное сообщение на самом деле о том же протоколе, на котором держится NLA:

Пример вывода
Произошла ошибка проверки подлинности.
Запрошенная функция не поддерживается.

Это может быть связано с исправлением CredSSP для устранения уязвимости шифрования.

Это патч Microsoft от мая 2018 года для CVE-2018-0886, уязвимости в CredSSP, и он появляется, когда патченный клиент и непатченный сервер (или наоборот) расходятся в строгости применения исправления. Он управляется значением реестра AllowEncryptionOracle в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters, либо групповой политикой Oracle Remediation шифрования в Конфигурация компьютера → Административные шаблоны → Система → Делегирование учетных данных:

ЗначениеНазвание политикиСмысл
0Принудительно обновленные клиентыОтказывает любому клиенту без исправления CredSSP — безопасная настройка, к которой Microsoft постепенно всех и перевела
1Устранение уязвимостиПринимает непропатченный клиент, но только если тот уже достаточно обновлён, чтобы договориться безопасно, — промежуточный вариант
2УязвимоНикакой защиты — безоговорочно принимает старое, уязвимое поведение

Практическое решение для ошибки выше, с любой стороны, — полностью обновить Windows, а не постоянно ослаблять эту настройку: она существует, чтобы закрыть настоящую уязвимость в протоколе делегирования учётных данных, на котором держится NLA. Временно снизить значение до «Уязвимо», чтобы разово зайти на старую машину, которую вы всё равно собираетесь обновить, — разумный костыль; оставлять его так — нет.

Ошибки NLA предполагают, что подключение вообще достигает службы RDP. Если ничего не происходит, или ошибка касается самого соединения, а не проверки подлинности, см. «Удалённый рабочий стол не подключается» (англ.) (англ.) — там разобраны проверки файрвола, порта и сети, которые идут раньше этой.

Частые вопросы

Что означает «Произошла ошибка проверки подлинности» при RDP?

Полный текст — «Произошла ошибка проверки подлинности. Запрошенная функция не поддерживается. Это может быть связано с исправлением CredSSP для устранения уязвимости шифрования». Это патч Microsoft от мая 2018 года для CVE-2018-0886: патченный клиент и непатченный сервер (или наоборот) расходятся в строгости применения исправления протокола CredSSP, на котором держится Network Level Authentication.

Что такое Network Level Authentication (NLA)?

NLA заставляет RDP запросить имя пользователя и пароль до того, как откроется полноценная сессия удалённого рабочего стола, а не показывать экран входа Windows первым и проверять пароль уже после. Это дешевле для сервера под атакой и закрывает экран входа от неавторизованных подключений. Настройка — в «Свойства системы → Удалённый доступ», флажок «…с проверкой подлинности на уровне сети», включён по умолчанию на всех поддерживаемых версиях Windows.

Как исправить ошибку CredSSP encryption oracle remediation?

Правильное решение — полностью обновить Windows на обеих сторонах, а не постоянно ослаблять защиту. Временно значение AllowEncryptionOracle в реестре (или групповая политика Oracle Remediation шифрования) можно поставить в «Mitigated» или даже «Vulnerable», чтобы разово зайти на старую машину, которую вы всё равно собираетесь обновить, — но оставлять так постоянно не стоит, это реальная уязвимость.

Читайте также

Все статьи раздела