Обновлено 12.06.2018
Добрый день уважаемые читатели и гости блога, сегодня у нас с вами вот такая задача: изменить входящий порт службы RDP (терминального сервера) со стандартного 3389 на какой-то другой. Напоминаю, что RDP служба это функционал операционных систем Windows, благодаря которому вы можете по сети открыть сессию на нужный вам компьютер или сервер по протоколу RDP, и иметь возможность за ним работать, так как будто вы сидите за ним локально.
Что такое RDP протокол
Прежде чем, что то изменять, хорошо бы понимать, что это и как это работает, я вам об этом не перестаю повторять. RDP или Remote Desktop Protocol это протокол удалённого рабочего стола в операционных системах Microsoft Windows, хотя его происхождение идет от компании PictureTel (Polycom). Microsoft просто его купила. Используется для удаленной работы сотрудника или пользователя с удаленным сервером. Чаще всего такие сервера несут роль сервер терминалов, на котором выделены специальные лицензии, либо на пользователе, либо на устройства, CAL. Тут задумка была такой, есть очень мощный сервер, то почему бы не использовать его ресурсы совместно, например под приложение 1С. Особенно это становится актуальным с появлением тонких клиентов.
Сам сервер терминалов мир увидел, аж в 1998 году в операционной системе Windows NT 4.0 Terminal Server, я если честно тогда и не знал, что такое есть, да и в России мы в то время все играли в денди или сегу. Клиенты RDP соединения, на текущий момент есть во всех версиях Windows, Linux, MacOS, Android. Самая современная версия RDP протокола на текущий момент 8.1.
Порт rdp по умолчанию
Сразу напишу порт rdp по умолчанию 3389, я думаю все системные администраторы его знают.
Принцип работы протокола rdp
И так мы с вами поняли для чего придумали Remote Desktop Protocol, теперь логично, что нужно понять принципы его работы. Компания Майкрософт выделяет два режима протокола RDP:
- Remote administration mode > для администрирования, вы попадаете на удаленный сервер и настраиваете и администрируете его
- Terminal Server mode > для доступа к серверу приложений, Remote App или совместное использование его для работы.
Вообще если вы без сервера терминалов устанавливаете Windows Server 2008 R2 — 2016, то там по умолчанию у него будет две лицензии, и к нему одновременно смогут подключиться два пользователя, третьему придется для работы кого то выкидывать. В клиентских версиях Windows, лицензий всего одна, но и это можно обойти, я об этом рассказывал в статье сервер терминалов на windows 7. Так же Remote administration mode, можно кластеризировать и сбалансировать нагрузку, благодаря технологии NLB и сервера сервера подключений Session Directory Service. Он используется для индексации пользовательских сессий, благодаря именно этому серверу у пользователя получиться войти на удаленный рабочий стол терминальных серверов в распределенной среде. Так же обязательными компонентами идут сервер лицензирования.
RDP протокол работает по TCP соединению и является прикладным протоколом. Когда клиент устанавливает соединение с сервером, на транспортном уровне создается RDP сессия, где идет согласование методов шифрования и передачи данных. Когда все согласования определены и инициализация окончена, сервер терминалов, передает клиенту графический вывод и ожидает входные данные от клавиатуры и мыши.
Remote Desktop Protocol поддерживает несколько виртуальных каналов в рамках одного соединения, благодаря этому можно использовать дополнительный функционал
- Передать на сервер свой принтер или COM порт
- Перенаправить на сервер свои локальные диски
- Буфер обмена
- Аудио и видео
Этапы RDP соединения
- Установка соединения
- Согласование параметров шифрования
- Аутентификация серверов
- Согласование параметров RDP сессии
- Аутентификация клиента
- Данные RDP сессии
- Разрыв RDP сессии
Безопасность в RDP протоколе
Remote Desktop Protocol имеет два метода аутентификации Standard RDP Security и Enhanced RDP Security, ниже рассмотрим оба более подробно.
Standard RDP Security
RDP протокол при данном методе аутентификации, шифрует подключение средствами самого RDP протокола, которые есть в нем, вот таким методом:
- Когда ваша операционная система запускается, то идет генерация пары RSA ключиков
- Идет создание сертификата открытого ключа Proprietary Certificate
- После чего Proprietary Certificate подписывается RSA ключом созданным ранее
- Теперь RDP клиент подключившись к терминальному серверу получит Proprietary Certificate
- Клиент его смотрит и сверяет, далее получает открытый ключ сервера, который используется на этапе согласования параметров шифрования.
Если рассмотреть алгоритм с помощью которого все шифруется, то это потоковый шифр RC4. Ключи разной длины от 40 до 168 бит, все зависит от редакции операционной системы Windows, например в Windows 2008 Server – 168 бит. Как только сервер и клиент определились с длиной ключа, генерируются два новых различных ключа, для шифрования данных.
Если вы спросите про целостность данных, то тут она достигается за счет алгоритма MAC (Message Authentication Code) базируемого на SHA1 и MD5
Enhanced RDP Security
RDP протокол при данном методе аутентификации использует два внешних модуля безопасности:
- CredSSP
- TLS 1.0
TLS поддерживается с 6 версии RDP. Когда вы используете TLS, то сертификат шифрования можно создать средствами терминального сервера, самоподписный сертификат или выбрать из хранилища.
Когда вы задействуете CredSSP протокол, то это симбиоз технологий Kerberos, NTLM и TLS. При данном протоколе сама проверка, при которой проверяется разрешение на вход на терминальный сервер осуществляется заранее, а не после полноценного RDP подключения, и тем самым вы экономите ресурсы терминального сервера, плюс тут более надежное шифрование и можно делать однократный вход в систему (Single Sign On), благодаря NTLM и Kerberos. CredSSP идет только в ОС не ниже Vista и Windows Server 2008. Вот эта галка в свойствах системы
разрешить подключения только с компьютеров, на которых работает удаленный рабочий стол с проверкой подлинности на уровне сети.
Изменить порт rdp
Для того, чтобы изменить порт rdp, вам потребуется:
- Открываем редактор реестра (Пуск -> Выполнить -> regedit.exe)
- Переходим к следующему разделу:
HKEY_LOCAL_MACHINESystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp
Находим ключ PortNumber и меняем его значение на номер порта, который Вам нужен.
Выберите обязательно десятичное значение, я для примера поставлю порт 12345.
Как только вы это сделали, то перезапустите службу удаленных рабочих столов, через командную строку, вот такими командами:
Далее не забудьте в брандмауэре Windows после изменения порта RDP открыть его, для этого жмем WIN+R и в окне выполнить пишем firewall.cpl.
Далее переходим в пункт Дополнительные параметры
И создаем новое входящее правило для нового rdp порта. Напоминаю, что порт rdp по умолчанию 3389.
Выбираем, что правило будет для порта
Протокол оставляем TCP и указываем новый номер RDP порта.
Правило у нас будет разрешающее RDP соединение по не стандартному порту
При необходимости задаем нужные сетевые профили.
Ну и назовем правило, понятным для себя языком.
Для подключения с клиентских компьютеров Windows адрес пишите с указанием порта. Например, если порт Вы изменили на 12345, а адрес сервера (или просто компьютера, к которому подключаетесь): myserver, то подключение по MSTSC будет выглядеть так:
mstsc -v:myserver:12345
или через командную строку.
Как видите изменить порт rdp совсем не трудная задача, все тоже самое можно проделать средствами групповой политики.
11.12.2021 2 мин
Изменяем порт RDP в реестре Windows для предотвращения попыток удалённого взлома компьютера злоумышленниками.
В Windows для удалённого рабочего стола по умолчанию выставлен порт 3389. Если в вашей операционной системе настроен удалённый рабочий стол, то ОС постоянно прослушивает входящие соединения на порту 3389. И поскольку он известен всем желающим, то он используется злоумышленниками для атак на ваш компьютер.
Зачем менять порт RDP
Если на ПК не настроена политика блокировки учётных записей (по умолчанию отключена), то вы подвержены атаке bruteforce — это когда злоумышленником перебираются всевозможные пароли.
Брутфорс делается не вручную, а с помощью специальных программ, что на порядок увеличивает вероятность, подбора пароля. Но даже если настроена блокировка учётной записи при ошибочном вводе пароля, это не избавит проблем. Активность ботов приводит к блокировке учётных записей, под которыми они пытаются войти, возрастает нагрузка на сервер, забивается канал связи, это очень раздражает.
Для защиты системы от ботов и начинающих хакеров, можно изменить порт RDP по умолчанию на любой другой. Это не панацея, но значительно сократит попытки проникновения.
Существует ва простых способа изменить стандартный порт протокола RDP.
Смена порта через реестр Windows
Как сменить порт RDP в реестре Windows:
- Запускаем regedit нажав Win + R.
- Заходим в [HKEY_LOCAL_MACHINE] → [SYSTEM] → [CurrentControlSet] → [Control] → [Terminal Server] → [WinStations and RDP-Tcp]
- В правой панели находим PortNumber.
- Щёлкаем два раза мышкой на него.
- Меняем на другое значение от 1025 до 65535.
- Нажимаем OK.
- Перезагружаем компьютер, чтобы изменения вступили в силу.
Видеопример смены порта RDP в реестре Windows:
Имейте в виду, что в следующий раз, когда вы хотите подключиться к вашей системе по RDP, вам нужно будет указать номер порта вручную. Для этого в адресе подключения добавьте после адреса или IP адреса знак двоеточия и номер порта. 10.10.32.30:5581 или mycomp.ru:5534.
Узнать номер текущего порта можно с помощью команды PowerShell:
Get-ItemProperty -Path ‘HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp’ -name «PortNumber»
Кстати, через PowerShell тоже можно поменять порт РДП. Если интересно, пишите в комментарии, дополню статью.
Алекс Гезанов
Работаю в сервисном центре по ремонту и обслуживанию бытовой техники. За более чем 10 лет трудовой деятельности, я сталкивался с решением большого количества проблем в работе ОС Windows, периферийных устройств, бытовой техники, игровых консолей Playstation и т. д.
Начало
В данном руководстве будет рассмотрена процедура изменения порта RDP в операционной системе Windows Server 2012.
Обратите внимание что — все дальнейшие процедуры меняют порт RDP что приведет к отключению текущего соединения с сервером,в связи с этим рекомендуем использовать другие варианты подключения к серверу (например через Веб консоль из личного кабинета).
Для того чтобы выполнить эту задачу, необходимо осуществить редактирование реестра операционной системы.
Редактирование реестра производится с помощью программы-редактора.
Нажмите Пуск и в панели Поиск напечатайте cmd.
В появившемся окне консоли наберите и выполните команду regedit.
В редакторе реестра нужно отыскать раздел RDP-Tcp, сделать это можно, пройдя такой путь:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp
В нем необходимо отыскать элемент PortNumber (как на картинке выше), и открыть этот параметр.
Далее следует переключиться в Десятичный (Decimal) формат ввода и задать новый порт для подключения по протоколу RDP:
При выборе нового порта для подключения необходимо помнить о том, что существует несколько категорий портов в разбивке по их номерам:
- Номера от 0 до 10213 — известные порты, которые назначаются и контролируются организацией IANA (Internet Assigned Numbers Authority).
Как правило, их используют различные системные приложения ОС. - Порты от 1024 до 49151 — зарегистрированные порты, назначаемые IANA. Их позволяется использовать для решения частных задач.
- Номера портов от 49152 до 65535 — динамические (приватные) порты, которые могут использоваться любыми приложениями или процессами для решения рабочих задач.
Правило для порта
После изменения порта для удаленного подключения, необходимо открыть его в настройках межсетевого экрана, иначе попытки внешнего соединения будут блокироваться.
Для этого, нужно воспользоваться оснасткой управления Брандмаэур Windows в режиме повышенной безопасности
Открыть ее можно, зайдя в меню: Диспетчер Серверов —> Средства
Далее нужно выбрать пункт «Брандмаэур Windows в режиме повышенной безопасности»
В новом окне выбрать пункт «Правила для входящих подключений», кликнуть по этому пункту правой кнопкой мыши и выбрать «Создать правило»:
Мы будем создавать правило для порта:
Нужно выбрать тип протокола (TCP или UDP) и указать порт, который мы задавали в ходе редактирования реестра
(в нашем примере — протокол TCP, номер порта 60000):
На следующем этапе нужно выбрать тип действия, которое описывает правило.
В нашем случае нужно разрешить подключение.
На следующем шаге необходимо указать область действия правила — оно зависит от того, где работает сервер (в рабочей группе, домене, или частном доступе):
Затем нужно выбрать имя для правила
(рекомендуется выбирать его таким образом, чтобы затем правило было легко узнать среди других):
После этого нужно перезагрузить сервер.
Теперь для подключения к нему по протоколу RDP нужно использовать новый порт.
По умолчанию во всех операционных системах Windows для подключения по протоколу RDP (Remote Desktop Protocol / Удаленный рабочий стол) использует порт TCP 3389. После того, как вы включили RDP доступ в Windows, служба TermService (Remote Desktop Services) начинает слушать на порту 3389. В этой статье мы покажем, как изменить стандартный номер RDP порта в дестопных редакциях Windows (7/8/10/11) и Windows Server.
Обратите внимание, что в современных версиях Windows для удаленного рабочего стола используется также протокол UDP с тем же номером порта 3389.
Вы можете изменить номер стандартного порта 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 порт в интернет. Сканеры портов позволяют по сигнатуре понять, что на новом порту находится RDP Listener. Если вы хотите открыть RDP доступ к компьютеру в своей сети, лучше использовать такие технологии подключения, как VPN, RD Web Access, RD Gateway и другие
Если вы решили использовать нестандартный номер порта для RDP, обратите внимание, что нежелательно использовать номера портов в диапазоне от 1 до 1023 (известные порты). Используйте динамический порт из RPC диапазона (от 49152 до 65535), или любой портов в диапазоне от 1024 до 49151, который не используется другим сервисом или приложением.
Изменить номер RDP порта по-умолчанию в Windows
В нашем примере мы изменим номер порта, на котором ожидает подключения служба Remote Desktop на 1350. Для этого:
- Откройте редактор реестра (regedit.exe) и перейдите в ветку HKEY_LOCAL_MACHINESystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp;
- Найдите DWORD параметр реестра с именем PortNumber.. В этом параметре указан порт, на котором ожидает подключения служба Remote Desktop. Значение по умолчанию – 3389 (decimal);
- Измените значение этого порта. Я изменил RDP порт на 1350 в десятичном значении (Deciamal);
- Если на вашем компьютере включен 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:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-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:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-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:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-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).
В инструкции ниже рассмотрим на примере как изменить стандартный порт удаленного подключения RDP в Windows Server с 3389 на любой другой.
Необходимо открыть элемент управления Windows PowerShell и выполнить команду regedit
В появившемся окне необходимо перейти в папку HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp
В данной папке необходимо изменить значение элемента PortNumber. Для удобства выбираем десятичную систему исчисления. Порт по умолчанию – 3389. Изменяем данный порт на любой порт из диапазона от 49152 до 65535.
Необходимо добавить разрешающее правило в брандмауэр Windows, чтобы разрешить входящие подключения с указанных портов.
Далее перейти по следующему пути: панель управления -> Система и безопасность -> Брандмауэр Windows -> Дополнительные параметры -> Правила для входящих подключений -> Создать правило
Создать два разрешающих правила для доступа по протоколам TCP и UDP.
Выберите тип правила «Для порта»
Выберите соответствующий протокол для правила и укажите порт, который был внесен в редактор реестра Windows ранее
Далее разрешаем подключение и изменяем соответствующее имя правила
После изменений в реестре Windows может понадобиться перезагрузка системы.
После проведенных настроек вы сможете подключаться к вашему серверу, используя стандартное средство подключения к удаленному рабочему столу RDP, указав при этом новый порт подключения следующим образом: <ip адрес вашего сервера>:<новый порт подключения>
Советуем после проведения всех действий отключить правила Брандмауэра Windows, разрешающие подключения по стандартным портам RDP
Смена порта подключения RDP не решит всех ваших проблем безопасности, т.к. сканирование портов сможет в любом случае выявить открытые порты вашей ОС, однако, при должном внимании системного администратора к системным журналам (Панель управления -> Система и безопасность -> Администрирование -> Просмотр журналов событий -> Журналы Windows -> Безопасность), можно защитить сервер от атак, в том числе вирусных
Инструкция актуальна для всех Виртуальных серверов VPS, и серверов, созданных в Виртуальной IaaS инфраструктуре, на базе Windows Server.
Для продвинутых пользователей доступен PowerShell команды для смены порта подключения и добавления правила для нового порта в исключения в Firewall.
Write-host «What Port would you like to set for RDP: » -ForegroundColor Yellow -NoNewline;$RDPPort = Read-Host
Get-ItemProperty -Path «HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp» -Name PortNumber | Select-Object PortNumber
Set-ItemProperty -Path «HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp» -Name PortNumber -Value $RDPPort
New-NetFirewallRule -DisplayName «Remote Desktop — User Mode (TCP-In) $($RDPPort)» -Direction Inbound –Protocol TCP -Profile Any –LocalPort $RDPPort -Action allow
New-NetFirewallRule -DisplayName «Remote Desktop — User Mode (UDP-In) $($RDPPort)» -Direction Inbound –Protocol UDP -Profile Any –LocalPort $RDPPort -Action allow
[ValidateSet(‘y’,’n’)]$Answer = Read-Host «`nAre you sure you want to restart $($DC.Name) ? Enter y/n»
If ($Answer -eq ‘y’) { Restart-Computer -Force }