Несколько независимых RDP портов на одном терминальном сервере
- Принцип изолированного терминального сервера
- Первый сценарий. Уникальное пространство для подрядчиков
- Второй сценарий для проброса портов
- Как добавить новый порт прослушивания RDP на сервере терминалов
- Как ограничить порты подключения на терминальном сервере
- Открытие порта для второго RDP подключения
- Создание RDP файла подключения
Добрый день! Уважаемые читатели и гости одного из крупнейших 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.
Далее вам необходимо перейти в раздел реестра:
Перед вами будет ветка реестра. которая отвечает за подключение к удаленному рабочему столу по стандартному порту 3389. Тут вы увидите большое количество ключей, которые нам помогут ограничить нужную группу людей, но об этом чуть ниже.
Чтобы добавить новый порт прослушивания RDP на сервере терминалов, вам необходимо скопировать текущую ветку реестра и затем ее видоизменить. Для этого мы произведем ее экспорт, через контекстное меню, выбрав соответствующий пункт меню.
Далее вам необходимо указать место сохранения вашей экспортируемой ветки реестра. В моем примере это будет рабочий стол и я задам имя 3390, по номеру будущего порта.
В результате у вас будет файл в формате .reg, который вы можете легко отредактировать любым текстовым редактором, мне будет достаточно встроенного блокнота в Windows Server 2019. Щелкаем по нему правым кликом и выбираем пункт изменить.
Находим третью строку с адресом ветки и меняем у нее на конце имя, в моем примере это будет RDP-Tcp-3390.
Обязательно сохраните настройки. Далее вам необходимо импортировать это reg файл на нужном терминальном сервере. Обратите внимание, что будет предупреждение, что вы должны понимать, что делаете. Если не хотите его видеть в своем сценарии, то можете сконвертировать reg файл в exe.
В результате будет создана новая ветка реестр.
Переходим в вашу новую ветку в редакторе. Пока она так же работает по порту 3389 и нам нужно его поменять, за это отвечает ключ PortNumber. Открываем его, переключаем в десятичное отображение и меняем номер порта на 3390
Если хотите использовать шеснадцатиричное представление ,то вам может помочь встроенный калькулятор в Windows, в режиме программиста. Тут число 3390 будет представлено в виде "D3E".
Далее я хочу запретить для данного подключения по RDP буфер обмена, для этого есть ключ реестра fDisableClip. Если вы установите в fDisableClip значение "0", то буфер обмена между хостовой системой и удаленной будет работать, если вы выставите "1", то вы запретите использование общего буфера обмена.
Далее я хочу запретить перенаправление USB-устройств, локальных дисков на терминальный стол. Для этого есть ключ реестра fDisableCdm. По умолчанию у ключа fDisableCdm выставлено значение "0", что подразумевает возможность сопоставления клиентских дисков и их подключение в автоматическом режиме. Если вы выставите у fDisableCdm значение "1". то вы запретите перенаправление (проброс) USB и локальных дисков на терминальный стол.
Следующим шагом я сделал запрет изменения настроек прокси-сервера, если у вас интернет дается всем по умолчанию и нет обязательной аутентификации, например ISA или Kerio Control, то вы можете тут задать какие-то неработающие адреса, они будут блокировать интернет и пользователь не сможет их поменять, делая такой терминальный стол более изолированным.
Как ограничить порты подключения на терминальном сервере
По умолчанию, на оба RDP порта 3389 и 3390 (Созданный ранее) пользователи группы администраторы и пользователи удаленного рабочего стола имею права для подключения, это не совсем правильно. Что я хочу сделать:
- Члены группы администраторы должны иметь возможность подключаться к любому порту RDP
- Члены группы удаленного рабочего стола должны иметь возможность подключаться только к стандартному порту 3389
- А вот группа изолированные пользователи должны иметь возможность подключаться исключительно ко второму RDP порту 3390 (Изолированное окружение в рамках общего терминального сервера)
Вы открываете оснастку "Active Directory Пользователи и компьютеры" и создаете отдельные группы, я создам группу term-svt2019s01-rdp-3390 для изолированного подключения.
В группу 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)". Щелкаем по корню и из контекстного меню выбираем пункт "Подключиться к серверу узла сеансов удаленных рабочих столов"
Выбираем сервер на котором вы настроили два разных RDP порта.
Щелкаем по изолированному подключению правым кликом и открываем его свойства.
Перейдите на вкладку "Безопасность". Обратите внимание, что тут по умолчанию у группы "Пользователи удаленного рабочего стола" выставлены права на:
- Доступ пользователя
- Доступ гостя
Вы так же можете более подробно посмотреть, что именно требуется для подключения по удаленному рабочему столу.
Удаляем из списка доступа (DACL) группу "Пользователи удаленного рабочего стола" и нажимаем кнопку "Добавить". В открывшемся окне найдите вашу группу доступа
Можем более тонко выставить разрешения. Сохраняем все.
Открытие порта для второго RDP подключения
Наш изолированный терминальный стол почти готов, вам нужно не забыть открыть порты на брандмауэре Windows или другом фаэрволе, который вы используете. Я это буду делать через утилиту netsh. Я вам уже приводил пример такого правила в статье, где я удаленно включал RDP подключение. Откройте командную строку от имени администратора и запустите вот такую команду:
Создание RDP файла подключения
Запустите клиента "Подключения к удаленному рабочему столу". Укажите адрес подключения, порт подключения, имя пользователя и нажмите кнопку "Сохранить как"
Выбираем место сохранения RDP файла с подключением к изолированному терминальному серверу.
Чем хорошо файлы формата rdp можно легко редактировать и открывать с помощью любого текстового редактора.
В итоге вы можете производить нужные вам настройки в рамках данного клиента. После чего сохраните файл и передайте его сотруднику для подключения.
На этом у меня все. Мы с вами разобрали как создать несколько независимых RDP портов на одном терминальном сервере. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org,
вкладка «безопасность» для 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()
спасибо
кроме того, необходимо разрешить подключения вновь созданной группы к серверу терминалов.
в редакторе локальной политики (gpedit.msc)
ветка Computer Configuration -> Windows settings -> Security Settings -> Local policies -> User Rights Assignment
находим правило Allow log on through Remote Desktop Services и добавляем туда вновь созданную группу. иначе работать не будет.
пс: спасибо за статью, в ней изложен четкий путь, но нужно немного подправить его реализацию.
Здравствуйте.
Спасибо за статью.
Как будет выглядеть команда, для рассмотренного примера, когда создается в реестре ветка RDP-TCp-3390?
К примеру, wmic /NameSpace:\\root\cimv2\TerminalServices PATH WIN32_TSPermissionsSetting.TerminalName=»RDP-TCP-3390″ call AddAccount «DOMAIN\GROUPUSERS»,2
выдает ошибку «Недопустимый параметр для этого уровня.», т.к. параметр TerminalName=»RDP-TCP-3390″ ему не нравится.
Спасибо
Вриветствую!
Что-то пошло не так! На одном терминале создал подключение как по статье выше и всё появилось в оснаствке конфигурирования. Экспортировал уже готовую ветку эту для другого такого же терминала, импортировал куст, открыл порт. Можно даже под новым портом логиниться! Но вот в «Конфигурации сервера узла» не отображается новое подключение для назначения прав для внешних пользователей….Что делать, куда копать?
Появилось после логофа))
Щелкаем по корню и из контекстного меню выбираем пункт «Подключиться к серверу узла сеансов удаленных рабочих столов» Добрый день. Подскажите эта фича работает только в домене, что-то в рабочей группе не хочет подключаться, дает окно что пользователь должен быть администратором на обоих серверах?
Честно не проверял, я всегда только в домене ее использовал
Я имею домен 2012r2, терминальный и ещё один сервер на 2019 все равно говорят про Админа с двух сторон. Видимо нужно повышать уровень домена
как это можно реализовать на ферме с брокерами?
Тут нужно делать коллекциями