RDP: настройка и безопасное подключение к удаленному рабочему столу Windows

RDP: настройка и безопасное подключение к удаленному рабочему столу Windows Полезное

RDP (Remote Desktop Protocol) — проприетарный протокол прикладного уровня от Microsoft для удаленного управления компьютером: клиент передает нажатия клавиш и движения мыши, сервер присылает изображение рабочего стола. Протокол работает поверх стандартов ITU-T T.120 и появился в Windows NT 4.0 Terminal Server Edition в 1998 году. Дальше — как RDP устроен технически, чем он отличается от RDS, VDI и клиентских приложений и как настроить подключение так, чтобы не открыть сервер для атак.

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

RDP — это именно протокол передачи данных, а не программа и не служба. По умолчанию сервер слушает TCP-порт 3389; начиная с Windows 8 и Windows Server 2012 добавлена опциональная передача части графики по UDP на том же номере порта для снижения задержки на нестабильных каналах. Порт можно сменить в реестре, но это не замена реальной защите — смена порта прячет сервис от массового автосканирования, а не от целевой атаки.

Соединение шифруется TLS с версии протокола RDP 6.0 (Windows Vista/Server 2008). До запуска графической сессии выполняется NLA (Network Level Authentication) — проверка учетных данных на уровне сети, еще до загрузки рабочего стола. NLA включена по умолчанию в Windows 7 SP1 и новее и снижает нагрузку от анонимных попыток подключения, отсекая их до старта сессии.

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

RDP, RDS, VDI и клиенты — в чем разница

Эти термины часто путают, хотя они описывают разные уровни системы:

Термин Что это Уровень
RDP Протокол передачи экрана и ввода Сетевой протокол
RDS (Remote Desktop Services) Роль Windows Server для многопользовательских терминальных сессий поверх RDP (до Server 2008 R2 называлась Terminal Services) Серверная служба
VDI (Virtual Desktop Infrastructure) Архитектура, где каждому пользователю выделяется отдельная виртуальная машина, доступ к которой тоже идет по RDP Инфраструктура виртуализации
mstsc, xfreerdp, Microsoft Remote Desktop Клиентские приложения, которые устанавливают RDP-соединение Клиентское ПО

RDS — несколько сессий на одной ОС сервера: экономично, но ресурсы общие, софт с правами администратора системы не поставить. VDI — отдельная ВМ на пользователя: полная изоляция, но выше требования к ресурсам.

Для нескольких одновременных пользователей на RDS нужна отдельная лицензия RDS CAL; для двух административных сессий в Server она не требуется. Точное число CAL и условия зависят от редакции Server и модели лицензирования Microsoft.

Какие клиенты нужны для подключения

Сервер RDP (прием входящих подключений) есть в Windows Pro, Enterprise и во всех редакциях Windows Server; в Windows Home сервера RDP нет, только клиент. Клиентское ПО есть практически под любую платформу:

  • Windows — встроенный mstsc.exe, либо современное приложение Remote Desktop из Microsoft Store.
  • Linux — xfreerdp (свободная реализация протокола, входит в пакет FreeRDP) или графические обертки поверх него.
  • macOS, iOS, Android — официальное приложение Microsoft Remote Desktop.

В Unix-мире для удаленного рабочего стола чаще встречается VNC на протоколе RFB (Remote Framebuffer) — другой протокол, несовместимый с RDP напрямую. Если нужно принимать именно RDP-подключения на Linux-сервере, поднимают XRDP — он реализует протокол RDP поверх системы Linux.

Как включить RDP на сервере

На Windows Server или Windows Pro/Enterprise минимальная настройка — это включить прием входящих RDP-подключений и разрешить порт в брандмауэре. Через PowerShell (с правами администратора):

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

Результат: fDenyTSConnections меняется на 0 (разрешить подключения), правила брандмауэра группы «Remote Desktop» переходят в Enabled. Сервер примет RDP-подключение с любого адреса на порту 3389 — поэтому следующий шаг, ограничение доступа, обязателен.

Для многопользовательской RDS-сессии в Server Manager дополнительно добавляют роль Remote Desktop Session Host через мастер «Добавить роли и компоненты» и перезагружают сервер; для одиночного административного доступа эта роль не нужна.

Как подключиться клиентом

С Windows: Win + R, ввести mstsc, указать IP или имя сервера, ввести логин и пароль учетной записи, которой разрешен удаленный доступ (группа «Пользователи удаленного рабочего стола» в локальных группах сервера).

С Linux через FreeRDP пароль лучше не указывать прямо в команде — он попадет в историю шелла и список процессов. Клиент сам запросит пароль, если его не передать флагом:

xfreerdp /v:203.0.113.10:3389 /u:Administrator /sec:tls

Результат: откроется окно с приглашением ввести пароль, после успешной проверки — окно с рабочим столом сервера 203.0.113.10. Флаг /sec:tls явно требует TLS-защиту канала вместо более старого согласования безопасности.

Безопасность: почему нельзя просто открыть порт 3389 в интернет

Порт 3389, открытый напрямую в интернет, — частая причина компрометации серверов Windows: его массово сканируют боты и перебирают пароли. Показательный пример — уязвимость BlueKeep (CVE-2019-0708, 2019 год): Microsoft выпустила патчи даже для снятых с поддержки Windows XP и Server 2003, настолько высок был риск червя через открытый RDP без участия пользователя. Обновленные системы от нее защищены, но пример показывает цену открытого порта.

Практический порядок защиты RDP:

  1. Не выставлять порт 3389 напрямую в интернет. Подключаться только через VPN или через RD Gateway (RDG) — службу, которая туннелирует RDP поверх HTTPS (порт 443) и не требует держать 3389 открытым снаружи вовсе.
  2. Держать NLA включенной — она отсекает часть анонимных попыток подбора до открытия сессии (проверить: свойства системы — Удаленный доступ — «Разрешить подключения только с проверкой подлинности на уровне сети»).
  3. Использовать длинные уникальные пароли и политику блокировки учетной записи после нескольких неудачных попыток входа — это защита именно от онлайн-перебора, отдельная от шифрования канала.
  4. Ограничивать доступ по IP-адресу в брандмауэре, если известен пул адресов, откуда подключаются легитимные пользователи (офис, VPN-шлюз).
  5. Включить двухфакторную аутентификацию для RDP-доступа — штатно через RD Gateway с NPS-расширением Azure MFA, либо через сторонние решения для VPN, за которым скрыт RDP.

Порядок для пункта 4 важен, чтобы не заблокировать себе доступ: сначала создается точечное разрешающее правило для доверенного адреса, и только потом отключается широкое правило по умолчанию, с проверкой из второй сессии перед закрытием первой:

New-NetFirewallRule -DisplayName "RDP-office-only" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 203.0.113.0/24 -Action Allow
Set-NetFirewallRule -DisplayGroup "Remote Desktop" -Enabled False

Результат: по RDP смогут подключаться только адреса из подсети 203.0.113.0/24, остальным брандмауэр откажет. Перед второй командой стоит открыть тестовое подключение с доверенного адреса, иначе при ошибке в подсети можно потерять доступ к серверу.

Если подключение не проходит

  • Ошибка сети или таймаут — чаще всего порт 3389 закрыт брандмауэром сервера или провайдера; проверить правило Remote Desktop и доступность порта из сети клиента.
  • Ошибка учетных данных при верном пароле — учетная запись не входит в группу «Пользователи удаленного рабочего стола»; добавить ее через «Управление компьютером» — «Локальные пользователи и группы».
  • Черный экран после входа — обычно проблема видеодрайвера или профиля пользователя на сервере, а не самого соединения; помогает переподключение с явным размером окна.
  • Разрыв сессии на нестабильном канале — в настройках клиента стоит принудительно отключить UDP-транспорт, чтобы RDP шел только через TCP.

Выводы

  • RDP — это протокол передачи экрана и ввода, а не программа; сервер и клиент — отдельные компоненты поверх него.
  • RDS — многопользовательские терминальные сессии на одной ОС, VDI — отдельная виртуальная машина на пользователя; выбор зависит от нужного уровня изоляции и ресурсов.
  • Сервер RDP есть в Windows Pro/Enterprise/Server, в Windows Home — только клиент.
  • Открытый в интернет порт 3389 — основной источник компрометации; правильная защита — VPN или RD Gateway, NLA, сильные пароли, ограничение по IP, 2FA.
  • Смена номера порта снижает шум от автосканеров, но не заменяет перечисленные выше меры защиты.

Где применяется / связь с практикой

Освойте тему на практике

Настройка и защита удаленного доступа по RDP — стандартная задача администратора Windows: терминальные серверы, администрирование без физического доступа, удаленные рабочие места сотрудников. Разобраться в администрировании Windows Server, RDS/VDI и политиках безопасности домена подробно можно на курсе Windows Professional в Otus. Формат обучения и вопросы преподавателям — на открытых уроках Otus.

Тема тесно связана с сетевой безопасностью, VPN и администрированием Windows Server.

FAQ

Можно ли подключаться по RDP с пустым паролем учетной записи?
Нет, Windows по умолчанию блокирует вход по RDP для учетных записей с пустым паролем.

Есть ли RDP-сервер в Windows Home?
Нет, прием входящих подключений доступен только в Pro, Enterprise и Windows Server; в Home есть только клиент.

Актуальна ли уязвимость BlueKeep сейчас?
Нет, патчи вышли еще в 2019 году, включая снятые с поддержки системы; на обновленных серверах риска от нее нет, но общие правила защиты открытого RDP это не отменяет.

OTUS Журнал
Скидка 5% 12-19 октября на курсы (popup)
Бесплатные открытые уроки (поп-ап)