Дефолтный порт 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 шага
Если времени нет, а порт менять надо сейчас:
- Открой PowerShell от администратора
# Меняем порт на 33890 (можно любой от 1024 до 65535) Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value 33890
- Открой порт в firewall
New-NetFirewallRule -DisplayName "RDP Custom Port 33890" -Direction Inbound -LocalPort 33890 -Protocol TCP -Action Allow
- Перезапусти службу 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 (если любишь клики):
- Открыть
wf.msc(Windows Defender Firewall with Advanced Security) - Inbound Rules → New Rule
- Rule Type: Port → Next
- Protocol: TCP, Specific local ports: 33890 → Next
- Action: Allow the connection → Next
- Profile: все галки (Domain, Private, Public) → Next
- 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 /ynet 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)
Если сервер находится в локальной сети за роутером:
- Заходи в админку роутера (обычно 192.168.1.1 или 192.168.0.1)
- Ищи раздел Port Forwarding или NAT
- Добавь правило:
- External Port: 33890
- Internal IP: 192.168.1.100 (IP сервера)
- Internal Port: 33890
- Protocol: TCP
- Сохрани, перезагрузи роутер (если требуется)
Проверка проброса портов:
Используй онлайн-сервисы типа canyouseeme.org или portchecker.co:
- Введи свой внешний IP
- Введи порт: 33890
- Check Port
Если пишет Open — всё ок. Если Closed — проверь настройки роутера и firewall.
Подключение к RDP на нестандартном порту
Из Windows RDP-клиента (mstsc):
Win + R → mstsc → Enter # В поле "Компьютер" вводим: 192.168.1.100:33890 # Или server.domain.com:33890
Из командной строки:
[cmd] mstsc /v:192.168.1.100:33890[/cmd]
Из PowerShell:
Start-Process mstsc -ArgumentList "/v:192.168.1.100:33890"
Из 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
- Открой Group Policy Management Console:
Win + R → gpmc.msc → Enter
- Создай новую политику:
- Правый клик на OU с серверами → Create a GPO in this domain, and Link it here
- Имя:
RDP Custom Port 33890
- Редактируй политику:
- Правый клик на GPO → Edit
- Настраиваем 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 (десятичное)
- Применяем политику:
# На целевых серверах: 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 "RDP 33890" -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 "Remote Desktop*"
# Или удаляем правила для 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 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value $NewPort # Добавляем правило в firewall New-NetFirewallRule -DisplayName "RDP Port $NewPort" -Direction Inbound -LocalPort $NewPort -Protocol TCP -Action Allow # Перезапускаем службу Restart-Service TermService -Force # Проверяем Write-Host "RDP port changed to $NewPort" -ForegroundColor Green netstat -an | findstr ":$NewPort"
Сохрани в 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='Security';ID=4625} -MaxEvents 50 | Where-Object {$_.Message -like "*RDP*"}
Скрипт для логирования всех RDP-подключений:
# Включаем детальное логирование RDP:
wevtutil sl Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /e:true
# Смотрим успешные подключения (Event ID 21):
Get-WinEvent -LogName 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational' | Where-Object {$_.Id -eq 21}
Backup настроек RDP перед изменениями:
# Экспортируем текущие настройки RDP: reg export "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" 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 # Найти: "Allow log on through Remote Desktop Services" # Удалить группы/пользователей, которым не нужен доступ
Ограничение количества одновременных RDP-сессий:
# По дефолту Windows Server позволяет 2 административных сессии # Для увеличения нужна лицензия RDS (Remote Desktop Services) # Проверить текущие сессии: qwinsta # Отключить неактивную сессию: logoff <session_id>
Проверка и диагностика
Чек-лист проверки после смены порта:
- Проверяем реестр:
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber # Должно быть: PortNumber : 33890
- Проверяем, что служба слушает новый порт:
netstat -an | findstr :33890 # Должно быть: TCP 0.0.0.0:33890 0.0.0.0:0 LISTENING
- Проверяем firewall:
Get-NetFirewallRule | Where-Object {$_.LocalPort -eq 33890}
# Должно вернуть правило с DisplayName и Enabled : True
- Проверяем доступность снаружи:
# С другой машины: Test-NetConnection -ComputerName 192.168.1.100 -Port 33890 # Должно быть: TcpTestSucceeded : True
- Пробуем подключиться:
# Должно открыться окно логина 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 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational' -MaxEvents 50
# Только успешные подключения:
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-TerminalServices-LocalSessionManager/Operational';ID=21} -MaxEvents 20
# Попытки bruteforce (множественные неудачные входы):
Get-WinEvent -FilterHashtable @{LogName='Security';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 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -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 "RDP from Admin IP" -Direction Inbound -LocalPort 33890 -Protocol TCP -Action Allow -RemoteAddress 203.0.113.50 # Заблокировать всё остальное: New-NetFirewallRule -DisplayName "RDP Block All" -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 через интернет — это зло, даже на нестандартном порту).



