Короткий ответ: сообщение «Произошла ошибка проверки подлинности. Запрошенная функция не поддерживается. Это может быть связано с исправлением 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-Tcp | UserAuthentication |
| Домен или много машин, групповая политика | Конфигурация компьютера → Административные шаблоны → Компоненты 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
Ошибки 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», чтобы разово зайти на старую машину, которую вы всё равно собираетесь обновить, — но оставлять так постоянно не стоит, это реальная уязвимость.