Змінити номер RDP порту 3389 для віддаленого робочого столу в Windows 10 / Windows Server 2016 в Windows

За замовчуванням у всіх операційних системах Windows для підключення по протоколу RDP (Remote Desktop Protocol / Віддалений робочий стіл) використовує порт TCP 3389.

Якщо ваш комп'ютер підключений безпосередньо до інтернету (наприклад, VDS сервер), або ви налаштували на своєму прикордонному маршрутизаторі перенаправлення порту 3389 / RDP в локальну мережу на комп'ютер або сервер з Windows, ви можете змінити стандартний RDP порт 3389 на будь-який інший. Змінивши номер RDP порту для підключення, ви можете заховати ваш RDP сервер від сканерів портів, зменшите ймовірність експлуатації RDP вразливостей (остання критична уразливість в RDP BlueKeep описана в CVE-2019-0708), зменшите кількість спроб віддаленого підбору паролів по RDP (не забуває періодично аналізувати логи RDP підключень), SYN і інших типів атак (особливо при відключеному NLA).

Заміну стандартного RDP порту можна використовувати, коли за маршрутизатором з одним білим IP адресою знаходиться кілька Windows комп'ютерів, до яких потрібно надати зовнішній RDP доступ. На кожному комп'ютері ви можете налаштувати унікальний RDP порт і налаштувати перенаправлення портів на маршрутизаторі на локальні комп'ютери (в залежності від номера RDP порту сесія перенаправляється на один з внутрішніх ПК).

При виборі нестандартного номера порту для RDP зверніть увагу, що бажано не використовувати номери портів в діапазоні від 1 до 1023 (відомі порти) і динамічні порти з RPC діапазону (від 49152 до 65535).

Спробуємо змінити порт, на якому чекає підключення служба Remote Desktop на 1350. Для цього:

  1. Відкрийте редактор реєстру і перейдіть в гілку HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp;
  2. Знайдіть DWORD параметр реєстру з ім'ям PortNumber. У цьому параметрі вказано порт, на якому чекає підключення служба Remote Desktop;
  3. Змініть значення цього порту. Я змінив RDP порт на 1350 в десятковому значенні (Deciamal); Можна змінити параметр реєстру за допомогою PowerShell: Set-ItemProperty -Path "HKLM: \ System \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp \" -Name PortNumber -Value 1350
  4. Якщо на вашому комп'ютері включений Windows Firewall, ви повинні створити нове правило, яке дозволяє вхідне підключення на новий RDP порт (якщо ви перенастроювати віддалений сервер через RDP, не створивши правило в брандмауері, ви втратите доступ до сервера). Ви можете створити дозволяє входить правило для нового TCP / UDP порту RDP вручну з консолі 'Брандмауер Захисника Windows' (firewall.cpl) Або за допомогою PowerShell команд: New-NetFirewallRule -DisplayName "New RDP Port 1350" -Direction Inbound -LocalPort 1350 -Protocol TCP -Action allow І: New-NetFirewallRule -DisplayName "New RDP Port 1350" -Direction Inbound -LocalPort 1350 -Protocol UDP -Action allow
  5. Перезавантажте комп'ютер або запустіть службу віддалених робочих столів командою: net stop termservice & net start termservice
  6. Тепер для підключення до даного Windows комп'ютера по RDP, в клієнті mstsc.exe потрібно вказувати порт RDP підключення через двокрапку наступним чином: Your_Computer_Name 1350 або по IP адресою 192.168.1.100:1350 або з командного рядка: mstsc.exe / v 192.168.1.100:1350 Якщо для управління безліччю RDP підключень ви використовуєте менеджер RDP підключень RDCMan, заданий вами номер RDP порту для підключення можна вказати на вкладці "Connection Settings".
  7. В результаті ви успішно підключіться до робочого столу віддаленого комп'ютера за новим номером RDP порту (за допомогою команди nenstat -na | Find "LIST" переконайтеся, що служба RDP тепер слухає на іншому порту).
Увага: Якщо ви зміните номер RDP порту, можуть виникнути проблеми з роботою Remote Assistance та тіньових RDP підключень в Windows 10, так і shadowing в Windows Server.

Повний код PowerShell скрипт для зміни RDP порту, створення правила в брандмауері і перезапуску служби RDP на новому порту може виглядати так:

Write-host "Вкажіть номер нового RDP порту:" -ForegroundColor Yellow -NoNewline; $ RDPPort = Read-Host
Set-ItemProperty -Path "HKLM: \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-TCP \" -Name PortNumber -Value $ RDPPort
New-NetFirewallRule -DisplayName "New RDP Port $ RDPPort" -Direction Inbound -LocalPort $ RDPPort -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "New RDP Port $ RDPPort" -Direction Inbound -LocalPort $ RDPPort -Protocol UDP -Action Allow
Restart-Service termservice -force
Write-host "Номер RDP порту змінений на $ RDPPort" -ForegroundColor Magenta

Можна змінити номер RDP віддалено на декількох комп'ютерах в домені AD (певної OU) за допомогою Invoke-Command і Get-ADComputer:

Write-host "Вкажіть номер нового RDP порту:" -ForegroundColor Yellow -NoNewline; $ RDPPort = Read-Host
$ PCs = Get-ADComputer -Filter * -SearchBase "CN = DMZ, CN = Computers, DC = winitpro, DC = ru"
Foreach ($ PC in $ PCs)
Invoke-Command -ComputerName $ PC.Name -ScriptBlock
param ($ RDPPort)
Set-ItemProperty -Path "HKLM: \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-TCP \" -Name PortNumber -Value $ RDPPort
New-NetFirewallRule -DisplayName "New RDP Port $ RDPPort" -Direction Inbound -LocalPort $ RDPPort -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "New RDP Port $ RDPPort" -Direction Inbound -LocalPort $ RDPPort -Protocol TCP -Action Allow
Restart-Service termservice -force

Це інструкція по зміні стандартного RDP порту підійде для будь-якої версії Windows, починаючи з Windows XP (Windows Server 2003) і закінчуючи Windows 10 (Windows Server 2019).