15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
09.10.2024

Използване на протокол за отдалечен работен плот (RDP) за влизане във вашия Windows сървър

Remote Desktop Protocol (RDP) е собствен мрежов протокол на Microsoft, който осигурява криптиран, пълен графичен достъп до отдалечена Windows машина през TCP порт 3389. Той предава изходния сигнал на дисплея от сървъра към клиента и въвеждането от клавиатура/мишка от клиента обратно към сървъра, като ви дава на практика интерактивна сесия на живо на машина, на която физически не присъствате.

За администраторите на сървъри, RDP е основният метод за управление на инстанция на Windows Server — независимо дали сървърът е физическа машина в център за данни, среда за VPS Хостинг, или Dedicated Server, работещ с 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 от страна на клиента (активирана по подразбиране на всички съвременни Windows, macOS и Linux RDP клиенти)

Стъпка 1: Активиране на RDP на Windows Server

RDP е деактивиран по подразбиране при нови инсталации на Windows Server. Има два надеждни метода за активирането му.

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

Метод Б: 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 адреса под активния мрежов адаптер. На сървър с множество NIC (обичайно при специализиран хардуер), идентифицирайте адаптера, свързан към публичната мрежа, като кръстосано проверите шлюза по подразбиране.

За по-чист изход, използвайте PowerShell:

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

От контролния панел на хостинга

Ако сте осигурили сървъра чрез хостинг доставчик, публичният IP е посочен в таблото на контролния панел. За AlexHost Dedicated Servers, IP адресът се показва веднага след осигуряването в клиентската зона.

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

Стъпка 3: Свързване към сървъра чрез RDP

От Windows

Вграденият клиент е mstsc.exe (Microsoft Terminal Services Client). Стартирайте го от Run (Win + R) или менюто Start:

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"

Прилагане на политика за блокиране на акаунти

Предотвратете атаките с груба сила, като конфигурирате праг за блокиране на акаунти. В Group Policy (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 сесии

Активирайте одита чрез Group Policy под Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy Configuration > Logon/Logoff. Регистрирайте както успешни, така и неуспешни събития. Препращайте логовете към SIEM или поне редовно преглеждайте Event ID 4624 (успешно влизане) и Event ID 4625 (неуспешно влизане) в Event Viewer.

Стъпка 5: Отстраняване на често срещани грешки при RDP връзка

Отказана връзка (Код на грешка 0x204 / "Remote computer cannot be reached")

Това почти винаги е проблем с защитната стена или маршрутизирането.

# 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. Всяка междинна хардуерна защитна стена между клиента и сървъра

Грешка при удостоверяване ("An authentication error has occurred. The function requested is not supported.")

Това обикновено означава, че клиентът не поддържа версията на 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.

"The remote session was disconnected because there are no Remote Desktop License Servers available"

Това се случва, когато ролята Remote Desktop Session Host (RDSH) на сървъра е инсталирана, но не е конфигуриран сървър за лицензиране на RD. За прост административен достъп (не за многопотребителски RDSH разгръщания), премахнете ролята RDSH или конфигурирайте 120-дневен гратисен период:

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

Стойност 2 означава Per Device, 4 означава Per User. За достъп само от администратори, стойността трябва да бъде 5 (не е конфигурирано / гратисен период).

Черен екран след влизане

Черен екран при RDP връзка обикновено показва една от три причини:

  • Срив на Explorer.exe: Натиснете Ctrl + Alt + End, за да отворите Task Manager, след това стартирайте explorer.exe от File > Run New Task.
  • Конфликт на драйвер на дисплея: Деактивирайте хардуерното ускорение в RDP сесията чрез Group Policy.
  • Проблем с GPU отдалечен достъп: На сървъри с dedicated GPU (релевантно за натоварвания при GPU Хостинг), уверете се, че RemoteFX vGPU адаптерът е правилно конфигуриран.

Бавна или закъсняваща RDP сесия

Оптимизирайте производителността, като коригирате настройките за опит при връзката в mstsc:

mstsc /v:YOUR_SERVER_IP /f

В раздела Experience, изберете LAN (10 Mbps or higher) и деактивирайте Desktop background, Font smoothing и Desktop composition за максимална отзивчивост при връзки с висока латентност.

RDP срещу алтернативни протоколи за отдалечен достъп

КритерийRDPSSH (с X11/XRDP)VNCTeamViewer
ПротоколСобствен (Microsoft)Отворен стандартОтворен стандартСобствен
КриптиранеTLS 1.2/1.3AES-256 (ChaCha20)По избор (TLS тунел)AES-256
УдостоверяванеNLA / Kerberos / Smart CardДвойка ключове / ПаролаПаролаБазирано на акаунт
ПроизводителностВисока (компресиран GDI)Висока (CLI), Ниска (GUI)Ниска-СреднаСредна
Множество сесииДа (RDSH)ДаДаДа
Вградена поддръжка за WindowsВграденоИзисква OpenSSHИзисква клиентИзисква инсталация
Преминаване през защитна стенаЕдиничен порт (3389)Единичен порт (22)Единичен порт (5900)Базирано на релей
Идеален случай на употребаАдминистрация на Windows сървърАдминистрация на Linux/UnixКросплатформен GUIПоддръжка/helpdesk

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

Управление на множество 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

Credential Manager

На 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 настроен на Automatic и работещ
  • Правило на защитната стена активно за правилния порт

Мрежа и контрол на достъпа

  • Портът по подразбиране 3389 сменен с нестандартен порт
  • Групата за сигурност в облака актуализирана, за да отразява новия порт
  • Списък с разрешени IP адреси конфигуриран в правилото на защитната стена
  • RDP не е директно изложен на интернет (предпочита се VPN шлюз)

Удостоверяване и укрепване

  • Политика за блокиране на акаунти конфигурирана (5 опита / блокиране за 30 минути)
  • Силна, уникална парола за всички акаунти с RDP достъп
  • Credential Guard активиран на Windows Server 2016+
  • RDP достъпът ограничен до вградената група Administrators или специална RDP група

Мониторинг

  • Политика за одит активирана за събития Logon/Logoff
  • Конфигурирани сигнали 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 връзката ми прекъсва след период на неактивност?

Времевите ограничения на сесиите се контролират от Group Policy под 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 Client Access Licenses (RDS CALs). Без правилно лицензиране, сървърът влиза в 120-дневен гратисен период, преди да откаже връзки.

Безопасно ли е да се излага RDP директно на публичния интернет?

Не. Директното излагане на RDP на порт 3389 към интернет привлича автоматизирани атаки с груба сила, кампании за доставка на ransomware (RDP е водещият вектор за първоначален достъп при ransomware) и експлоатация на непоправени уязвимости. Винаги поставяйте RDP зад VPN, ограничавайте достъпа по IP, сменяйте порта по подразбиране и прилагайте NLA и политики за блокиране на акаунти като минимална базова линия.

15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало