Смена порта RDP Windows: шпаргалка IT-инженера с примерами

шпаргалка IT-инженера с примерами для Windows и Linux

Дефолтный порт 3389 для RDP — это как оставить ключи под ковриком. Каждый бот знает, где стучаться.

Первое, что делает любой скрипт-кидди — сканирует диапазон IP на порт 3389. Логи удаленного рабочего стола rdp пестрят попытками подбора паролей? Добро пожаловать в реальность.

Зачем эта шпаргалка:

  • Сменить порт RDP Windows за 5 минут
  • Снизить количество атак brute-force на 90%
  • Не гуглить каждый раз «как поменять порт rdp windows»
  • Проверить, что всё работает (а не сломать доступ к серверу)

Если администрируешь Windows-сервера через удаленный стол rdp — эта статья must have.

Когда это использовать

Реальные кейсы:

  • Сервер в интернете — атаки на 3389 идут нон-стоп
  • Логи Security пухнут от Failed Login Attempts
  • Нужно спрятать RDP от автоматических сканеров
  • Compliance требует non-standard ports
  • VPS/VDS в облаке — дефолтный порт = магнит для ботов
  • Домашний сервер с белым IP — соседи уже пытаются подключиться

Типовые ситуации:

  • Настраиваешь новый Windows Server — сразу меняй порт
  • После миграции в облако — первым делом смена порта rdp
  • Аудит безопасности показал, что 3389 открыт в интернет — исправляй
  • Пытаешься зайти через RDP, а там уже кто-то пытается bruteforce

Ошибки новичков:

  • Меняют порт, но забывают про firewall — RDP не работает
  • Правят реестр, но не перезагружают сервис — продолжает висеть на 3389
  • Открывают новый порт в фаерволе, но старый не закрывают — бессмысленно
  • Меняют порт на сервере, но забывают про роутер/NAT — доступа снаружи нет
  • Не записывают новый порт — потом не могут подключиться и паникуют

Быстрый старт: смена порта RDP за 3 шага

Если времени нет, а порт менять надо сейчас:

  1. Открой PowerShell от администратора
# Меняем порт на 33890 (можно любой от 1024 до 65535)
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value 33890
  1. Открой порт в firewall
New-NetFirewallRule -DisplayName "RDP Custom Port 33890" -Direction Inbound -LocalPort 33890 -Protocol TCP -Action Allow
  1. Перезапусти службу RDP
Restart-Service TermService -Force

Готово. Теперь RDP висит на порту 33890.

Подключаться так:

mstsc /v:server_ip:33890
# или в поле адреса клиента RDP:
192.168.1.100:33890

ВАЖНО: перед перезагрузкой сервера убедись, что новый порт работает (открой второй rdp сеанс на новом порту).

Смена порта RDP Windows: подробная инструкция

Если хочешь понять, что делаешь (а не просто скопировать команды) — читай дальше.

Шаг 1. Выбираем новый порт

Правила выбора порта:

  • Диапазон: 1024–65535 (0–1023 зарезервированы под системные службы)
  • Избегай популярные порты (80, 443, 8080, 22, 21, 25)
  • Не используй порты, которые уже заняты другими службами
  • Запоминающиеся варианты: 33890, 13389, 63389, 50001

Проверить, занят ли порт:

# Проверяем, слушает ли кто-то порт 33890
netstat -an | findstr :33890

# Если вывод пустой — порт свободен
# Если есть строки с LISTENING — порт занят, выбери другой

Мой выбор для примера: 33890

Запомни это число. Запиши. Сохрани. Без него не подключишься.

Шаг 2. Правим реестр (ручной способ)

Открываем редактор реестра:

Win + R → regedit → Enter

Идём по пути:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

Находим параметр:

  • PortNumber (тип: DWORD)

Двойной клик → меняем значение:

  • Переключаемся на Десятичное (важно!)
  • Вводим новый порт: 33890
  • OK → закрываем regedit

Скриншот в голове:

PortNumber = 0x00008452 (в шестнадцатеричном)
PortNumber = 33890 (в десятичном)

Шаг 3. Правим реестр (через PowerShell — рекомендую)

Открываем PowerShell от администратора:

Win + X → Windows PowerShell (Admin)
# или
Win + R → powershell → Ctrl+Shift+Enter

Выполняем команду:

# Меняем порт RDP на 33890
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value 33890

# Проверяем, что изменилось
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber

Вывод должен быть:

PortNumber : 33890

Если видишь своё число — всё ок.

Шаг 4. Настраиваем Windows Firewall

Проблема: порт в реестре поменяли, но firewall его блокирует.

Решение: добавить правило для нового порта.

Через PowerShell (быстро):

# Создаём правило для входящих подключений
New-NetFirewallRule -DisplayName "RDP Custom Port 33890" -Direction Inbound -LocalPort 33890 -Protocol TCP -Action Allow

# Проверяем, что правило создалось
Get-NetFirewallRule -DisplayName "RDP Custom Port 33890"

Через GUI (если любишь клики):

  1. Открыть wf.msc (Windows Defender Firewall with Advanced Security)
  2. Inbound Rules → New Rule
  3. Rule Type: Port → Next
  4. Protocol: TCP, Specific local ports: 33890 → Next
  5. Action: Allow the connection → Next
  6. Profile: все галки (Domain, Private, Public) → Next
  7. Name: RDP Custom Port 33890 → Finish

Опционально: закрываем старый порт 3389

Если хочешь полностью отрубить доступ по дефолтному порту:

# Отключаем стандартное правило RDP
Disable-NetFirewallRule -DisplayName "Remote Desktop*"

# Или удаляем (жёстко)
Remove-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)"
Remove-NetFirewallRule -DisplayName "Remote Desktop - User Mode (UDP-In)"

Внимание: делай это только после того, как проверишь, что новый порт работает!

Шаг 5. Перезапускаем службу Terminal Services

Изменения в реестре применяются только после перезапуска службы.

Через PowerShell:

# Перезапускаем службу удаленного рабочего стола
Restart-Service TermService -Force

# Проверяем, что служба запустилась
Get-Service TermService

Вывод должен быть:

Status   Name               DisplayName
------   ----               -----------
Running  TermService        Remote Desktop Services

Через GUI:

Win + R → services.msc → Enter
# Найти: Remote Desktop Services
# Правый клик → Restart

Через CMD (олдскульно):

[cmd] net stop TermService /y
net start TermService
[/cmd]

Шаг 6. Проверяем, что порт слушается

Проверяем локально:

# Смотрим, слушает ли RDP новый порт
netstat -an | findstr :33890

# Должно быть:
# TCP    0.0.0.0:33890          0.0.0.0:0              LISTENING

Если видишь LISTENING на твоём порту — победа.

Проверяем снаружи (если сервер в интернете):

# С другой машины в той же <a class="wpil_keyword_link" href="https://it-apteka.com/category/networks/"   title="Сети" data-wpil-keyword-link="linked"  data-wpil-monitor-id="335">сети</a>:
Test-NetConnection -ComputerName 192.168.1.100 -Port 33890

# Должно быть:
# TcpTestSucceeded : True

Если TcpTestSucceeded : False — проверь firewall и роутер.

Шаг 7. Настраиваем роутер/NAT (если сервер за NAT)

Если сервер находится в локальной сети за роутером:

  1. Заходи в админку роутера (обычно 192.168.1.1 или 192.168.0.1)
  2. Ищи раздел Port Forwarding или NAT
  3. Добавь правило:
    • External Port: 33890
    • Internal IP: 192.168.1.100 (IP сервера)
    • Internal Port: 33890
    • Protocol: TCP
  4. Сохрани, перезагрузи роутер (если требуется)

Проверка проброса портов:

Используй онлайн-сервисы типа canyouseeme.org или portchecker.co:

  • Введи свой внешний IP
  • Введи порт: 33890
  • Check Port

Если пишет Open — всё ок. Если Closed — проверь настройки роутера и firewall.

Подключение к RDP на нестандартном порту

Из Windows RDP-клиента (mstsc):

Win + R → mstsc → Enter
# В поле &quot;Компьютер&quot; вводим:
192.168.1.100:33890
# Или
server.domain.com:33890

Из командной строки:

[cmd] mstsc /v:192.168.1.100:33890
[/cmd]

Из PowerShell:

Start-Process mstsc -ArgumentList &quot;/v:192.168.1.100:33890&quot;

Из Linux (rdesktop):

rdesktop 192.168.1.100:33890

Из Linux (xfreerdp):

xfreerdp /v:192.168.1.100:33890 /u:Administrator /p:YourPassword

Из macOS (Microsoft Remote Desktop):

  • Открыть Microsoft Remote Desktop
  • Add PC
  • PC name: 192.168.1.100:33890
  • Connect

Смена порта RDP через групповые политики (для доменов)

Если у тебя Active Directory и куча серверов:

Менять порт RDP вручную на каждом сервере — это боль. Используй GPO.

Создание GPO для смены порта RDP

  1. Открой Group Policy Management Console:
Win + R → gpmc.msc → Enter
  1. Создай новую политику:
  • Правый клик на OU с серверами → Create a GPO in this domain, and Link it here
  • Имя: RDP Custom Port 33890
  1. Редактируй политику:
  • Правый клик на GPO → Edit
  1. Настраиваем Registry Preference:

Путь:

Computer Configuration → Preferences → Windows Settings → Registry

Правый клик → New → Registry Item

Параметры:

  • Action: Update
  • Hive: HKEY_LOCAL_MACHINE
  • Key Path: SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
  • Value name: PortNumber
  • Value type: REG_DWORD
  • Value data: 33890 (десятичное)
  1. Применяем политику:
# На целевых серверах:
gpupdate /force

# Перезапускаем TermService:
Restart-Service TermService -Force

Настройка Firewall через GPO:

Путь:

Computer Configuration → Policies → Windows Settings → Security Settings → Windows Defender Firewall with Advanced Security
  • Inbound Rules → New Rule
  • Port → TCP → 33890 → Allow
  • Имя: RDP Custom Port 33890

Применяем GPO — все сервера в домене переключаются на новый порт.

Частые ошибки и подводные камни

1. «Поменял порт, но RDP не работает»

Причина: забыл открыть порт в firewall или не перезапустил службу

Решение:

# Проверяем firewall:
Get-NetFirewallRule | Where-Object {$_.LocalPort -eq 33890}

# Если пусто — создаём правило:
New-NetFirewallRule -DisplayName &quot;RDP 33890&quot; -Direction Inbound -LocalPort 33890 -Protocol TCP -Action Allow

# Перезапускаем службу:
Restart-Service TermService -Force

2. «Подключаюсь, но висит на «Подключение…»»

Причина: порт заблокирован роутером, провайдером или внешним firewall

Решение:

  • Проверь Port Forwarding на роутере
  • Проверь, открыт ли порт снаружи (portchecker.co)
  • Убедись, что провайдер не блокирует нестандартные порты
  • Проверь облачный firewall (AWS Security Groups, Azure NSG, etc.)

3. «Случайно закрыл все RDP-сессии, новый порт не работает — не могу зайти»

Проблема: сменил порт, не проверил, закрыл текущую сессию — теперь не подключиться

Решение (если есть физический/консольный доступ):

  • Зайти через консоль (ILO, IPMI, KVM, Hyper-V Console)
  • Проверить настройки firewall и порт в реестре
  • Исправить, перезапустить службу

Решение (если доступа нет — только через провайдера):

  • Связаться с техподдержкой хостинга/облака
  • Попросить доступ к консоли или откат изменений

Правило безопасности: ВСЕГДА проверяй новый порт ДО закрытия текущей сессии. Открой вторую RDP-сессию на новом порту, убедись что работает, только потом закрывай старую.

4. «Порт поменялся, но сканеры всё равно долбят 3389»

Причина: старый порт 3389 всё ещё открыт в firewall

Решение:

# Закрываем порт 3389:
Disable-NetFirewallRule -DisplayName &quot;Remote Desktop*&quot;

# Или удаляем правила для 3389:
Get-NetFirewallRule | Where-Object {$_.LocalPort -eq 3389} | Remove-NetFirewallRule

5. «После обновления Windows порт слетел обратно на 3389»

Причина: редкий баг, обновление может сбросить настройки реестра

Решение:

  • Проверяй порт после крупных обновлений
  • Используй GPO для доменных машин (GPO не сбрасывается)
  • Добавь мониторинг порта RDP

6. «RDP работает, но тормозит/глючит после смены порта»

Причина: скорее всего проблема не в порту, а в сети/QoS

Решение:

  • Проверь канал (tracert, ping)
  • Проверь загрузку сервера (CPU, RAM, диск)
  • Попробуй другой RDP-клиент
  • Проверь настройки Quality of Service на роутере

Полезные хаки

Автоматическая смена порта RDP одной командой:

# Скрипт для быстрой смены порта RDP
$NewPort = 33890

# Меняем порт в реестре
Set-ItemProperty -Path &#039;HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp&#039; -Name PortNumber -Value $NewPort

# Добавляем правило в firewall
New-NetFirewallRule -DisplayName &quot;RDP Port $NewPort&quot; -Direction Inbound -LocalPort $NewPort -Protocol TCP -Action Allow

# Перезапускаем службу
Restart-Service TermService -Force

# Проверяем
Write-Host &quot;RDP port changed to $NewPort&quot; -ForegroundColor Green
netstat -an | findstr &quot;:$NewPort&quot;

Сохрани в change-rdp-port.ps1, запускай от админа.

Мониторинг попыток подключения по RDP:

# Смотрим последние 20 попыток входа:
Get-EventLog -LogName Security -InstanceId 4625 -Newest 20 | Select-Object TimeGenerated, Message

# Фильтруем только RDP (Event ID 4625 - failed logon):
Get-WinEvent -FilterHashtable @{LogName=&#039;Security&#039;;ID=4625} -MaxEvents 50 | Where-Object {$_.Message -like &quot;*RDP*&quot;}

Скрипт для логирования всех RDP-подключений:

# Включаем детальное логирование RDP:
wevtutil sl Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /e:true

# Смотрим успешные подключения (Event ID 21):
Get-WinEvent -LogName &#039;Microsoft-Windows-TerminalServices-LocalSessionManager/Operational&#039; | Where-Object {$_.Id -eq 21}

Backup настроек RDP перед изменениями:

# Экспортируем текущие настройки RDP:
reg export &quot;HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server&quot; C:\backup-rdp-settings.reg

# Восстановить можно так:
reg import C:\backup-rdp-settings.reg

Запрет RDP для определённых пользователей:

Win + R → gpedit.msc → Enter
Computer Configuration → Windows Settings → Security Settings → Local Policies → User Rights Assignment
# Найти: &quot;Allow log on through Remote Desktop Services&quot;
# Удалить группы/пользователей, которым не нужен доступ

Ограничение количества одновременных RDP-сессий:

# По дефолту Windows Server позволяет 2 административных сессии
# Для увеличения нужна лицензия RDS (Remote Desktop Services)

# Проверить текущие сессии:
qwinsta

# Отключить неактивную сессию:
logoff &lt;session_id&gt;

Проверка и диагностика

Чек-лист проверки после смены порта:

  1. Проверяем реестр:
Get-ItemProperty -Path &#039;HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp&#039; -Name PortNumber
# Должно быть: PortNumber : 33890
  1. Проверяем, что служба слушает новый порт:
netstat -an | findstr :33890
# Должно быть: TCP    0.0.0.0:33890    0.0.0.0:0    LISTENING
  1. Проверяем firewall:
Get-NetFirewallRule | Where-Object {$_.LocalPort -eq 33890}
# Должно вернуть правило с DisplayName и Enabled : True
  1. Проверяем доступность снаружи:
# С другой машины:
Test-NetConnection -ComputerName 192.168.1.100 -Port 33890
# Должно быть: TcpTestSucceeded : True
  1. Пробуем подключиться:
[cmd] mstsc /v:192.168.1.100:33890
# Должно открыться окно логина RDP
[/cmd]

Где смотреть логи:

Event Viewer (журнал событий):

Win + R → eventvwr.msc → Enter

# Логи RDP:
Windows Logs → System → фильтр по источнику: TermService

# Логи попыток входа:
Windows Logs → Security → фильтр по Event ID:
- 4624 (успешный вход)
- 4625 (неудачный вход)
- 4634 (выход из системы)
- 4647 (пользователь инициировал выход)

# Логи сессий RDP:
Applications and Services Logs → Microsoft → Windows → TerminalServices-LocalSessionManager → Operational
# Event ID:
- 21 (успешное подключение)
- 22 (Shell start notification)
- 25 (reconnection succeeded)

PowerShell — быстрый анализ логов:

# Последние 50 событий RDP:
Get-WinEvent -LogName &#039;Microsoft-Windows-TerminalServices-LocalSessionManager/Operational&#039; -MaxEvents 50

# Только успешные подключения:
Get-WinEvent -FilterHashtable @{LogName=&#039;Microsoft-Windows-TerminalServices-LocalSessionManager/Operational&#039;;ID=21} -MaxEvents 20

# Попытки bruteforce (множественные неудачные входы):
Get-WinEvent -FilterHashtable @{LogName=&#039;Security&#039;;ID=4625} | Group-Object {$_.Properties[5].Value} | Where-Object {$_.Count -gt 5} | Sort-Object Count -Descending

Типовые проблемы:

  • Порт не слушается после перезапуска службы → проверь реестр, перезагрузи сервер
  • Firewall блокирует → проверь правила, добавь исключение
  • Роутер не пробрасывает порт → проверь Port Forwarding, перезагрузи роутер
  • Провайдер блокирует → попробуй другой порт, свяжись с техподдержкой
  • Антивирус/EDR блокирует → добавь исключение для TermService

Безопасность: смена порта — это не панацея

Важно понимать: смена порта rdp windows — это не защита, а obscurity (безопасность через неизвестность).

Это снижает количество автоматических атак, но не защищает от целенаправленного взлома.

Что ещё нужно сделать для безопасности RDP:

  • Сложные пароли — минимум 12 символов, буквы, цифры, спецсимволы
  • Блокировка по IP — разрешить доступ только с известных адресов (через firewall)
  • VPN — доступ к RDP только через VPN-туннель (идеально)
  • Network Level Authentication (NLA) — включить обязательно
  • Account Lockout Policy — блокировка после N неудачных попыток
  • Two-Factor Authentication — через DUO, Azure MFA, etc.
  • Fail2Ban / RdpGuard — автоматическая блокировка IP после bruteforce
  • Логирование и мониторинг — следить за попытками входа

Включение NLA (Network Level Authentication):

# Включаем NLA (рекомендуется):
Set-ItemProperty -Path &#039;HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp&#039; -Name UserAuthentication -Value 1

# Перезапускаем службу:
Restart-Service TermService -Force

Настройка Account Lockout Policy:

Win + R → gpedit.msc → Enter
Computer Configuration → Windows Settings → Security Settings → Account Policies → Account Lockout Policy

# Настроить:
- Account lockout threshold: 5 invalid logon attempts
- Account lockout duration: 30 minutes
- Reset account lockout counter after: 30 minutes

Ограничение доступа по IP через firewall:

# Разрешить RDP только с конкретного IP:
New-NetFirewallRule -DisplayName &quot;RDP from Admin IP&quot; -Direction Inbound -LocalPort 33890 -Protocol TCP -Action Allow -RemoteAddress 203.0.113.50

# Заблокировать всё остальное:
New-NetFirewallRule -DisplayName &quot;RDP Block All&quot; -Direction Inbound -LocalPort 33890 -Protocol TCP -Action Block

Краткий чек-лист: что должно быть сделано

После смены порта RDP:

  • ✅ Порт в реестре изменён (проверено через PowerShell)
  • ✅ Служба TermService перезапущена
  • ✅ Новый порт слушается (проверено через netstat)
  • ✅ Firewall: правило для нового порта создано
  • ✅ Firewall: старый порт 3389 закрыт (опционально, но рекомендуется)
  • ✅ Роутер: Port Forwarding настроен (если за NAT)
  • ✅ Проверка снаружи: порт доступен (Test-NetConnection или online port checker)
  • ✅ Тестовое подключение через новый порт успешно
  • ✅ Номер нового порта записан и сохранён

Безопасность RDP (обязательно):

  • ✅ NLA (Network Level Authentication) включена
  • ✅ Сложные пароли для всех учётных записей
  • ✅ Account Lockout Policy настроена
  • ✅ Логирование включено (Event Viewer)
  • ✅ Мониторинг попыток входа настроен
  • ✅ Доступ ограничен по IP (если возможно)
  • ✅ VPN или 2FA настроен (для критичных серверов)

Документация:

  • ✅ Новый порт записан в документацию/wiki
  • ✅ Коллеги уведомлены о смене порта
  • ✅ Backup настроек реестра сделан

Смена порта RDP: итоговая таблица команд

Действие Команда PowerShell Альтернатива
Изменить порт в реестре Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value 33890 regedit → ручное редактирование
Проверить текущий порт Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber netstat -an | findstr LISTENING
Добавить правило firewall New-NetFirewallRule -DisplayName "RDP 33890" -Direction Inbound -LocalPort 33890 -Protocol TCP -Action Allow wf.msc → New Rule → GUI
Перезапустить службу RDP Restart-Service TermService -Force services.msc → Restart
Проверить, что порт слушается netstat -an | findstr :33890 Test-NetConnection -Port 33890
Подключиться к RDP mstsc /v:IP:33890 GUI: mstsc → ввести IP:порт
Включить NLA Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1 System Properties → Remote → NLA checkbox
Backup настроек реестра reg export "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" C:\rdp-backup.reg regedit → Export

Резюме

Смена порта RDP Windows — это базовая мера безопасности, которая занимает 5 минут и экономит часы разбора логов атак.

Что запомнить:

  • Меняем порт: реестр → firewall → перезапуск службы
  • Проверяем: netstat → Test-NetConnection → тестовое подключение
  • Не забываем: роутер, документация, коллеги
  • Безопасность: смена порта + NLA + сложные пароли + мониторинг
  • Золотое правило: проверь новый порт ДО закрытия текущего rdp сеанс

Дефолтный 3389 — это мишень. Нестандартный порт — это не защита от NSA, но это фильтр от 90% автоматических атак.

Сохрани эту статью — она спасёт тебя, когда ты в сотый раз будешь гуглить «как поменять порт rdp windows».

Следующая шпаргалка: настройка VPN для безопасного доступа к серверам (потому что RDP через интернет — это зло, даже на нестандартном порту).

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх