По умолчанию во всех операционных системах Windows для подключения по протоколу RDP (Remote Desktop Protocol / Удаленный рабочий стол) использует порт TCP 3389. После того, как вы включили RDP доступ в Windows, служба TermService (Remote Desktop Services) начинает слушать на порту 3389. В этой статье мы покажем, как изменить стандартный номер RDP порта в дестопных редакциях Windows (7/8/10/11) и Windows Server.
Вы можете изменить номер стандартного порта RDP в Windows с 3389 на любой другой. Чаще всего это используется, когда нужно спрятать ваш RDP/RDS хост от автоматических сканеров портов, которые ищут в сети хосты Windows с открытым стандартным RDP портом 3389. Смена RDP порта позволит уменьшить вероятность эксплуатации RDP уязвимостей (последняя критическая уязвимость в RDP BlueKeep описана в CVE-2019-0708), уменьшить количество попыток удалённого подбора паролей по RDP (не забывает периодически анализировать логи RDP подключений), SYN и других типов атак (особенно при отключенном NLA). Чаще всего RDP порт меняют на компьютерах с прямым подключением к интернету (VPS/VDS), или в сетях, где пограничный маршрутизатор перенаправляет порт 3389/RDP в локальную сеть на компьютер/сервер с Windows.
Если вы решили использовать нестандартный номер порта для RDP, обратите внимание, что нежелательно использовать номера портов в диапазоне от 1 до 1023 (известные порты). Используйте динамический порт из RPC диапазона (от 49152 до 65535), или любой портов в диапазоне от 1024 до 49151, который не используется другим сервисом или приложением.
Изменить номер RDP порта по-умолчанию в Windows
В нашем примере мы изменим номер порта, на котором ожидает подключения служба Remote Desktop на 1350. Для этого:
- Откройте редактор реестра (regedit.exe) и перейдите в ветку HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp;
- Найдите DWORD параметр реестра с именем PortNumber.. В этом параметре указан порт, на котором ожидает подключения служба Remote Desktop. Значение по умолчанию – 3389 (decimal);
- Измените значение этого порта. Я изменил RDP порт на 1350 в десятичном значении (Deciamal); Можно изменить параметр реестра с помощью PowerShell:
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\" -Name PortNumber -Value 1350
- Если на вашем компьютере включен Windows Firewall, вы должны создать новое правило, разрешающее входящие подключения на новый RDP порт (если вы перенастраиваете удаленный сервер через RDP, создайте разрешающее правило в файерволе до перезапуска службы TermService, иначе вы потеряете доступ к серверу). Вы можете создать разрешающее входящее правило для нового TCP/UDP порта RDP вручную из консоли ‘Брандмауэр Защитника Windows’ (firewall.cpl) или с помощью PowerShell команд:
New-NetFirewallRule -DisplayName "NewRDPPort-TCP-In" -Direction Inbound -LocalPort 1350 -Protocol TCP -Action allow
И:New-NetFirewallRule -DisplayName "NewRDPPort-UDP-In" -Direction Inbound -LocalPort 1350 -Protocol UDP -Action allow
- Перезагрузите компьютер или перезапустите службу удаленных рабочих столов командой:
net stop termservice & net start termservice
- Теперь для подключения к данному 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”. - В результате вы успешно подключитесь к рабочему столу удаленного компьютера через новый номер RDP порта (с помощью команды
nenstat –na | Find “LIST”
убедитесь, что служба RDP теперь слушает на другом порту).
Обратите внимание, что номер UDP порта RDP также изменился на 1350 (проще всего проверить это с помощью утилиты TCPView).
С помощью команды Test-NetConnection, проверьте что старый RDP порт теперь закрыт (
TcpTestSucceeded : False
):
Test-NetConnection 192.168.13.202 -port 3389 |select TcpTestSucceeded
И для RDP подключения теперь нужно использовать новый порт 1350.
Если вы хотите изменить номер RDP порта на компьютерах в домене, можно воспользоваться групповыми политиками. Создайте новую GPO, которая распространит параметр реестра PortNumber с новым значением RDP порта на компьютеры домена.
PowerShell скрипт для смены номера RDP порта в Windows
Полный код 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 "NewRDPPort-TCP-In-$RDPPort" -Direction Inbound –LocalPort $RDPPort -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "NewRDPPort-UDP-In-$RDPPort" -Direction Inbound –LocalPort $RDPPort -Protocol UDP -Action Allow
Restart-Service termservice -force
Write-host "Номер RDP порта изменен на $RDPPort " -ForegroundColor Magenta
Вы можете удаленно изменить номер порта на компьютере. Для этого на удаленном компьютере должен быть настроен WinRM, тогда для подключения к компьютеру можно использовать командлет Invoke-Command:
Invoke-Command -ComputerName PC1name -ScriptBlock {Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-TCP\" -Name PortNumber -Value 1350}
Если нужно изменить номер RDP на нескольких компьютерах в домене AD (определенной OU), используйте такой скрипт (список компьютеров в OU можно получить с помощью 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 11 (Windows Server 2022).