Убираем ограничение на количество rdp сессий в windows server 2012 r2

Обновлено: 04.07.2024

Микрософт с большим отставанием от разработчиков реализовал на терминальном сервере публикацию отдельных приложений. Технологию назвали RemoteApp. Пока речь идет о доступе к опубликованным приложениям через web-интерфейс, все выглядит красиво, но пользователям не удобно заходить в браузер (а браузер – это значит медленно), да и сам подход непривычен, а непривычное, как правило, воспринимается большинством пользователей негативно. Микрософт решил этот вопрос раздачей юзерам на рабочий стол готовых значков, настроенных на запуск конкретного приложения. Но тут все начинают понимать, что web-интерфейс – это оболочка, а под ней все тот же старый добрый DOS , пардон, RDP. И сразу хочется понять, а что там с правами доступа. Жмем Win+R, mstsc, Enter. Оп-па-на! Мы сделали для конкретного пользователя возможность запускать только одну единственную программу, а он спокойно погуливает по серверу, как у себя дома…

Права доступа на терминальный сервер и к RemoteApp

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

Назначение прав предусмотрено через права к коллекции. При этом автоматически тот же набор прав передается в привычную группу безопасности терминального сервера Пользователи удаленного рабочего стола. Если впоследствии изменить набор прав в этой группе, то действовать будут именно они, а не те, что были заданы в правах на коллекцию. И права на коллекцию будут просто игнорироваться, пока не будут заданы именно для коллекции, т.е. через интерфейс управления коллекцией (при этом обновится список доступа в группе Пользователи удаленного рабочего стола).

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

Для кого-то это не имеет никакого значения, но это в любом случае ненормально, а в большинстве организаций – неприемлемо.

Штатного решения найти не удалось, но есть обходные пути.

А. Можно в AD в свойствах учетной записи на вкладке «Среда» задать запуск нужной программы при входе. Но тогда пользователь сможет работать только с одной программой на ТС.

Б. Можно там же на вкладке «Среда» задать запуск logoff.exe , а программы раздавать через настроенные значки. Тогда при входе через mstsc сеанс такого пользователя будет сразу же автоматически завершаться.

Надо понимать, что настройка из пунктов (А) и (Б) будет касаться входа на любой терминальный сервер, а их в общем случае может быть несколько, на каждом свои программы, где-то просто нужен доступ к рабочему столу сервера.

Чувствуется, что это надо разруливать через GPO, но параметры пользователя применяются только к пользователям, а не к серверам, а нам надо, чтобы параметры, заданные для пользователя (например, напуск при входе logoff.exe) применялись к конкретным пользователям на конкретных серверах. Тут на помощь приходит волшебный параметр Computer Configuration ⇒ Policies ⇒ Administrative Templates ⇒ System ⇒ Group Policy ⇒ User Group Policy loopback processing mode.

Последовательность действий

1. Создаем в AD группу безопасности, назовем её «TS1_Restrict_Obj».

2. Добавляем в группу «TS1_Restrict_Obj» пользователей, для которых нужно сделать ограничения. (Возможно, для конкретных задач потребуются более мягкие ограничения, а не logoff.exe. Или наоборот, нужно сделать что-то хорошее, скажем, отключить на терминальном сервере пароль на хранитель экрана, чтобы юзерам не приходилось вводить пароль дважды: на своей рабочей станции и на терминале.)

3. Добавляем в группу «TS1_Restrict_Obj» терминальный сервер, на котором нужно применить наши ограничения для заданных пользователей. Если нужно применить эти правила для разных серверов и одних и тех же пользователей, то добавляем сюда же и все эти терминальные серверы.

4. В групповых политиках создаем новый GPO (например, «TS1_Restrict») и связываем его с контейнером, в котором находится наш терминальный сервер(ы). Можно сделать отдельный контейнер (OU), в который вынести этот сервер(ы).

5. В SecurityFilteringдля вновь созданного GPO«TS1_Restrict» Удаляем записи, которые там создаются по умолчанию и добавляем нашу группу «TS1_Restrict_Obj».

6. Открываем на редактирование GPO «TS1_Restrict»

Computer Configuration ⇒ Policies ⇒ Administrative Templates ⇒ System ⇒ Group Policy ⇒ User Group Policy loopback processing mode = Merge (или Replace)

User Configuration ⇒ Policies ⇒ Administrative Templates ⇒ Windows Components ⇒ Remote Desktop Services ⇒ Remote Desktop Session Host ⇒ Remote Session Environment ⇒ Program path and file name = logoff.exe
Или делаем здесь другие ограничения, в зависимости от решаемой задачи.

7. Вы, наверное, будете смеяться, но для применения этой конструкции необходимо перезагрузить сервер, к которому применяется политика. Причем, отключение политики выполняется сразу, достаточно удалить сервер из группы безопасности «TS1_Restrict_Obj», а для подключения – требуется перезагрузка.

Теперь при попытке пользователей, входящих в группу «TS1_Restrict_Obj», войти на данный терминальный сервер сразу же после входа будет происходить завершение сеанса. При этом опубликованные для этих пользователей приложения RemoteApp будут работать как через web-интерфейс, так и через файлы .RDP.

Не обязательно включать параметры пользователей и параметр User Group Policy loopback processing mode в один и тот же GPO. Просто если «замыкание» (loopback) включено для какого-то сервера, то политики пользователя будут применяться к этому серверу.

Как настроить несколько сессий rdp с одним логином в Windows Server 2012R2

Всем привет сегодня хочу рассказать о небольшой фишке как можно настроить несколько сессий rdp с одним логином в Windows Server 2012R2. Если честно я не понимаю, для чего это может быть нужно, так как с точки зрения безопасности это не совсем правильно, но если уж есть давайте расскажу. Данная возможно оказывается еще была аж с Windows Server 2003, давненько это было, но там все делалось простановкой одной галки, в Windows Server 2012R2 на пару действий побольше.

Подключение по rdp

Думаю не нужно объяснять, что очень часто на серверной платформе Windows делают сервер терминалов, для совместной работы многих пользователей за ним, и люди подключаются к нему за счет протокола RDP по порту 3389. В Windows 2012R2 за настройку несколько сессий rdp с одним логином отвечает групповая политика. Нажимаем Win+R и вводим gpedit.msc либо на контроллере домена в редакторе групповых политик, но потом не забудьте ее прилинковать к нужному контейнеру.

несколько сессий rdp с одним логином в Windows Server 2012R2

Вам нужно отключить политику

Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Подключения -> Ограничить пользователей служб удаленных рабочих столов одним сеансом служб удаленных рабочих столов

Для англоязычной версии

Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections -> Restrict Remote Desktop Services users to a single remote session

Как настроить несколько сессий rdp с одним логином в Windows Server 2012R2-01

ну и собственно мы видим политику Ограничить пользователей служб удаленных рабочих столов одним сеансом служб удаленных рабочих столов, поставив в ней статус отключено вы позволите несколько сессий rdp с одним логином на вашем терминальном сервере.

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

Как настроить несколько сессий rdp с одним логином в Windows Server 2012R2-02

Все закрываем редактор и радуемся жизни.

У настольных операционных систем Microsoft есть некоторые ограничения, связанные с работой службы удаленных рабочих столов. Так во первых, поддержка серверной части (RDP Host) есть только в старших редакциях Windows (не ниже Professional). В домашних редакциях этот функционал отключен, поэтому подключиться к младшим версиям Windows по RDP невозможно.

Судя по официальному сайту, проект активно живет и развивается. На данный момент выложена версия 1.5 от 2014.12.11, для которой заявлена поддержка новейших ОС, включая Windows 10 Technical Preview. Также доступны исходники, так что при желании можно самостоятельно собрать проект.

Загрузить RDP Wrapper можно со страницы программы в репозитории GitHub. В архив входят следующие компоненты:

rdp wrapper файлы

Для установки программы надо открыть командную строку с правами администратора, перейти в директорию с распакованными файлами и запустить install.bat. Все остальное, включая настройку исключений на файерволле, установщик сделает сам.

установка rdp wrapper

Дополнительно можно запустить утилиту RDPConf.exe, которая позволяет включать\отключать доступ, а также настраивать основные параметры подключения (порт, количество сессий на пользователя, тип аутентификации и пр.).

настройка rdp wrapper

Ну и в качестве проверки я открыл на компьютер с установленной Windows 7 Home Basic две RDP-сессии для двух разных пользователей.

пример работы rdp wrapper

Удаленные пользователи могут подключаться к своему компьютеру с Windows 10 через Службы удаленных рабочих столов (RDP), работающий в версиях Pro и Enterprise (но не Home / Single Language). Однако число одновременных сеансов RDP ограничено: одновременно может работать только один удаленный пользователь. Если вы попытаетесь открыть второй сеанс RDP, появится предупреждение, предлагающее вам выйти из первого сеанса пользователя.


Давайте посмотрим на основные ограничения использования службы удаленного рабочего стола в Windows 10 (и всех более ранних версиях Windows):

  • Функция доступа RDP поддерживается только в более поздних выпусках Windows (Professional и Enterprise). В домашних выпусках Windows 10 входящие соединения с удаленного рабочего стола вообще не разрешены (эту проблему можно решить только с помощью библиотеки обертывания RDP).
  • Поддерживается только одно одновременное соединение RDP. Если вы попытаетесь открыть второй сеанс RDP, пользователю будет предложено закрыть существующее соединение.
  • Если пользователь работает на (локальной) консоли компьютера, сеанс консоли будет прерван при попытке создать новое удаленное RDP-соединение. Удаленный сеанс RDP также будет принудительно завершен, если пользователь попытается подключиться локально.

Другой пользователь вошел в систему. Если вы продолжите, они будут отключены. Хотите подписаться каким-либо образом?

Разрешить несколько сеансов RDP

  1. Подключитесь к серверу, на котором установлены службы удаленного рабочего стола.
  2. Откройте главный экран (нажмите клавишу Windows), введите и откройте gpedit.msc.
  3. Перейдите в Конфигурация компьютера> Административные шаблоны> Компоненты Windows> Службы удаленных рабочих столов> Узел сеансов удаленных рабочих столов> Подключения.
  4. Задайте для параметра «Ограничить пользователей служб удаленных рабочих столов» для одного сеанса службы удаленных рабочих столов значение «Отключено».
  5. Дважды щелкните «Ограничить количество подключений» и установите максимально допустимое количество подключений к удаленному рабочему столу 999999.

Ноябрьское обновление 2021:

Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows - нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:

скачать

Используйте Диспетчер серверов, чтобы установить режим лицензии для удаленного рабочего стола для развертывания Windows Server 2012 RDS.

Управление службами удаленных рабочих столов полностью интегрировано с Диспетчером серверов для Windows Server 2012, но настройка режима лицензирования RDS на первый взгляд неочевидна.

  1. Откройте диспетчер серверов.
  2. Перейдите на панель навигации служб удаленных рабочих столов.
  3. Выберите ветку Обзор.
  4. В области «Обзор развертывания» выберите «Изменить свойства развертывания» в меню «Задачи».
  5. В открывшемся диалоговом окне выберите страницу Лицензия RD.
  6. Укажите режим и сервер лицензий и нажмите «ОК».

Заключение

CCNA, веб-разработчик, ПК для устранения неполадок

Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.

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

Рекомендуется задавать лимит на сеансы, по достижении которого принудительно завершать терминальные сессии и выполнять выход пользователя из системы.

Настройка на терминальном сервере

Сессии можно настроить для конкретного сервера в настройках сервера терминалов. Процесс немного отличается в зависимости от версии операционной системы Windows.

Windows 2012 и выше

В диспетчере серверов переходим в службы удаленных рабочих столов:

Переходим в Службы удаленных рабочих столов в управлении серверами

Переходим в коллекцию, для которой хотим поменять настройки сеанса:

Переход к настройке коллекции сервера терминалов

В свойствах коллекции кликаем по Задачи - Изменить свойства:

Переходим к настройке коллекции

Переходим в раздел Сеанс и выставляем ограничения:

Настраиваем лимит терминальных сессий

* где Окончание разъединенного сеанса — время, через которое для пользователей с завершенными сеансами произойдет выход из системы; Ограничение бездействующего сеанса — время, через которое сеанс перейдет в разъединенный, если пользователь в нем не работает (не проявляет никакой активности).

Windows 2008 R2 и ниже

Нажимаем Пуск - Администрирование - Службы удаленных рабочих столов - Конфигурация узла сеансов удаленных рабочих столов:

Пуск - Администрирование

Службы удаленных рабочих столов - Конфигурация узла сеансов удаленных рабочих столов

В разделе «Подключения» дважды кликаем по RDP-Tcp:

Кликаем дважды по RDP-Tcp

На вкладке «Сеансы» ставим галочку Переопределить параметры пользователя и выставляем необходимые лимиты:

Настраиваем сеансы для терминальных сессий

* где Завершение отключенного сеанса — время, по достижении которого отключенный сеанс будет завершен, а для пользователя будет выполнен выход; Ограничение бездействующего сеанса — ограничение на сеанс, в котором пользователь не работает.

Настройка через GPO

Если терминальных серверов много или необходимо централизованно задать политику ограничения сессий, можно воспользоваться групповыми политиками Active Directory.

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

В зависимости от необходимости применять политику к пользователям и/или компьютерам, используем следующие ветки для настройки:

  • Конфигурация компьютера\Политики\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Ограничение сеансов по времени
    (Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits)
  • Конфигурация пользователя\Политики\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Ограничение сеансов по времени
    (User Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits)

* если для пользователей и компьютеров используются отдельные организационные юниты, необходимо создавать политику в соответствующей ветке.

Для настройки выставляем следующие значения:

Параметр Описание Значения
Завершать сеанс при достижении ограничения по времени (End session when time limits are reached) Задает глобальную настройку, которая разрешает или запрещает лимиты, в принципе. Включено — включает режим ограничения сессий (для нашей цели выбираем это значение).
Отключено — выключает и запрещает лимиты.
Не задано — выключает для политик, но разрешает локальные настройки на сервере.
Задать ограничение по времени для активных, но бездействующих сеансов служб удаленных рабочих столов (Set time limit for active but idle Terminal Services sessions) Если пользователь завершил работу с сервером, но не завершил сеанс, можно установить ограничение сессии этим параметром. Таким образом, пользователи, которые не завершают сеанс будут автоматически выкинуты из сессии. Включено — активируем лимит для бездействующих сеансов (выставляем ее). И в выпадающем списке указываем время бездействия, например 3 часа.
Отключено — отключает лимит на бездействующие сессии.
Не задано — настройка задается локально на сервере.
Задать ограничение по времени для отключенных сеансов (Set time limit for disconnected sessions) Если пользователь отключил сеанс, но не вышел из системы, можно автоматически его разлогинить с помощью этой опции. Включено — активируем лимит для завершенных сеансов (выставляем ее). И в выпадающем списке указываем время, например 3 часа.
Отключено — отключает лимит на завершенные сессии.
Не задано — настройка задается локально на сервере.
Задать ограничение по времени для активных сеансов служб удаленных рабочих столов (Set time limit for active Remote Desktop Services sessions) Независимо от того, работает пользователь в системе или нет, сервер завершит его сеанс, отправив уведомление за 2 минуты до отключения. Включено — активируем лимит для активных сеансов. В выпадающем списке необходимо указать время. Данную опцию лучше не применять. С практической точки зрения опция создаст много неудобств.
Отключено — отключает лимит на завершенные активные сессии.
Не задано — настройка задается локально на сервере.

Для применения настроек ждем или выполняем команду на сервере:

Проверяем, применились ли политики:

Использование фильтров

Если нам необходимо применить ограничения через политики только для определенных серверов/пользователей, применяем фильтры безопасности.

Для этого создаем группу в Active Directory и добавляем туда нужные серверы (или пользователей).

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

а) команда для проверки компьютера:

gpresult /r /scope:computer

б) для пользователя:

gpresult /r /scope:user

Если в созданной группе компьютера/пользователя нет, то:

а) для пользователя выходим из сеанса сервера и подключаемся по новой.

б) на сервере выполняем команды:

klist -lh 0 -li 0x3e7 purge

Если в нашей среде Active Directory несколько сайтов, то наши настройки могут появиться на нужном контроллере через несколько минут (как правило, до 15). Если нет возможности ждать, можно форсировать процесс репликации с помощью инструмента «Active Directory — сайты и службы».

Далее при создании групповой политики удаляем группу «Прошедние проверку», которая присутствует по умолчанию:

Удаляем группу Прошедние проверку в GPO при его создании

И добавляем созданную ранее, например:

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

После настраиваем политику по инструкции выше.

Чтобы проверить, что настройка применилась только у нужным нам объектам, на сервере выполняем команду:

Читайте также: