Несколько независимых RDP портов на одном терминальном сервере

Обновлено 23.01.2020

RDP logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в России. В прошлый раз мы с вами разобрали замечательную утилиту Remote Desktop Connection Manager для удобного администрирования и подключения к серверам по RDP. В сегодняшней публикации я хочу вас научить более рационально использовать ваш терминальный сервер и покажу, как в рамках одного сервера иметь несколько независимых RDP портов подключения и применяя разные настройки на них.

Принцип изолированного терминального сервера

Удаленный рабочий стол отлично подходит для подключения к компьютеру или серверу Windows по локальной или удаленной сети. Вы можете получить доступ к локальным дискам, принтерам, файлам и т.д., так если бы вы сидели перед ним. Я хочу вам предложить два примера использования подхода с разными портами RDP в рамках одного сервера или компьютера, с которыми вы можете столкнуться в своей практике.

Первый сценарий. Уникальное пространство для подрядчиков

Предположим, что у вас есть RDS ферма или отдельный терминальный стол. У вас есть две группы пользователей, первая это ваши сотрудники, а вторая, это подрядчики. У вас появилась задача для подрядчиков запретить пробрасывание локальных дисков, съемных носителей, буфера обмена и подключение к интернету. Логично, что вы скажете Иван, но ведь это можно сделать с помощью групповых политик и будите правы, но есть БОЛЬШОЕ НО. Буфер обмена вы можете запретить на уровне пользователя, а вот запретить подключение локальных дисков или съемных устройств для отдельной группы людей вы не можете, только на уровне компьютера, но слава Богу, что это можно обойти. Создав две или более независимые службы удаленного рабочего стола вы их используете на одном сервере.

Второй сценарий для проброса портов

Предположим, что у вас есть стационарный компьютер с Windows 10 или Windows Server. Есть роутер Mikrotik с внешним IP-адресов и на нем настроен проброс портов RDP. Когда у вас несколько серверов, то проблем с пробросом на разные порты нет, так как я вам рассказывал "Как поменять порт RDP", а что делать в рамках одного сервера. Это я вам и покажу в данной статье.

Как добавить новый порт прослушивания RDP на сервере терминалов

И так в моем тестовом окружении есть виртуальная машина на которой установлена Windows Server 2019, имеющая установленную роль RDS. На ней я хочу для подрядчиков поднять дополнительную службу RDP работающую по порту 3390. Доступ к стандартному порту 3389 для подрядчиков запрещу, а так же сделаю для них политику запрещающую:

  • Перенаправление локальных дисков
  • Перенаправление USB-дисков и устройств
  • Запрет буфера обмена
  • Запрет изменения прокси-сервера в Internet Explorer или Google Chrome

Чтобы все это провернуть, нам потребуется произвести манипуляцию с реестром Windows, путем копирования ветки и изменения ее настроек. Запустите окно выполнить и введите regedit.

Запуск реестра Windows

Далее вам необходимо перейти в раздел реестра:

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

Перед вами будет ветка реестра. которая отвечает за подключение к удаленному рабочему столу по стандартному порту 3389. Тут вы увидите большое количество ключей, которые нам помогут ограничить нужную группу людей, но об этом чуть ниже.

Открываем ветку реестра отвечающую за RDP подключение

Чтобы добавить новый порт прослушивания RDP на сервере терминалов, вам необходимо скопировать текущую ветку реестра и затем ее видоизменить. Для этого мы произведем ее экспорт, через контекстное меню, выбрав соответствующий пункт меню.

Экспорт ветки реестра отвечающей за RDP подключение

Далее вам необходимо указать место сохранения вашей экспортируемой ветки реестра. В моем примере это будет рабочий стол и я задам имя 3390, по номеру будущего порта.

Сохранение reg файла для создания второго RDP порта

В результате у вас будет файл в формате .reg, который вы можете легко отредактировать любым текстовым редактором, мне будет достаточно встроенного блокнота в Windows Server 2019. Щелкаем по нему правым кликом и выбираем пункт изменить.

Как добавить новый порт прослушивания RDP на сервере терминалов

Находим третью строку с адресом ветки и меняем у нее на конце имя, в моем примере это будет RDP-Tcp-3390.

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

Редактирование reg файла для создания нового порта для удаленного подключения по RDP

Обязательно сохраните настройки. Далее вам необходимо импортировать это reg файл на нужном терминальном сервере. Обратите внимание, что будет предупреждение, что вы должны понимать, что делаете. Если не хотите его видеть в своем сценарии, то можете сконвертировать reg файл в exe.

Импорт новой ветки реестра для настройки второго RDP порта в рамках одного терминального сервера

В результате будет создана новая ветка реестр.

Успешное импортирование ветки реестра Windows

Переходим в вашу новую ветку в редакторе. Пока она так же работает по порту 3389 и нам нужно его поменять, за это отвечает ключ PortNumber. Открываем его, переключаем в десятичное отображение и меняем номер порта на 3390

Multiple RDP Ports на RDS сервере

Если хотите использовать шеснадцатиричное представление ,то вам может помочь встроенный калькулятор в Windows, в режиме программиста. Тут число 3390 будет представлено в виде "D3E".

Перевод десятеричного числа в шестнадцатиричное через калькулятор Windows

Несколько независимых RDP портов на одном терминальном сервере

Далее я хочу запретить для данного подключения по RDP буфер обмена, для этого есть ключ реестра fDisableClip. Если вы установите в fDisableClip значение "0", то буфер обмена между хостовой системой и удаленной будет работать, если вы выставите "1", то вы запретите использование общего буфера обмена.

Запрет буфера обмена через реестр Windows

Далее я хочу запретить перенаправление USB-устройств, локальных дисков на терминальный стол. Для этого есть ключ реестра fDisableCdm. По умолчанию у ключа fDisableCdm выставлено значение "0", что подразумевает возможность сопоставления клиентских дисков и их подключение в автоматическом режиме. Если вы выставите у fDisableCdm значение "1". то вы запретите перенаправление (проброс) USB и локальных дисков на терминальный стол.

Запрет перенаправления USB и дисков по RDP

Следующим шагом я сделал запрет изменения настроек прокси-сервера, если у вас интернет дается всем по умолчанию и нет обязательной аутентификации, например ISA или Kerio Control, то вы можете тут задать какие-то неработающие адреса, они будут блокировать интернет и пользователь не сможет их поменять, делая такой терминальный стол более изолированным.

Как ограничить порты подключения на терминальном сервере

По умолчанию, на оба RDP порта 3389 и 3390 (Созданный ранее) пользователи группы администраторы и пользователи удаленного рабочего стола имею права для подключения, это не совсем правильно. Что я хочу сделать:

  1. Члены группы администраторы должны иметь возможность подключаться к любому порту RDP
  2. Члены группы удаленного рабочего стола должны иметь возможность подключаться только к стандартному порту 3389
  3. А вот группа изолированные пользователи должны иметь возможность подключаться исключительно ко второму RDP порту 3390 (Изолированное окружение в рамках общего терминального сервера)

Вы открываете оснастку "Active Directory Пользователи и компьютеры" и создаете отдельные группы, я создам группу term-svt2019s01-rdp-3390 для изолированного подключения.

Создание группы в Active Directory для изолированного терминала

В группу term-svt2019s01-rdp-3390 я добавлю пользователя Барбоскина Генная Викторовича.

Добавление пользователя в группу для изолированного терминального сервера

Далее вам нужно нужного пользователя. в моем случае Барбоскина Генная Викторовича исключить из группы администраторы или группы удаленного рабочего стола, если он в них состоял и назначить права доступа на порт 3390 для группы term-svt2019s01-rdp-3390. Сделать штатными средствами в операционных системах Windows Server 2012 R2 и выше вы не сможете, так как в оснастке по управлению RDS фермой нет такой функции, но не все потеряно.

В операционных системах Windows Server 2008 R2 и ниже, при установке терминального сервера были замечательные оснастки TSADMIN.msc (Remote Desktop Services Manager) и TSCONFIG.msc (Remote Desctop Session Host Configuration). Это были великолепные инструменты помогающие в удобном интерфейсе взаимодействовать с терминальными подключениями и настройками. Именно благодаря TSCONFIG.msc у вас была возможность настроить разрешения на подключение к конкретному RDP порту. У меня для таких целей всегда есть виртуальная машина с установленными на нее оснастками, которые добавляются при установке роли терминального сервера.

Запускаем оснастку "Конфигурация узла сеансов удаленных рабочих столов (Remote Desctop Session Host Configuration)". Щелкаем по корню и из контекстного меню выбираем пункт "Подключиться к серверу узла сеансов удаленных рабочих столов"

Запуск TSADMIN.msc

Выбираем сервер на котором вы настроили два разных RDP порта.

Запуск Remote Desctop Session Host Configuration для настройки прав подключения

Щелкаем по изолированному подключению правым кликом и открываем его свойства.

Настройка прав доступа на изолированном терминальном сервере

Перейдите на вкладку "Безопасность". Обратите внимание, что тут по умолчанию у группы "Пользователи удаленного рабочего стола" выставлены права на:

  • Доступ пользователя
  • Доступ гостя

Обращу ваше внимание, что данная вкладка почему-то доступна исключительно из операционной системы Windows Server 2008R2, с установленными компонентами, в Windows Server 2012 R2 и выше после регистрации оснасток, эта вкладка почему-то отсутствовала. Если кто-то знает причину, то напишите в комментариях

Назначение прав на втором RDP подключении на изолированном терминальном сервере

Вы так же можете более подробно посмотреть, что именно требуется для подключения по удаленному рабочему столу.

детальные права на RDP подключение

Удаляем из списка доступа (DACL) группу "Пользователи удаленного рабочего стола" и нажимаем кнопку "Добавить". В открывшемся окне найдите вашу группу доступа

Добавление группы доступа на изолированный терминальный стол

Можем более тонко выставить разрешения. Сохраняем все.

Настройка прав доступа по RDP

Открытие порта для второго RDP подключения

Наш изолированный терминальный стол почти готов, вам нужно не забыть открыть порты на брандмауэре Windows или другом фаэрволе, который вы используете. Я это буду делать через утилиту netsh. Я вам уже приводил пример такого правила в статье, где я удаленно включал RDP подключение. Откройте командную строку от имени администратора и запустите вот такую команду:

netsh advfirewall firewall add rule name="allow RemoteDesktop 3390" dir=in protocol=TCP localport=3390 action=allow

открываем порт в брандмауэре

Создание RDP файла подключения

Запустите клиента "Подключения к удаленному рабочему столу". Укажите адрес подключения, порт подключения, имя пользователя и нажмите кнопку "Сохранить как"

Создание RDP файла подключения

Выбираем место сохранения RDP файла с подключением к изолированному терминальному серверу.

Сохранение RDP файла подключения

Чем хорошо файлы формата rdp можно легко редактировать и открывать с помощью любого текстового редактора.

Редактирование RDP файла

В итоге вы можете производить нужные вам настройки в рамках данного клиента. После чего сохраните файл и передайте его сотруднику для подключения.

Несколько независимых RDP портов на одном терминальном сервере

На этом у меня все. Мы с вами разобрали как создать несколько независимых RDP портов на одном терминальном сервере. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org,

Автор - Сёмин Иван

11 Responses to Несколько независимых RDP портов на одном терминальном сервере

  1. botva:

    вкладка «безопасность» для rdp подключений недоступна для новых версий windows server, как вы написали, но все эти возможности доступны через powershell. вот некоторые команды для примера.

    wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName =»RDP-Tcp») CALL AddAccount «BUILTIN\Пользователи удаленного рабочего стола»,2

    $rdp = @(Get-WmiObject -Namespace root\cimv2\terminalservices -Query «SELECT * FROM Win32_TSAccount WHERE TerminalName = ‘RDP-TCP'»)

    foreach($p in $rdp){write-host $p.AccountName}

    foreach($p in $rdp){write-host $p.PermissionsAllowed}

    $rdp = @(Get-WmiObject -Namespace root\cimv2\terminalservices -Query «SELECT * FROM Win32_TSAccount WHERE TerminalName = ‘RDP-TCP’ AND AccountName=’BUILTIN\\Опытные пользователи'»)
    $rdp.Delete()

  2. Иван Семин:

    спасибо

  3. botva:

    кроме того, необходимо разрешить подключения вновь созданной группы к серверу терминалов.
    в редакторе локальной политики (gpedit.msc)
    ветка Computer Configuration -> Windows settings -> Security Settings -> Local policies -> User Rights Assignment
    находим правило Allow log on through Remote Desktop Services и добавляем туда вновь созданную группу. иначе работать не будет.

    пс: спасибо за статью, в ней изложен четкий путь, но нужно немного подправить его реализацию.

  4. Alex:

    Здравствуйте.
    Спасибо за статью.
    Как будет выглядеть команда, для рассмотренного примера, когда создается в реестре ветка RDP-TCp-3390?
    К примеру, wmic /NameSpace:\\root\cimv2\TerminalServices PATH WIN32_TSPermissionsSetting.TerminalName=»RDP-TCP-3390″ call AddAccount «DOMAIN\GROUPUSERS»,2
    выдает ошибку «Недопустимый параметр для этого уровня.», т.к. параметр TerminalName=»RDP-TCP-3390″ ему не нравится.
    Спасибо

  5. Алексей:

    Вриветствую!
    Что-то пошло не так! На одном терминале создал подключение как по статье выше и всё появилось в оснаствке конфигурирования. Экспортировал уже готовую ветку эту для другого такого же терминала, импортировал куст, открыл порт. Можно даже под новым портом логиниться! Но вот в «Конфигурации сервера узла» не отображается новое подключение для назначения прав для внешних пользователей….Что делать, куда копать?

  6. Алексей:

    Появилось после логофа))

  7. Andrew:

    Щелкаем по корню и из контекстного меню выбираем пункт «Подключиться к серверу узла сеансов удаленных рабочих столов» Добрый день. Подскажите эта фича работает только в домене, что-то в рабочей группе не хочет подключаться, дает окно что пользователь должен быть администратором на обоих серверах?

  8. Иван Семин:

    Честно не проверял, я всегда только в домене ее использовал

  9. Михаил:

    Я имею домен 2012r2, терминальный и ещё один сервер на 2019 все равно говорят про Админа с двух сторон. Видимо нужно повышать уровень домена

  10. Андрей:

    как это можно реализовать на ферме с брокерами?

  11. Иван Семин:

    Тут нужно делать коллекциями

Добавить комментарий

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