Обновлено 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 совсем не трудная задача, все тоже самое можно проделать средствами групповой политики.
Протокол RDP (Remote Desktop Protocol) используется для удаленного доступа к рабочему столу компьютера или сервера с Windows. По умолчанию для удаленного подключения используется порт TCP 3389. Если ваш компьютер/сервер подключен напрямую в Интернет (VDS/VPS) и имеет публичный IP адрес, то с точки зрения безопасности желательно изменить стандартный номер RDP порта.
Дело в том, что в сети работает большое количество автоматических ботов, которые сканируют все доступные IP адреса в интернете на наличие открытого порта RDP. Такие боты и целые сети могут пытаться подобрать пароль к вашему компьютеру через открытый наружу стандартный RDP порт. Также существует высокий риск эксплуатации против RDP 0-day уязвимости (за последний год Microsoft исправила целых 2 критически уязвимости в RDP (BlueKeep and BlueKeep-2), которые могли эксплуатироваться через Remote Code Execution.
Рассмотрим, как изменить стандартный RDP порт в Windows 10. Настройки RDP порта задаются в параметре PortNumber в ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp. Чтобы вручную изменить номер порта:
- Запустите редактор реестра
regedit.exe
с правами администратора; - Перейдите в ветку реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp;
- Измените значение DWORD параметра PortNumber в десятичном формате. Например, укажите новый номер порта 41212;
- Откройте консоль управления службами (
services.msc
) и перезапустите службу Remote Desktop Services.
Также вы можете изменить номер RDP порта из командной строки:
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v PortNumber /t REG_DWORD /d 41212 /f
Или с помощью PowerShell:
Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-TCP" -Name PortNumber -Value 41212
Если у вас на компьютере включен встроенный Windows Defender Firewall with Advanced Security, нужно разрешить входящий TCP трафик на новый RDP порт. Вы можете создать новое правило для входящего трафика на порт 41212 через графическую консоль wf.msc или из командной строки:
netsh advfirewall firewall add rule name="RDP new port" dir=in action=allow protocol=TCP localport=41212
После этого вы можете подключаться к вашему компьютеру Windows через нестандартный RDP порт. Если вы используете для RDP подключений встроенный Windows-клиент mstsc.exe (Remote Desktop Connection), нужно указать новый номер RDP порт через двоеточие после имени (IP) адреса компьютера или использовать такую команду:
mstsc /v:192.168.10.10:41212
В инструкции ниже рассмотрим на примере как изменить стандартный порт удаленного подключения 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 }
По-умолчанию для терминального сервера Microsoft используется протокол RDP(Remote Desktop Protocol) и по-умолчанию порт 3389. Майкрософт использует стандартный номер порта для всех систем: начиная с совсем уж древних типа Windows XP, включая Windows Server 2003/2008/2012 и заканчивая Windows 10. С одной стороны хорошо — как никак один стандарт. Но с другой стандартный порт всегда является объектом атак со стороны злоумышленников с целью взлома сервиса и доступа к конфиденциальным данным. Поэтому стоит его сменить и я покажу как это сделать.
Для совсем «зеленых» пользователей заранее объясню, что протокол удалённого рабочего стола в операционных системах Windows использует транспортный протокол TCP, а потому для проброса RDP порта нужно использовать именно TCP. Протокол UDP при этом не используется. Используемые по умолчанию порт — 3389. При подключении к удалённому рабочему столу клиентское соединение стучится именно на этот порт.
Смена порта RDP
Итак, по соображениям безопасности Вы собрались поменять порт RDP, чтобы значительно снизить риск взлома системы при брутфорсе — автоматизированном подборе паролей. Смена порта RDP на другое значение подразумевает несколько обязательных действий, без которых это не будет работать!
Обратите вниммание! Необходимо в используемом Вашей операционной системой брандмауэре открыть новый порт. В противном случае, после смены Вы потеряете управление рабочей станцией или сервером. Как это сделать Вы узнаете здесь — инструкция как открыть порт в брандмауэре Windows. Перепечатывать её сюда я не вижу смысла.
Как изменить RDP-порт по-умолчанию Windows 10
Последовательность действий достаточно простая даже для неопытного пользователя — надо лишь выполнять всё в точности как я напишу.
Нажимаем правой кнопкой мыши на кнопку «Пуск», чтобы появилось контекстное меню:
В появившемся окне «Выполнить» введите команду regedit. Вот так:
Нажимаем на кнопку «ОК». Должно появится окно подтверждения действий встроенного Контроля Учётных Записей. Нажимаем там на кнопку «Да». После этого должно появится окно редактора реестра Windows 10:
Далее Вы можете либо самостоятельно открыть ветку реестра:
HKEY_LOCAL_MACHINE>SYSTEM >CurrentControlSet >Control >Terminal Server >WinStations >RDP-Tcp
Либо нажмите кнопку F3 и введите в строку «найти» критерий поиска — RDP-Tcp. Я поступил именно так. Через несколько секунд искомый раздел нашёлся. Чтобы изменить порт РДП, нужно в разделе найти ключ PortNumber.
Кликаем на нёго дважды, чтобы открыть окно параметров ключа:
По умолчанию он в шестнадцатеричной системе исчисления и равен 00000D3D, что соответствует 3389 в десятичной. Далее нужно ставим флажок на десятичную систему и в поле значение поменять порт RDP Windows на любой другой, который Вы хотите (и он при этом не занят).
Нажимаем кнопку «ОК» и перезагружаемся.
Теперь, чтобы подцепиться к серверу RDP, Вы должны будете указать уже новый номер порта через двоеточие после адреса.