Порт RDP в Windows Server меняется через реестр: измените значение PortNumber в ключе HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp с 3389 на желаемый. После изменения добавьте правило в брандмауэр и перезапустите службу Remote Desktop Services.
Зачем менять стандартный порт RDP
Стандартный порт RDP это 3389. Его знают все. Включая хакеров. Короче, если ваш сервер торчит в интернет с открытым портом 3389, он будет под постоянными атаками. Боты сканируют весь интернет и пытаются подобрать пароли к RDP-серверам на порту 3389.
Смена порта не является полноценной защитой (это security through obscurity), но значительно снижает количество автоматических атак. По факту, после смены порта число попыток взлома падает на 90-95%.
Знакомый Михаил администрирует сервер Dell PowerEdge T440 с Windows Server 2019. До смены порта в логах безопасности было по 10-15 тысяч неудачных попыток входа в день. После смены порта на нестандартный, стало ноль. Ни одной попытки за месяц.
Шаг 1: изменение порта в реестре
Открываем редактор реестра. Нажимаем Win+R, вводим regedit, Enter. Переходим по пути:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TcpНаходим параметр PortNumber. Двойной клик. Переключаем систему счисления на «Десятичная». Меняем значение 3389 на новый порт.
Какой порт выбрать? Тут такое дело: не используйте порты ниже 1024 (они зарезервированы) и не используйте порты известных служб (80, 443, 8080, 21, 22). Выбирайте что-нибудь в диапазоне 10000-65535. Например, 45389 или 33890. Главное, запомните выбранный порт.
Вот в чём прикол: изменение реестра не вступит в силу до перезагрузки службы RDP. Но прежде чем перезагружать, нужно настроить брандмауэр. Иначе вы потеряете доступ к серверу.
Шаг 2: настройка брандмауэра
Это критически важный шаг. Если вы перезапустите RDP без добавления правила в брандмауэр, вы не сможете подключиться к серверу. На самом деле, это самая частая ошибка при смене порта RDP.
Открываем PowerShell от администратора и выполняем:
New-NetFirewallRule -DisplayName "RDP Custom Port" -Direction Inbound -Protocol TCP -LocalPort 45389 -Action AllowЗамените 45389 на ваш новый порт. Эта команда создаст разрешающее правило для входящих TCP-подключений на новом порту.
Можно сделать то же через графический интерфейс: Брандмауэр Windows, Дополнительные параметры, Правила для входящих подключений, Создать правило, Для порта, TCP, указать порт, Разрешить подключение.
Кстати, старое правило для порта 3389 можно оставить до тех пор, пока не убедитесь, что новый порт работает. Потом удалите его.
Шаг 3: перезапуск службы RDP
Теперь перезапускаем службу. Можно просто перезагрузить сервер, но если это продакшн-сервер, лучше перезапустить только службу:
Restart-Service TermService -ForceГрубо говоря, после этой команды текущие RDP-сессии оборвутся. Новые подключения будут приниматься на новом порту. Если вы подключены по RDP, будьте готовы к отключению.
Если честно, на продакшн-серверах лучше перезагружать в нерабочее время. Или иметь альтернативный способ доступа (IPMI, KVM, консоль гипервизора).
Шаг 4: подключение к серверу на новом порту
Теперь при подключении через RDP нужно указывать порт. В клиенте удалённого рабочего стола (mstsc) вводим адрес в формате:
192.168.1.100:45389Или если используете доменное имя:
server.example.com:45389Знаете что, многие забывают указать порт после смены и думают, что сломали сервер. Запишите новый порт в менеджер паролей или документацию.
Автоматизация через PowerShell
Все шаги можно выполнить одним скриптом. Вот готовый вариант:
$NewPort = 45389
Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" -Name "PortNumber" -Value $NewPort
New-NetFirewallRule -DisplayName "RDP Custom Port $NewPort" -Direction Inbound -Protocol TCP -LocalPort $NewPort -Action Allow
New-NetFirewallRule -DisplayName "RDP Custom Port $NewPort UDP" -Direction Inbound -Protocol UDP -LocalPort $NewPort -Action Allow
Restart-Service TermService -Force
Write-Host "RDP port changed to $NewPort"Моя коллега Елена использует похожий скрипт на всех серверах в компании (около 30 штук, в основном виртуальные на Hyper-V). Она просто меняет переменную $NewPort и запускает скрипт удалённо через PowerShell Remoting. Вся операция занимает минуту на сервер.
Проверка нового порта
После смены порта убедитесь, что всё работает. Подключитесь к серверу с нового порта. А ещё проверьте, что RDP слушает на правильном порту:
netstat -an | findstr "LISTENING" | findstr "45389"Если видите строку с вашим портом и статусом LISTENING, значит всё настроено правильно.
Кстати, если подключение не работает, проверьте, не блокирует ли внешний файрвол (роутер, облачная платформа, хостинг-провайдер) новый порт. Грубо говоря, на сервере всё может быть идеально настроено, а трафик режется на уровне сетевого оборудования. В Azure, AWS и других облаках нужно отдельно добавить правило в Network Security Group или Security Group.
А ещё проверьте через PowerShell:
Get-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" -Name "PortNumber"Частые ошибки при смене порта
Тут такое дело: новички часто совершают одни и те же ошибки. Разберём самые популярные, чтобы вы их не повторяли.
Ошибка номер один — забыли открыть порт в брандмауэре до перезагрузки. Сменили порт в реестре, перезагрузили сервер, и всё. Доступа нет. Если сервер физический и далеко — придётся ехать. Если виртуальный — спасёт консоль гипервизора.
Ошибка номер два — выбрали порт, который уже занят. Перед сменой проверьте:
netstat -an | findstr "LISTENING" | findstr "45389"Если порт уже кем-то используется, выберите другой. По факту на сервере могут работать десятки служб, и случайное совпадение портов — это реальная проблема.
Ошибка номер три — забыли про UDP. RDP использует не только TCP, но и UDP для улучшения производительности (особенно при плохом соединении). Добавьте правило и для UDP:
New-NetFirewallRule -DisplayName "RDP Custom Port UDP" -Direction Inbound -Protocol UDP -LocalPort 45389 -Action AllowМой коллега Николай на своём Supermicro SuperServer с Windows Server 2022 однажды сменил порт RDP и забыл про внешний файрвол. На самом сервере порт открыл, а на роутере Mikrotik — нет. Результат: из локальной сети подключался, а из дома — нет. Два часа искал проблему, пока не вспомнил про NAT на роутере.
Смена порта RDP через групповые политики
Если у вас Active Directory и много серверов, менять порт вручную на каждом — это боль. Можно сделать это централизованно через GPO.
Открываем Group Policy Management. Создаём новую GPO. Идём в Computer Configuration, Preferences, Windows Settings, Registry. Создаём новый элемент реестра:
- Hive: HKEY_LOCAL_MACHINE
- Key Path: SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp
- Value name: PortNumber
- Value type: REG_DWORD
- Value data: ваш новый порт (в десятичном формате)
Привязываем GPO к нужному OU с серверами. Ну и не забудьте через ту же GPO или скрипт добавить правило брандмауэра на каждом сервере. А ещё обновите документацию — когда через полгода новый сотрудник будет подключаться к серверу на стандартном 3389, а оно не работает, он скажет вам «спасибо» за записанный где-нибудь новый порт.
Кстати, если вы используете RD Gateway (шлюз удалённых рабочих столов), менять порт на самих серверах может быть не нужно. RD Gateway принимает подключения на порту 443 (HTTPS), а дальше маршрутизирует трафик к серверам по внутренней сети. Грубо говоря, серверы не торчат в интернет напрямую, и менять порт незачем.
Дополнительные меры безопасности
Смена порта это хорошо, но недостаточно. Для полноценной защиты RDP рекомендуется:
- Включить NLA (Network Level Authentication)
- Настроить блокировку после нескольких неудачных попыток входа
- Использовать VPN для доступа к серверу (не выставлять RDP в интернет напрямую)
- Ограничить IP-адреса, с которых разрешён доступ
- Использовать сложные пароли или сертификаты
А ещё рекомендую задокументировать все нестандартные порты в вашей инфраструктуре. Таблица в Wiki, файл в SharePoint, запись в менеджере паролей — что угодно. Когда через год вы будете настраивать мониторинг или менять файрвол, эта документация сэкономит кучу времени.
Кстати, для мониторинга попыток подключения к RDP (на любом порту) включите аудит входа в систему. Логи будут записываться в Event Viewer, раздел Security. Событие 4625 — неудачная попытка входа. Событие 4624 — успешный вход. Если видите 4625 с незнакомых IP-адресов, значит вас пытаются ломать, и смена порта была правильным решением.
Ну и конечно, используйте лицензионный Windows Server. В keytrust24.store есть ключики для Windows Server 2019 и 2022 по хорошим ценам.



