RDP между двумя серверами вне домена не проходит с включённой NLA: уровень безопасности RDP, уровень NTLM и TLS должны совпадать на обеих сторонах

Что было. Два сервера на Windows Server 2016 в рабочей группе, в разных сетях. Подключение с одного на другой по RDP работает, пока на целевом сервере выключена проверка подлинности на уровне сети; с включённой NLA не проходит. Автор не указал точный текст ошибки, а участники разобрали типичные причины для серверов вне домена.

Почему вне домена сложнее. В домене NLA использует Kerberos через контроллер домена. Между машинами рабочей группы остаётся только NTLM внутри CredSSP, и для успеха обе стороны должны договориться о версии NTLM, о уровне безопасности RDP и о версиях TLS. Любое расхождение выглядит как «с NLA не пускает».

Что проверить (по ответам участников).

  1. Уровень безопасности RDP на целевом сервере: политика «Требовать использование специального уровня безопасности для удалённых подключений» не должна быть «RDP Security Layer»: с ним NLA невозможна. Значение «Согласование» или «SSL».
  2. Уровень NTLM на обеих машинах: HKLM\SYSTEM\CurrentControlSet\Control\Lsa\LmCompatibilityLevel не ниже 3 («Отправлять только NTLMv2») и одинаковый; политика «Сетевая безопасность: уровень проверки подлинности LAN Manager». Если на одной стороне запрещён входящий NTLM («Ограничения NTLM»), NLA вне домена работать не будет.
  3. TLS: обе стороны должны иметь общую версию (обычно 1.2); ужесточение до «только 1.3» ломает RDP (отдельный разбор).
  4. Учётная запись: при подключении из рабочей группы указывать имя как имя_сервера\пользователь или .\пользователь, а не просто пользователь, иначе клиент подставит своё имя машины как домен. Локальная учётная запись без пароля по сети не работает вообще.
  5. Время: расхождение часов между машинами в несколько минут ломает NTLM-обмен так же, как Kerberos.

Диагностика на целевом сервере. Security: событие 4625 со статусом 0xC000006D (неверное имя/пароль или неподдерживаемый уровень NTLM) или 0xC000006A; System: Schannel 36871/36874 (TLS); «TerminalServices-RemoteConnectionManager/Operational»: 1149 означает, что аутентификация NLA прошла, значит, проблема не в ней.

Что не делать. Не оставлять NLA выключенной между двумя серверами с публичными адресами: без NLA любой, кто дотянулся до порта, получает экран входа и возможность перебора. Если согласовать NTLM не удаётся, лучше закрыть RDP брандмауэром до конкретного адреса второго сервера, чем отключать NLA.

Уровень проверки подлинности описан в документации Microsoft.