15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
09.10.2024

Использование протокола удалённого рабочего стола (RDP) для входа на ваш Windows Server

Remote Desktop Protocol (RDP) — это проприетарный сетевой протокол Microsoft, обеспечивающий зашифрованный полный графический доступ к удалённой машине Windows через TCP-порт 3389. Он передаёт вывод изображения с сервера на клиент, а ввод с клавиатуры и мыши — обратно на сервер, фактически предоставляя вам живой интерактивный сеанс на машине, у которой вы физически не присутствуете.

Для администраторов серверов RDP является основным методом управления экземпляром Windows Server — будь то физическая машина в центре обработки данных, среда VPS Хостинга, или Выделенный сервер под управлением Windows Server 2019, 2022 или более поздней версии. Это руководство охватывает полный рабочий процесс: включение RDP, защиту от реальных векторов атак, подключение из Windows, macOS и Linux, а также диагностику сбоев, которые застают администраторов врасплох.

Как работает RDP изнутри

Прежде чем изменять какой-либо параметр конфигурации, понимание архитектуры протокола окупится при устранении неполадок.

RDP работает через TCP (и опционально UDP для перенаправления мультимедиа) и использует TLS 1.2/1.3 для шифрования транспорта во всех современных выпусках Windows Server. Стек сеансов состоит из нескольких виртуальных каналов, которые одновременно передают различные типы данных:

  • Графический канал — сжатые обновления изображения с использованием RemoteFX или ускорения GDI
  • Канал ввода — события клавиатуры и мыши
  • Канал буфера обмена — двунаправленный обмен буфером обмена
  • Каналы перенаправления дисков/принтеров — сопоставление локальных ресурсов с удалённым сеансом
  • Аудиоканал — перенаправление воспроизведения и записи удалённого звука

Каждый канал мультиплексируется через одно TCP-соединение с портом 3389 по умолчанию. Серверный компонент — TermService (Remote Desktop Services), а прослушиватель управляется RDPWinST.sys на уровне ядра. При изменении порта прослушивания вы изменяете значение реестра, которое этот драйвер считывает при запуске службы.

Проверка подлинности на уровне сети (NLA) добавляет уровень аутентификации перед сеансом с использованием CredSSP (Credential Security Support Provider). При включённой NLA клиент должен пройти аутентификацию с действительными учётными данными до того, как сервер выделит полный сеанс рабочего стола, что значительно сокращает поверхность атаки для атак типа «отказ в обслуживании» и перебора паролей на экране входа.

Контрольный список предварительных требований

Убедитесь в выполнении каждого пункта ниже перед попыткой подключения:

  • Экземпляр Windows Server (2016, 2019 или 2022) с включённым RDP
  • Публичный IPv4-адрес или разрешаемое имя хоста для сервера
  • Действительная учётная запись уровня администратора на сервере
  • RDP-клиент, установленный на вашем локальном компьютере
  • Порт 3389 (или ваш пользовательский порт), открытый как в брандмауэре ОС, так и в любом вышестоящем сетевом брандмауэре или группе безопасности
  • Поддержка NLA на стороне клиента (включена по умолчанию во всех современных RDP-клиентах для Windows, macOS и Linux)

Шаг 1: Включение RDP на Windows Server

RDP по умолчанию отключён на новых установках Windows Server. Существует два надёжных метода его включения.

Метод A: Графический интерфейс (Свойства системы)

  1. Откройте Диспетчер серверов или нажмите Win + R, введите sysdm.cpl и нажмите Enter.
  2. Перейдите на вкладку Удалённый доступ.
  3. В разделе Удалённый рабочий стол выберите Разрешить удалённые подключения к этому компьютеру.
  4. Убедитесь, что установлен флажок Разрешить подключения только с компьютеров, на которых работает удалённый рабочий стол с проверкой подлинности на уровне сети.
  5. Нажмите ОК.

Метод B: PowerShell (предпочтительный для автоматизации)

Для автономных или скриптовых развёртываний PowerShell быстрее и поддаётся написанию сценариев:

# Enable RDP
Set-ItemProperty -Path 'HKLM:SystemCurrentControlSetControlTerminal Server' `
    -Name "fDenyTSConnections" -Value 0

# Enable NLA
Set-ItemProperty -Path 'HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' `
    -Name "UserAuthentication" -Value 1

# Allow RDP through Windows Firewall
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

# Confirm the service is running
Set-Service -Name TermService -StartupType Automatic
Start-Service TermService

Проверка правила брандмауэра

Встроенная группа правил брандмауэра «Удалённый рабочий стол» охватывает необходимые правила для входящего трафика. Проверьте с помощью:

Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Select-Object DisplayName, Enabled, Direction

Если вы находитесь за группой безопасности облачного провайдера (распространено в средах VPS с cPanel или управляемых VPS), вам также необходимо открыть порт 3389 во внешней панели брандмауэра провайдера — одного брандмауэра ОС недостаточно.

Шаг 2: Определение публичного IP-адреса сервера

С консоли сервера

Откройте командную строку с повышенными привилегиями и выполните:

ipconfig /all

Найдите IPv4-адрес под активным сетевым адаптером. На сервере с несколькими сетевыми картами (распространено на выделенном оборудовании) определите адаптер, подключённый к публичной сети, сопоставив его со шлюзом по умолчанию.

Для более чистого вывода используйте PowerShell:

Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notlike "127.*" } |
    Select-Object InterfaceAlias, IPAddress

Из панели управления хостингом

Если вы предоставили сервер через хостинг-провайдера, публичный IP указан в панели управления. Для Выделенных серверов AlexHost IP отображается сразу после подготовки в личном кабинете.

Важный граничный случай: Если ваш сервер находится за NAT (например, в частном облаке или гипервизоре с внутренней сетью), IP, отображаемый ipconfig, будет частным адресом RFC 1918. Вам потребуется подключиться к публичному IP шлюза NAT и настроить перенаправление портов на частный IP сервера на порту 3389.

Шаг 3: Подключение к серверу через RDP

Из Windows

Встроенный клиент — mstsc.exe (Microsoft Terminal Services Client). Запустите его из окна «Выполнить» (Win + R) или из меню «Пуск»:

mstsc /v:YOUR_SERVER_IP:3389

Для полноэкранного сеанса с отключённым перенаправлением дисков (безопасный параметр по умолчанию):

mstsc /v:YOUR_SERVER_IP /f /nodrives

В графическом интерфейсе:

  1. Введите IP сервера в поле Компьютер.
  2. Нажмите Показать параметры, чтобы предварительно заполнить имя пользователя и избежать дополнительного запроса учётных данных.
  3. На вкладке Взаимодействие выберите подходящую скорость соединения для оптимизации отрисовки.
  4. Нажмите Подключить, примите предупреждение о сертификате при первом подключении (проверьте отпечаток сертификата, если безопасность критична) и введите пароль.

Из macOS

Официальное приложение Microsoft Microsoft Remote Desktop (доступно бесплатно в Mac App Store) является рекомендуемым клиентом.

  1. Откройте приложение и нажмите кнопку +, затем Добавить ПК.
  2. Введите IP сервера в поле Имя ПК.
  3. В разделе Учётная запись пользователя нажмите Добавить учётную запись пользователя и введите свои учётные данные.
  4. При необходимости настройте параметры Дисплея и перенаправление Устройств и звука.
  5. Дважды щёлкните сохранённое подключение для начала сеанса.

Из Linux

В Linux существует два зрелых варианта:

Remmina (на основе GTK, рекомендуется для настольных сред):

sudo apt install remmina remmina-plugin-rdp   # Debian/Ubuntu
sudo dnf install remmina remmina-plugin-rdp   # RHEL/Fedora

Запустите Remmina, создайте новое подключение, выберите RDP в качестве протокола, введите IP сервера, учётные данные и подключитесь.

FreeRDP (командная строка, идеально подходит для написания сценариев или клиентов без графического интерфейса):

sudo apt install freerdp2-x11
xfreerdp /v:YOUR_SERVER_IP /u:Administrator /p:'YourPassword' /cert:ignore /dynamic-resolution

Флаг /cert:ignore подавляет предупреждение о сертификате — допустимо в контролируемой среде, но в производственной среде следует заменить надлежащим закреплением сертификата.

Сравнение RDP-клиентов

ФункцияWindows (mstsc)macOS (MS RD App)Linux (FreeRDP)Linux (Remmina)
Поддержка NLAДаДаДаДа
Перенаправление дисковДаДаДаДа
Общий буфер обменаДаДаДаДа
Перенаправление звукаДаДаДа (плагин)Да (плагин)
Несколько мониторовДаДаДа (`/multimon`)Ограниченно
RemoteFX / GPUДаЧастичноДаЧастично
Аутентификация по смарт-картеДаНетДаНет
Флаги командной строкиДаНетДа (полные)Нет
СтоимостьБесплатно (встроен)БесплатноБесплатно (открытый исходный код)Бесплатно (открытый исходный код)

Шаг 4: Защита RDP от реальных угроз

RDP — одна из наиболее активно атакуемых служб в интернете. Shodan постоянно индексирует миллионы открытых RDP-конечных точек, а автоматизированные кампании по перебору паролей работают круглосуточно. Следующие меры не являются необязательными для любого производственного сервера.

Изменение порта прослушивания по умолчанию

Переход с 3389 на нестандартный порт устраняет подавляющее большинство автоматизированных сканеров. Отредактируйте реестр:

$newPort = 54321  # Replace with your chosen port
Set-ItemProperty -Path 'HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' `
    -Name "PortNumber" -Value $newPort -Type DWord

# Update firewall rule
New-NetFirewallRule -DisplayName "RDP Custom Port" -Direction Inbound `
    -Protocol TCP -LocalPort $newPort -Action Allow

# Disable the default rule
Disable-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)"

Restart-Service TermService

Не забудьте обновить группу безопасности облака, чтобы разрешить новый порт и заблокировать 3389.

Ограничение доступа по IP-адресу

Если ваша административная рабочая станция имеет статический IP, ограничьте RDP только этим IP:

Set-NetFirewallRule -DisplayName "RDP Custom Port" `
    -RemoteAddress "YOUR_ADMIN_IP"

Применение политики блокировки учётных записей

Предотвратите атаки методом перебора, настроив порог блокировки учётных записей. В групповой политике (gpedit.msc):

  • Порог блокировки учётной записи: 5 неверных попыток
  • Продолжительность блокировки учётной записи: 30 минут
  • Сброс счётчика блокировки учётной записи через: 15 минут

Или через PowerShell:

net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:15

Развёртывание VPN или SSH-туннеля в качестве шлюза

Наиболее надёжный подход — вообще не открывать RDP в публичный интернет. Разместите RDP за VPN (WireGuard или OpenVPN) или SSH-туннелем. Администраторы сначала подключаются к VPN, а затем через RDP к частному IP сервера. Это полностью устраняет поверхность атаки.

Включение Windows Defender Credential Guard

В Windows Server 2016 и более поздних версиях Credential Guard изолирует хэши учётных данных в анклаве безопасности на основе виртуализации, предотвращая атаки типа pass-the-hash, которые могут использоваться для перемещения из скомпрометированного RDP-сеанса.

Аудит и ведение журнала RDP-сеансов

Включите аудит через групповую политику в разделе Конфигурация компьютера > Параметры Windows > Параметры безопасности > Расширенная настройка политики аудита > Вход/Выход. Регистрируйте как успешные, так и неудачные события. Пересылайте журналы в SIEM или как минимум регулярно просматривайте события Event ID 4624 (успешный вход) и Event ID 4625 (неудачный вход) в средстве просмотра событий.

Шаг 5: Устранение распространённых сбоев подключения RDP

Отказ в подключении (код ошибки 0x204 / «Удалённый компьютер недоступен»)

Это почти всегда проблема брандмауэра или маршрутизации.

# Test from the client machine (replace with your server IP and port)
Test-NetConnection -ComputerName YOUR_SERVER_IP -Port 3389

Если TcpTestSucceeded возвращает False, порт заблокирован. Проверьте:

  1. Брандмауэр ОС на сервере (Get-NetFirewallRule -DisplayGroup "Remote Desktop")
  2. Группу безопасности или ACL облачного провайдера
  3. Любой промежуточный аппаратный брандмауэр между клиентом и сервером

Ошибка аутентификации («Произошла ошибка проверки подлинности. Запрошенная функция не поддерживается.»)

Обычно это означает, что клиент не поддерживает версию Credential Security Support Provider (CredSSP), требуемую сервером, что часто проявляется после обновления безопасности Windows (патч CVE-2018-0886). Исправление на сервере:

# Temporary workaround — update the client instead when possible
Set-ItemProperty -Path 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemCredSSPParameters' `
    -Name "AllowEncryptionOracle" -Value 2 -Type DWord

Постоянным решением является обновление RDP-клиента до исправленной версии, поддерживающей обновлённый протокол CredSSP.

«Удалённый сеанс был отключён, так как нет доступных серверов лицензирования удалённых рабочих столов»

Это происходит, когда роль Remote Desktop Session Host (RDSH) установлена на сервере, но сервер лицензирования RD не настроен. Для простого административного доступа (не для многопользовательских развёртываний RDSH) удалите роль RDSH или настройте 120-дневный льготный период:

# Check licensing mode
(Get-WmiObject -Namespace root/CIMV2/TerminalServices -Class Win32_TerminalServiceSetting).LicensingType

Значение 2 означает «На устройство», 4 — «На пользователя». Для доступа только администраторов значение должно быть 5 (не настроено / льготный период).

Чёрный экран после входа

Чёрный экран при RDP-подключении обычно указывает на одну из трёх причин:

  • Сбой Explorer.exe: Нажмите Ctrl + Alt + End для открытия диспетчера задач, затем запустите explorer.exe через Файл > Запустить новую задачу.
  • Конфликт драйвера дисплея: Отключите аппаратное ускорение в RDP-сеансе через групповую политику.
  • Проблема с удалённым доступом к GPU: На серверах с выделенными GPU (актуально для рабочих нагрузок GPU Хостинга) убедитесь, что адаптер RemoteFX vGPU правильно настроен.

Медленный или зависающий RDP-сеанс

Оптимизируйте производительность, настроив параметры взаимодействия в mstsc:

mstsc /v:YOUR_SERVER_IP /f

На вкладке Взаимодействие выберите LAN (10 Мбит/с или выше) и отключите Фоновый рисунок рабочего стола, Сглаживание шрифтов и Композицию рабочего стола для максимальной отзывчивости при высокой задержке соединения.

RDP в сравнении с альтернативными протоколами удалённого доступа

КритерийRDPSSH (с X11/XRDP)VNCTeamViewer
ПротоколПроприетарный (Microsoft)Открытый стандартОткрытый стандартПроприетарный
ШифрованиеTLS 1.2/1.3AES-256 (ChaCha20)Опционально (TLS-туннель)AES-256
АутентификацияNLA / Kerberos / Смарт-картаКлючевая пара / ПарольПарольНа основе учётной записи
ПроизводительностьВысокая (сжатый GDI)Высокая (CLI), Низкая (GUI)Низкая-СредняяСредняя
Несколько сеансовДа (RDSH)ДаДаДа
Встроенная поддержка WindowsВстроенаТребует OpenSSHТребует клиентТребует установки
Прохождение через брандмауэрОдин порт (3389)Один порт (22)Один порт (5900)На основе ретрансляции
Идеальный сценарий использованияАдминистрирование Windows-сервераАдминистрирование Linux/UnixКросс-платформенный GUIПоддержка/служба помощи

Для администрирования Windows Server RDP остаётся лучшим выбором с точки зрения производительности, нативной интеграции и глубины функциональности. SSH является предпочтительным протоколом для сред VPS Хостинга на базе Linux.

Управление несколькими RDP-сеансами и сохранёнными учётными данными

Сохранение файлов RDP-подключений

mstsc поддерживает файлы конфигурации .rdp, которые являются текстовыми файлами, поддающимися версионному контролю:

full address:s:YOUR_SERVER_IP:3389
username:s:Administrator
prompt for credentials:i:1
audiomode:i:0
redirectdrives:i:0
redirectclipboard:i:1

Сохраните как server.rdp и дважды щёлкните для запуска или вызовите через:

mstsc server.rdp

Диспетчер учётных данных

В Windows сохранённые RDP-учётные данные хранятся в Диспетчере учётных данных (control keymgr.dll). Для автоматизированных сценариев или конвейеров CI/CD, которым требуется RDP-доступ, используйте утилиту cmdkey:

cmdkey /generic:YOUR_SERVER_IP /user:Administrator /pass:YourPassword
mstsc /v:YOUR_SERVER_IP
cmdkey /delete:YOUR_SERVER_IP

Удаляйте учётные данные сразу после использования, чтобы избежать постоянного раскрытия учётных данных.

Практический контрольный список ключевых выводов

Используйте это как матрицу проверки перед развёртыванием и после инцидента:

Начальная настройка

  • RDP включён через fDenyTSConnections = 0 в реестре
  • NLA применена (UserAuthentication = 1)
  • TermService установлен в «Автоматически» и запущен
  • Правило брандмауэра активно для правильного порта

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

  • Порт по умолчанию 3389 изменён на нестандартный
  • Группа безопасности облака обновлена для отражения нового порта
  • Список разрешённых IP настроен в правиле брандмауэра
  • RDP не открыт напрямую в интернет (предпочтителен VPN-шлюз)

Аутентификация и защита

  • Политика блокировки учётных записей настроена (5 попыток / блокировка на 30 минут)
  • Надёжный уникальный пароль для всех учётных записей с RDP-доступом
  • Credential Guard включён на Windows Server 2016+
  • Доступ по RDP ограничен встроенной группой «Администраторы» или выделенной группой RDP

Мониторинг

  • Политика аудита включена для событий входа/выхода
  • Оповещения Event ID 4625 настроены для повторяющихся сбоев
  • Журналы сеансов периодически просматриваются или пересылаются в SIEM

На стороне клиента

  • RDP-клиент обновлён до последней версии
  • Файлы .rdp хранятся в безопасном месте и не фиксируются в публичных репозиториях
  • Сохранённые учётные данные в Диспетчере учётных данных регулярно проверяются и очищаются

Часто задаваемые вопросы

Какой порт использует RDP и можно ли его изменить?

RDP по умолчанию прослушивает TCP-порт 3389. Вы можете изменить его, изменив значение DWORD PortNumber в разделе HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp и перезапустив службу TermService. Обновите правила брандмауэра соответствующим образом.

Что такое проверка подлинности на уровне сети (NLA) и следует ли её всегда включать?

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

Почему моё RDP-подключение прерывается после периода бездействия?

Тайм-ауты сеансов управляются групповой политикой в разделе Конфигурация компьютера > Административные шаблоны > Компоненты Windows > Службы удалённых рабочих столов > Узел сеансов удалённых рабочих столов > Ограничения времени сеансов. Соответствующие политики: Установить ограничение времени для отключённых сеансов и Установить ограничение времени для активных, но бездействующих сеансов служб удалённых рабочих столов. Установите их в соответствии с вашими операционными требованиями, а не оставляйте значения по умолчанию.

Могут ли несколько пользователей одновременно подключаться к Windows Server через RDP?

Стандартная установка Windows Server поддерживает два одновременных административных RDP-сеанса. Для большего числа одновременных пользователей вам потребуется роль Remote Desktop Session Host (RDSH) и действительные клиентские лицензии доступа к службам удалённых рабочих столов (RDS CAL). Без надлежащего лицензирования сервер входит в 120-дневный льготный период, после чего отказывает в подключениях.

Безопасно ли открывать RDP напрямую в публичный интернет?

Нет. Прямое открытие RDP на порту 3389 в интернет привлекает автоматизированные атаки методом перебора паролей, кампании по распространению программ-вымогателей (RDP является ведущим вектором первоначального доступа для программ-вымогателей) и эксплуатацию незакрытых уязвимостей. Всегда размещайте RDP за VPN, ограничивайте доступ по IP, изменяйте порт по умолчанию и применяйте NLA и политики блокировки учётных записей как минимальный базовый уровень защиты.

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать