RDP (Remote Desktop Protocol) позволяет подключаться к серверу с Windows из клиента Windows/macOS/Linux. Базовый порядок действий:
- Включить RDP и Network Level Authentication (NLA).
- Открыть правила брандмауэра для RDP.
- Добавить нужных пользователей в группу «Remote Desktop Users».
- По необходимости ограничить доступ по IP, сменить порт, привязать сертификат TLS.
Вариант A. Через графический интерфейс (Desktop Experience)
1. Откройте Server Manager → Local Server → справа найдите «Remote Desktop».
2. Нажмите «Disabled» → поставьте «Allow remote connections to this computer».
3. Оставьте галочку «Allow connections only from computers running Remote Desktop with Network Level Authentication (recommended)».
4. Подтвердите включение правил в Windows Defender Firewall (мастер предлагает это сделать).
5. Добавьте пользователей:
- Win+R → lusrmgr.msc → Groups → Remote Desktop Users → Add → укажите учётные записи.
6. Проверьте брандмауэр:
- Win+R → wf.msc → Inbound Rules → группа «Remote Desktop» должна быть Enabled (TCP и UDP).
Вариант B. Одной командной пачкой через PowerShell (любой Windows Server)
Откройте PowerShell от имени администратора и выполните:
# 1) Включить RDPSet-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0
# 2) Включить NLA (только авторизованные на уровне сети)Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1
# 3) Разрешить правила брандмауэра для RDP (TCP/UDP)Enable-NetFirewallRule -DisplayGroup 'Remote Desktop'
Добавьте право на вход для конкретного пользователя (локальная машина):
net localgroup "Remote Desktop Users" /add Administrator
# пример для доменной учётки:net localgroup "Remote Desktop Users" /add CONTOSO\helpdesk
Проверка:
Get-Service -Name TermService
Test-NetConnection -ComputerName localhost -Port 3389
Вариант C. Server Core (без GUI) через sconfig
1. Войдите на сервер (консоль/WinRM).
2. Выполните:
sconfig
3. Выберите пункт 7) Remote Desktop → E (Enable).
4. Когда спросит про NLA, отвечайте 1 (требовать NLA, рекомендовано).
5. Правила брандмауэра для RDP будут включены автоматически.
Ограничение доступа по IP-адресам (рекомендуется)
Оставить доступ только с конкретных адресов и подсетей:
# Разрешить RDP только с одного «белого» IPNew-NetFirewallRule -DisplayName "RDP from 203.0.113.5" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 203.0.113.5 -Action Allow
New-NetFirewallRule -DisplayName "RDP UDP from 203.0.113.5" -Direction Inbound -Protocol UDP -LocalPort 3389 -RemoteAddress 203.0.113.5 -Action Allow
# Отключить широкие стандартные правила группы "Remote Desktop"Disable-NetFirewallRule -DisplayGroup "Remote Desktop"
Для нескольких источников перечислите адреса через запятую или задайте подсеть, например 192.0.2.0/24.
Смена порта RDP (опционально)
По умолчанию RDP слушает 3389/TCP (и 3389/UDP). Можно сменить порт, чтобы снизить шум сканеров:
# Например, на 3390New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -PropertyType DWord -Value 3390 -Force
# Разрешить новый порт в брандмауэреNew-NetFirewallRule -DisplayName "RDP TCP 3390" -Direction Inbound -Protocol TCP -LocalPort 3390 -Action Allow
New-NetFirewallRule -DisplayName "RDP UDP 3390" -Direction Inbound -Protocol UDP -LocalPort 3390 -Action Allow
# Перезапуск службы удалённых рабочих столовRestart-Service -Name TermService -Force
После смены порта подключайтесь в клиенте как server:3390.
Привязка сертификата TLS к RDP (исключить предупреждения)
По умолчанию RDP использует самоподписанный сертификат. Чтобы закрепить свой:
# Сгенерировать самоподписанный сертификат на DNS-имя сервера$cert = New-SelfSignedCertificate -DnsName "server.example.com" -CertStoreLocation "Cert:\LocalMachine\My" -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256 -NotAfter (Get-Date).AddYears(3)
# Прописать отпечаток сертификата в RDP-Tcp$thumb = ($cert.Thumbprint).Replace(" ", "")
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name SSLCertificateSHA1Hash -Value $thumb
# Перезапуск службыRestart-Service -Name TermService -Force
Лучше использовать реальный сертификат на корректное DNS-имя (корпоративный или публичный). Тогда клиенты перестанут показывать предупреждения о недоверенном узле.
Подключение клиентов
Windows: Win+R → mstsc → введите IP/имя сервера → Connect.
macOS: «Microsoft Remote Desktop» из App Store → Add PC → укажите IP/имя.
Linux: Remmina или xfreerdp /u:Администратор /v:IP.
Подсказка по вводу логина:
- Локальная учётка: .\Administrator
- Доменная учётка: CONTOSO\user или [email protected]
Типичные проблемы и решения
- Невозможно подключиться, порт закрыт
- Проверьте брандмауэр: Get-NetFirewallRule -DisplayGroup 'Remote Desktop' | ft Name,Enabled
- Проверьте прослушивание порта: netstat -ano | findstr 3389 или Test-NetConnection -Port 3389 localhost.
- Ошибка NLA/CredSSP или «учётной записи нет разрешения»
- Удостоверьтесь, что пользователь в группе «Remote Desktop Users».
- В политиках безопасности проверьте право «Allow log on through Remote Desktop Services» (secpol.msc → Local Policies → User Rights Assignment).
- В крайнем случае временно отключите NLA:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 0
Restart-Service -Name TermService -Force
Верните 1 после устранения причины.
- Чёрный экран/сразу разрывает сессию
- Обновите видеодрайверы/интегрированные службы гипервизора, проверьте событие в Event Viewer → Applications and Services Logs → Microsoft → Windows → TerminalServices-*.
- Подключение извне не работает
- Убедитесь, что на периметре (облако/роутер) проброшен порт на сервер и фильтры безопасности разрешают его. Лучше ограничить доступ по IP или использовать VPN.
Резюме безопасности
- Оставляйте включённым NLA.
- Ограничивайте входящие по IP, держите сложные пароли, включите аудит входов.
- Рассмотрите смену порта и привязку корректного TLS-сертификата.
- Для общедоступных серверов отдайте предпочтение VPN/Jump-host вместо прямой публикации RDP.
- Включить RDP можно через GUI, PowerShell или sconfig на Server Core.