15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
09.10.2024

Використання протоколу віддаленого робочого столу (RDP) для входу на ваш Windows сервер

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 на рівні ядра. Коли ви змінюєте порт прослуховування, ви змінюєте значення реєстру, яке цей драйвер зчитує під час запуску служби.

Network Level Authentication (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: GUI (Властивості системи)

  1. Відкрийте Server Manager або натисніть Win + R, введіть sysdm.cpl та натисніть Enter.
  2. Перейдіть на вкладку Remote.
  3. У розділі Remote Desktop виберіть Allow remote connections to this computer.
  4. Переконайтеся, що встановлено прапорець Allow connections only from computers running Remote Desktop with Network Level Authentication.
  5. Натисніть OK.

Метод 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

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

Вбудована група правил брандмауера «Remote Desktop» охоплює необхідні правила для вхідного трафіку. Перевірте за допомогою:

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

Якщо ви перебуваєте за групою безпеки хмарного провайдера (поширено на VPS з cPanel або керованих VPS-середовищах), вам також потрібно відкрити порт 3389 у зовнішній панелі брандмауера провайдера — брандмауера ОС самого по собі недостатньо.

Крок 2: Визначення публічної IP-адреси сервера

З консолі сервера

Відкрийте командний рядок з підвищеними правами та виконайте:

ipconfig /all

Знайдіть IPv4 Address під активним мережевим адаптером. На сервері з кількома мережевими картами (поширено на виділеному обладнанні) визначте адаптер, підключений до публічної мережі, перехресно посилаючись на шлюз за замовчуванням.

Для більш чистого виводу використовуйте 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). Запустіть його з Run (Win + R) або меню «Пуск»:

mstsc /v:YOUR_SERVER_IP:3389

Для повноекранної сесії з вимкненим перенаправленням дисків (безпечне налаштування за замовчуванням):

mstsc /v:YOUR_SERVER_IP /f /nodrives

У GUI:

  1. Введіть IP-адресу сервера в поле Computer.
  2. Натисніть Show Options, щоб попередньо заповнити ім’я користувача, що дозволяє уникнути додаткового запиту облікових даних.
  3. На вкладці Experience виберіть відповідну швидкість з’єднання для оптимізації рендерингу.
  4. Натисніть Connect, прийміть попередження про сертифікат при першому підключенні (перевірте відбиток сертифіката, якщо безпека є критичною) та введіть свій пароль.

З macOS

Офіційний додаток Microsoft Microsoft Remote Desktop (доступний безкоштовно в Mac App Store) є рекомендованим клієнтом.

  1. Відкрийте додаток і натисніть кнопку +, потім Add PC.
  2. Введіть IP-адресу сервера в поле PC Name.
  3. У розділі User Account натисніть Add User Account та введіть свої облікові дані.
  4. За бажанням налаштуйте параметри Display та перенаправлення Devices & Audio.
  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-сесій

Увімкніть аудит через групову політику в розділі Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy Configuration > Logon/Logoff. Реєструйте як успішні, так і невдалі події. Пересилайте журнали до 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»

Це відбувається, коли роль 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

На вкладці Experience виберіть LAN (10 Mbps або вище) та вимкніть Desktop background, Font smoothing та Desktop composition для максимальної швидкості реагування при підключеннях з високою затримкою.

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 зберігаються в Credential Manager (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 зберігаються безпечно та не передаються до публічних репозиторіїв
  • Збережені облікові дані в Credential Manager регулярно переглядаються та очищаються

Часті запитання

Який порт використовує RDP і чи можна його змінити?

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

Що таке Network Level Authentication (NLA) і чи слід його завжди вмикати?

NLA вимагає від клієнта автентифікації через CredSSP до того, як сервер створить повну сесію робочого столу. Це запобігає доступу неавтентифікованих користувачів до екрана входу Windows, значно зменшуючи вразливість до атак підбору облікових даних та атак типу «відмова в обслуговуванні». Його слід завжди вмикати на продакшн-серверах, якщо у вас немає конкретної вимоги сумісності зі застарілим клієнтом.

Чому моє RDP-підключення розривається після певного часу бездіяльності?

Тайм-аути сесій контролюються груповою політикою в розділі Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Session Time Limits. Відповідні політики — Set time limit for disconnected sessions та Set time limit for active but idle Remote Desktop Services sessions. Встановіть їх відповідно до ваших операційних вимог, а не залишайте за замовчуванням.

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

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

Чи безпечно відкривати RDP безпосередньо в публічному інтернеті?

Ні. Безпосереднє відкриття RDP на порту 3389 для інтернету запрошує автоматизовані атаки грубої сили, кампанії з доставки програм-вимагачів (RDP є провідним вектором початкового доступу для програм-вимагачів) та експлуатацію невиправлених вразливостей. Завжди розміщуйте RDP за VPN, обмежуйте доступ за IP-адресою, змінюйте стандартний порт та застосовуйте NLA і політики блокування облікових записів як мінімальний базовий рівень.

15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати