«Не подключается по RDP» — причина может быть в десятке мест: служба, порт, брандмауэр, профиль сети, права, сертификат, политика. RDP Diagnostic & Remediation Tool 5.0.1 делает аудит RDP целиком одной командой, показывает найденное с готовыми исправлениями и умеет доказать результат настоящим рукопожатием протокола. Ниже — что он проверяет, что показал прогон на живой машине и где легко ошибиться с кодами выхода.

rdp diagnostic tool cover

TL;DR: одна команда и четыре факта

  1. Без параметров — только чтение. Никаких изменений, пока не указан режим ремонта.
  2. Более 50 проверок. ОС, реестр и GPO, службы, брандмауэр, порт, TLS, права, журналы.
  3. Отчёт в двух видах. Самодостаточный HTML для человека и JSON для мониторинга.
  4. Доказательство — рукопожатие. Проверка -TestRdpTarget реально договаривается по X.224 и показывает требования NLA.
  5. Проверка. .\RDP-Tool.ps1 -DiagnoseOnly -ExportJson report.json.

Проблема, которую это решает

Диагностика RDP обычно идёт вслепую и по частям. Сначала смотрят службу TermService, потом порт в реестре, потом правило брандмауэра, потом профиль сети — и на каждом шаге легко забыть про следующий.

Хуже другое: часть причин вообще не видна без специальных знаний. Порт изменён в реестре, но не в брандмауэре. Политика домена запрещает NLA, локальная настройка разрешает. Сертификат истёк, но RDP продолжает работать с самоподписанным. Пользователь есть в системе, но не в группе удалённых рабочих столов.

Скрипт закрывает именно эту проблему: он обходит весь стек сверху вниз, собирает результат в один отчёт и к каждой найденной проблеме прикладывает исправление. А главное — не верит галочкам, а проверяет протокол.

Что такое RDP Diagnostic & Remediation Tool

flowchart TB
  OS["редакция ОС и роль RDP"] --> REG["реестр: локальные ключи и GPO"]
  REG --> SVC["службы терминалов"]
  SVC --> FW["брандмауэр и порт"]
  FW --> TLS["сертификат и NLA"]
  TLS --> PERM["права и группы"]
  PERM --> LOG["журналы событий RDP"]
Свойство Значение
Версия в разборе 5.0.1 (2026-10-10)
Тип один PowerShell-скрипт RDP-Tool.ps1
Размер 218 353 байта, 4 354 строки
Функций внутри 82
Зависимости системный PowerShell, без модулей из галереи
Платформы Windows 10, 11, Server
Отчёт HTML и JSON
Коды выхода 0, 1, 2, 3, 4, 5, 6, 99

Один файл — это осознанное решение: скрипт запускают на проблемной машине, часто без интернета и без права ставить модули. Копирование одного файла решает задачу доставки.

Возможности

Режимы

Режим Что делает
-DiagnoseOnly полный аудит только на чтение (и это же поведение по умолчанию)
-EnableRDP включает RDP и исправляет всё, что может
-DisableRDP закрывает RDP: запрет подключений и правила брандмауэра
-CheckUpdate спрашивает GitHub о новой версии, код 5 если она есть
-Update скачивает, проверяет, делает бэкап и заменяет себя

Действия с конфигурацией

Параметр Что делает
-SetPort 1024–65535 меняет порт прослушивания
-DisableNLA выключает Network Level Authentication
-AddUser u1,u2 добавляет учётки в группу удалённых рабочих столов
-RestartServices перезапускает службы терминалов
-ForcePrivateNetwork переводит профили сети в «частные»

Проверки и отчёты

Параметр Что делает
-TestRdpTarget host[:port] настоящее рукопожатие X.224 к локальной или удалённой машине
-ShowSessions список живых сессий
-TestExternal исходящие проверки DNS и TCP
-ExportReport file.html самодостаточный HTML-отчёт
-ExportJson file.json машиночитаемый отчёт для мониторинга
-Quiet, -NoColor, -NoEmoji режимы вывода для скриптов и старых консолей

Как это работает

flowchart LR
  RUN["запуск без параметров"] --> CHK["50+ проверок только на чтение"]
  CHK --> SUM["сводка и код выхода"]
  SUM --> REP["отчёт HTML или JSON"]
  REP --> FIX["ремонт с -Force или -WhatIf"]
  FIX --> PROBE["рукопожатие X.224 как доказательство"]

Порядок такой: проверки, сводка, отчёт, при необходимости — ремонт, затем доказательство.

Проверки идут по слоям, и это важно для чтения результата: сначала «а поддерживается ли вообще» (редакция ОС, роль), потом конфигурация (реестр, политики), потом службы, потом сеть и брандмауэр, потом криптография и права, и наконец журналы событий. Сбой на верхнем слое делает нижние бессмысленными, поэтому сводка сначала отвечает на вопрос «может ли это работать в принципе».

Ремонт выполняется только с явным режимом и только с повышенными правами, а флаг -WhatIf показывает планируемые изменения без применения. Это существенно: инструмент, который правит реестр и брандмауэр, обязан уметь рассказать, что он собирается сделать.

И последний шаг — рукопожатие. Скрипт реально открывает соединение и проходит согласование X.224, показывая, требуется ли NLA и какой сертификат предъявляется. Это единственная проверка, которая не верит конфигурации, а проверяет поведение.

Замеры и цифры

Проверено 13.11.2026, двумя проверками.

Что Значение Как
RDP-Tool.ps1 из релиза 218 353 байта, SHA-256 ca3f89c3…dfcf2598 скачивание ассета
Совпадение с SHA256SUMS.txt совпало сравнение хешей
Архив релиза RDP-Diagnostic-Tool-5.0.1.zip, 68 554 байта просмотр ассетов
Строк в скрипте 4 354 подсчёт
Функций в скрипте 82 подсчёт ^function
Версия внутри файла [version]'5.0.1' поиск по коду
Синтаксис 0 ошибок разбор парсером PowerShell
BOM присутствует (EF BB BF) побайтовая проверка
-Version v5.0.1 (2026-10-10), отчёт с идентификатором запуск
Живой прогон -DiagnoseOnly 48 проверок в отчёте, 209 строк вывода запуск с -SkipSlowChecks
Код выхода прогона 2 — «есть ошибки или предупреждения» фактический код
JSON-отчёт 17 429 байт, ключи tool, version, summary, results, remediations разбор файла
HTML-отчёт 20 508 байт, самодостаточный проверка размера
RDP Diagnostic Tool 5.0.1: прогон, отчёт и коды выхода
RDP Diagnostic Tool 5.0.1: прогон, отчёт и коды выхода

Отчёт стоит прочитать не по диагонали. В нашем прогоне на тестовой машине он показал одновременно: отсутствующий rdpudd.dll, необходимость перезагрузки из-за отложенных операций с файлами, профиль сети «Public» (публичные сети блокируют RDP по умолчанию), отсутствие шлюза по умолчанию и остановленный Microsoft Defender. Каждый пункт снабжён рекомендацией — от sfc /scannow до -ForcePrivateNetwork.

Отдельно полезен итоговый блок: инструмент пишет готовую строку подключения вида mstsc /v:<адрес> с указанием порта и требований NLA. Это мелочь, которая экономит переписку «а какой у нас порт».

Сильные стороны продукта

  • Аудит целиком, а не по частям. Стек проверяется в одном прогоне, без ручного обхода.
  • Безопасное поведение по умолчанию. Без параметров — только чтение; изменения требуют режима и прав.
  • -WhatIf на изменениях. Можно увидеть план до применения.
  • Доказательство протоколом. -TestRdpTarget проверяет рукопожатие, а не галочки в реестре.
  • Отчёт для людей и для машин. HTML читают глазами, JSON — мониторингом.
  • Один файл без зависимостей. Доставка на проблемную машину тривиальна.
  • Самопроверка обновления. -CheckUpdate отдаёт отдельный код, что удобно в конвейере.
  • Скриптовые коды выхода. Понятные числа вместо разбора текста.

Установка

# скачать скрипт и проверить контрольную сумму
Invoke-WebRequest https://github.com/paulmann/RDP-Diagnostic-Tool/releases/download/5.0.1/RDP-Tool.ps1 -OutFile RDP-Tool.ps1
Get-FileHash .\RDP-Tool.ps1 -Algorithm SHA256

# пробный прогон: только чтение
.\RDP-Tool.ps1 -DiagnoseOnly -ExportJson report.json

# полноценный аудит с HTML-отчётом
.\RDP-Tool.ps1 -ExportReport report.html -ExportJson report.json
Требование Значение
PowerShell системный; проверено на PowerShell 7.6
Права чтение — обычные; ремонт — администратор
Политика запуска нужен обход для локального файла: -ExecutionPolicy Bypass
Сеть не требуется для аудита; нужна для обновления
Редакция Windows Home не поддерживает RDP — код 3

Настройка

Что настроить Как
Порт -SetPort 3390 (вместе с режимом включения)
Права на вход -AddUser "DOMAIN\user"
Сетевой профиль -ForcePrivateNetwork только для доверенной сети
Глубина проверок -SkipSlowChecks — без DISM и прочих долгих проб
Проверка перезагрузки -SkipRebootCheck
Открытие отчёта -NoBrowser, чтобы не поднимать браузер
Вывод -Quiet, -NoColor, -NoEmoji для скриптов
flowchart TD
  M{"режим"} --> D["-DiagnoseOnly: чтение"]
  M --> E["-EnableRDP: включить и починить"]
  M --> X["-DisableRDP: закрыть"]
  D --> C{"код выхода"}
  E --> C
  C --> C0["0: готово"]
  C --> C2["2: есть проблемы"]
  C --> C3["3: редакция не поддерживается"]

Коды выхода

Код Значение
0 успех, система готова
1 критические проблемы, RDP не заработает
2 ошибки или предупреждения, RDP работает с дефектами
3 неподдерживаемая редакция (Windows Home)
4 не выполнено предварительное условие
5 есть новая версия
6 обновление не удалось
99 необработанная ошибка скрипта

Код 2 — самый частый и самый коварный: он означает «работает, но не так, как должно». В конвейере его легко принять за успех, если проверять только «не ноль». Разница между «подключиться можно» и «настроено правильно» — это и есть разница между нулём и двойкой, и её стоит сохранять в мониторинге, иначе смысл разделения теряется.

Что видно в отчёте, если читать по порядку

Отчёт устроен как разговор: сначала «что это за машина», потом «что нашлось», потом «что делать».

Начинается он с идентификатора прогона и времени — мелочь, которая нужна, когда отчётов за неделю накопилось двадцать. Дальше sysinfo: версия системы, адреса, параметры запуска. Это контекст, без которого вывод читается неверно: например, «публичный профиль сети» на сервере в стойке — норма, а на рабочей станции в офисе — вероятная причина отказа.

Потом идёт список результатов. В нашем прогоне их 48, и они разные по весу: часть — информация (Defender: Stopped), часть — прямая причина отказа (NO GATEWAY), часть — предупреждение о будущем (Pending reboot). Инструмент не смешивает их в один счётчик, а показывает с рекомендацией.

Поле remediations в JSON — это заготовки исправлений. В аудите они пусты, при ремонте заполняются: видно, что именно было изменено. Для журнала работ это ценнее, чем «сделал, работает».

И финальный блок — строка подключения. mstsc /v:<адрес> с портом и требованием NLA. Она выглядит как украшение, но именно её чаще всего просят в переписке с коллегами: готовый ответ вместо «посмотри в настройках и скажи мне порт».

Почему рукопожатие важнее галочек

Конфигурация RDP живёт в нескольких местах одновременно: реестр, политики домена, параметры службы, правила брандмауэра. Проверить каждое — не значит проверить результат: настройки могут быть верными по отдельности и противоречить друг другу.

Рукопожатие X.224 проверяет то, что видит клиент: сервер отвечает, версия протокола согласуется, требования безопасности объявляются. Это тест поведения, а не намерения.

Практическая разница появляется при разборе жалобы «с моей машины не подключается, а с соседней подключается». Конфигурация сервера одна и та же, значит причина на стороне клиента или сети — и -TestRdpTarget с разных машин покажет, где именно начинается расхождение.

Есть и ограничение: рукопожатие не проверяет аутентификацию. Того, что нужный пользователь действительно войдёт, оно не докажет — для этого нужен реальный вход.

Где инструмент экономит время, а где нет

Экономит на рутине: обход полутора десятков мест, сбор отчёта, проверка порта и брандмауэра вместе, копия конфигурации для сравнения «до и после».

Не экономит на решении. Что делать с публичным профилем сети, отключать ли NLA, добавлять ли пользователя в группу — вопросы безопасности, и инструмент на них не отвечает. Он даёт материал и рекомендации, но выбор остаётся за администратором.

Не заменяет и разбор журналов: он показывает события RDP, но интерпретировать причину отказа по коду ошибки 4625 всё равно придётся человеку.

И отдельно: инструмент не работает «через сеть» как агент. Запуск на каждой машине — отдельный прогон; централизованного сбора нет. Для парка машин это значит, что доставку скрипта и сбор отчётов надо организовать отдельно.

Подводные камни

  • Код 2 — не успех. Часть проблем остаётся, просто они не мешают подключиться прямо сейчас.
  • Код 99 — это баг, а не настройка. Необработанная ошибка скрипта: нужно сообщать, а не «дочинивать» руками.
  • Публичный профиль блокирует RDP. Перевод в «частный» — осознанное решение, а не автоматическое: в кафе и гостиницах так делать нельзя.
  • -DisableNLA снижает защиту. Параметр существует, но включать его стоит только по необходимости и с пониманием риска.
  • Порт меняется в двух местах. После -SetPort проверьте правило брандмауэра, иначе RDP «есть», а подключиться нельзя.
  • Перезагрузка не косметика. Отложенные операции с файлами означают, что часть изменений не применилась.
  • Windows Home не поддерживает RDP. Код 3 — это ответ по существу, а не сбой инструмента.
  • Запуск локального файла требует обхода политики. В рабочем домене это может быть запрещено — согласуйте способ запуска заранее.
  • Отчёт содержит чувствительные данные. В JSON есть адреса, имена машин и конфигурация; публиковать его как есть не стоит.
  • -ExportReport открывает браузер. В скрипте используйте -NoBrowser.
  • Версия 5.0.1 чинила только обновление. Само содержимое проверок не менялось: если рассчитывали на новые возможности, их здесь нет.
  • -WhatIf показывает план, но не гарантирует. Часть изменений зависит от служб и перезагрузки.

Аудит парка машин

Один прогон на одну машину — не то, что нужно администратору двадцати серверов. Простой способ собрать картину парка без сторонних систем.

Первый шаг: разложить отчёты по именам машин. -ExportJson "$env:COMPUTERNAME.json" даёт файл, который потом легко собрать в одну папку.

Второй: доставка. Скрипт лежит в общем каталоге или на внутреннем сервере; запуск — через планировщик задач или систему управления конфигурациями, которая уже есть.

Третий: сбор. JSON-отчёты копируются на один хост, дальше читаются любым удобным средством — от PowerShell до простого скрипта на Python.

Что смотреть в общей картине: не отдельные проблемы, а закономерности. Если у половины машин публичный профиль сети, вопрос не в настройке каждой, а в политике. Если у всех «требуется перезагрузка» — проблема в регламенте обновлений.

Четвёртый: сравнение. Раз в месяц прогон, раз в месяц сравнение кодов выхода. Рост числа машин с кодом 2 — сигнал, что настройки расходятся.

И честное ограничение: у инструмента нет понятия «парк». Всё вышеописанное — надстройка над одиночными прогонами, а не функция продукта.

Коды выхода в конвейере

Числа здесь продуманы, но читать их надо аккуратно.

Что проверять Как
Критичность код 1 — повод для тревоги, 2 — для задачи, 0 — тишина
Проверка обновлений код 5 — «есть новая версия», не ошибка
Неподдерживаемая редакция код 3 — отдельная ветка сценария
Сбой обновления код 6 — повод разобраться, а не повторять вслепую
Ошибка скрипта код 99 — заявка разработчику с логом

В мониторинге удобно разделять «работает» и «настроено правильно»: код 0 — оба условия, код 2 — первое без второго. Смешивать их в одну метрику значит потерять различие, ради которого инструмент и делался.

Что было бы в заметке о версии

Это обзор продукта, поэтому список изменений не пересказывается. Но про 5.0.1 стоит знать одно: исправление касалось только самообновления. В PowerShell 7 ответ на скачивание приходит как массив байт, а валидатор ждал строку и падал до записи файла — то есть обновление не срабатывало ни в одном релизе. Теперь содержимое нормализуется, а регрессионный тест подставляет в проверку форму реального ответа.

Для читателя это полезно как напоминание общего свойства: самопроверка, которая проверяет данные не того типа, чем приходят на самом деле, выглядит работающей ровно до первого реального запуска.

Чек-лист

  • [ ] Скачать RDP-Tool.ps1 и сверить SHA-256 с SHA256SUMS.txt.
  • [ ] Запустить без параметров — это безопасный аудит только на чтение.
  • [ ] Прочитать сводку: сначала «поддерживается ли», потом детали.
  • [ ] Сохранить JSON-отчёт как точку отсчёта.
  • [ ] Проверить блок «как подключиться»: адрес, порт, NLA.
  • [ ] При планировании ремонта запустить с -WhatIf.
  • [ ] Выполнить ремонт под администратором, осознанно выбрав параметры.
  • [ ] Перезагрузить машину, если инструмент этого требует.
  • [ ] Повторить аудит и сравнить JSON до и после.
  • [ ] Проверить рукопожатие: -TestRdpTarget <адрес>.
  • [ ] Убрать отчёт с чувствительными данными из общих папок.

Где инструмент не нужен

Границы стоит назвать прямо.

Не нужен, когда RDP не включён вовсе и это ожидаемо: достаточно одной команды и одной настройки.

Не нужен как средство постоянного мониторинга: у него нет агента и расписания, а запуск по таймеру на сотне машин превратится в самодельную систему сбора.

Не нужен вместо понимания протокола. Он подсказывает, что делать, но не объясняет, почему именно так: для разбора нестандартных случаев придётся читать про NLA, TLS и цепочку сертификатов.

И не нужен как замена регламента безопасности. Инструмент умеет отключать NLA и открывать профиль сети — это ровно те действия, которые без политики делают хуже.

Зато нужен там, где машина «почти работает»: подключение идёт через раз, у части пользователей, после перезагрузки. Именно в таких случаях перебор полутора десятков мест вручную занимает часы, а прогон — минуту. И ещё нужен при приёмке: свежая машина после установки — хороший повод снять базовый отчёт, чтобы через полгода было с чем сравнивать.

FAQ

Инструмент что-то меняет без моего согласия?

Нет. Без параметров идёт аудит только на чтение; изменения требуют режима или действия и повышенных прав.

Почему он находит проблемы, хотя RDP работает?

Потому что проверяется весь стек, включая то, что не мешает подключению прямо сейчас: состояние обновлений, профиль сети, антивирус.

Что означает код 2?

Ошибки или предупреждения: RDP работает, но с дефектами. Для конвейера это не «успех», а «нужно внимание».

Можно ли применить на Windows 10 Home?

Нет, RDP там не поддерживается: инструмент вернёт код 3.

Есть ли работа с удалёнными машинами?

Да, -TestRdpTarget может проверить рукопожатие с удалённым хостом, не проходя аутентификацию.

Нужны ли модули из галереи?

Нет: один файл, системный PowerShell.

Что изменилось в 5.0.1?

Исправлено самообновление: в PowerShell 7 ответ на скачивание приходит как массив байт, и проверка падала до записи файла. Теперь содержимое нормализуется, а регрессионный тест покрывает этот случай.

Итог

RDP Diagnostic Tool 5.0.1 решает задачу, которая обычно упирается в «пойди по списку и не забудь полсотни мест»: 50+ проверок, отчёт с готовыми исправлениями и проверка протоколом вместо веры в галочки. Прогон подтвердил обещания: 218 353 байта, 82 функции, ноль ошибок синтаксиса, 48 проверок в отчёте, понятные размеры JSON и HTML, код выхода 2 при найденных проблемах. Границы честные: ремонт требует прав, публичный профиль сети блокирует RDP по замыслу, а код 2 нельзя читать как «всё хорошо».

Цитата: Конфигурация говорит, что RDP разрешён; рукопожатие говорит, работает ли он.

Связанные материалы

LLM Summary

  • Тема: RDP Diagnostic & Remediation Tool 5.0.1 — PowerShell-скрипт для аудита, ремонта и проверки стека RDP на Windows.
  • Поставка: один файл RDP-Tool.ps1 — 218 353 байта, 4 354 строки, 82 функции, 0 ошибок синтаксиса по парсеру; в файле $script:ToolVersion = [version]'5.0.1', BOM присутствует.
  • Проверки: более 50 — редакция ОС, реестр и групповые политики, службы терминалов, брандмауэр, порт, TLS-сертификат, права, антивирус, журналы событий RDP.
  • Режимы: -DiagnoseOnly (по умолчанию, только чтение), -EnableRDP, -DisableRDP, -CheckUpdate, -Update; действия — -SetPort, -DisableNLA, -AddUser, -RestartServices, -ForcePrivateNetwork.
  • Проверка протоколом: -TestRdpTarget host[:port] выполняет реальное согласование X.224 и показывает требования NLA без аутентификации.
  • Коды выхода: 0 успех; 1 критично; 2 предупреждения; 3 неподдерживаемая редакция; 4 не выполнены предпосылки; 5 есть обновление; 6 обновление не удалось; 99 необработанная ошибка.
  • Проверено 13.11.2026: SHA-256 ca3f89c398a68975018276dcc3ec9a158409ed1ca4145f9cebe33b74dfcf2598 совпал с SHA256SUMS.txt; архив 68 554 байта; -Version печатает v5.0.1 (2026-10-10).
  • Живой прогон: -DiagnoseOnly -SkipSlowChecks — 48 проверок в отчёте, 209 строк вывода, код выхода 2; найдены отсутствующий rdpudd.dll, требуемая перезагрузка, публичный профиль сети, отсутствие шлюза по умолчанию, остановленный Defender; JSON — 17 429 байт (ключи tool, version, summary, results, remediations), HTML — 20 508 байт.
  • Ограничения: ремонт требует прав администратора; Windows Home не поддерживает RDP; публичные профили сети блокируют RDP по замыслу; отчёты содержат чувствительные данные.
  • Версия 5.0.1 исправляет только самообновление: в PowerShell 7 Invoke-WebRequest отдаёт .Content как массив байт, из-за чего валидатор падал до записи файла.
  • Ссылки: https://github.com/paulmann/RDP-Diagnostic-Tool, https://github.com/paulmann/RDP-Diagnostic-Tool/releases/tag/5.0.1

Промт для агента (установка и настройка)

Готовый промт: скопируйте блок целиком. Источник шагов — README.md и встроенная справка -Help (файла AGENTS.md в репозитории нет — проверено 13.11.2026), сверено с прогоном на живой машине.

Задача: провести аудит RDP на Windows-машине, при необходимости починить стек и доказать работоспособность рукопожатием.

Материалы:
- репозиторий: https://github.com/paulmann/RDP-Diagnostic-Tool
- README: https://github.com/paulmann/RDP-Diagnostic-Tool/blob/main/README.md
- релиз и SHA256SUMS: https://github.com/paulmann/RDP-Diagnostic-Tool/releases/tag/5.0.1

Шаг 1. Скачать RDP-Tool.ps1 и сверить хеш: Get-FileHash .\RDP-Tool.ps1 -Algorithm SHA256 — сравнить с SHA256SUMS.txt.
Шаг 2. Запустить аудит только на чтение: .\RDP-Tool.ps1 -DiagnoseOnly -SkipSlowChecks -ExportJson before.json -ExportReport before.html -NoBrowser
Шаг 3. Прочитать сводку в порядке слоёв: редакция и роль, конфигурация, службы, сеть и брандмауэр, TLS и права, журналы.
Шаг 4. Зафиксировать код выхода: 0 — готово, 1 — критично, 2 — предупреждения, 3 — редакция не поддерживает RDP.
Шаг 5. Перед ремонтом выполнить примерку: .\RDP-Tool.ps1 -EnableRDP -WhatIf
Шаг 6. Выполнить ремонт под администратором с осознанными параметрами (-SetPort, -AddUser, -ForcePrivateNetwork).
Шаг 7. Перезагрузить машину, если инструмент сообщает об отложенных операциях.
Шаг 8. Повторить аудит: .\RDP-Tool.ps1 -DiagnoseOnly -ExportJson after.json
Шаг 9. Сравнить before.json и after.json по полю results и коду выхода.
Шаг 10. Проверить рукопожатие: .\RDP-Tool.ps1 -TestRdpTarget <адрес:порт>
Шаг 11. Убрать отчёты из общих папок: в них адреса, имена машин и конфигурация.

Запрещено:
- запускать ремонт без -WhatIf на первом проходе;
- включать -ForcePrivateNetwork в недоверенной сети;
- отключать NLA без письменной причины: это снижает защиту;
- считать код выхода 2 успехом;
- открывать порт 3389 в интернет вместо VPN или RD Gateway;
- применять на Windows Home: RDP там не поддерживается, ожидаем код 3;
- публиковать JSON-отчёт без вычистки адресов и имён.

Что считать успехом: аудит выполнен дважды, коды выхода и JSON сравнены, рукопожатие проходит, отчёт сохранён вне общих папок, изменения задокументированы.