Настройка ограничений (таймаутов) сеансов RDP/RDS в Windows

Когда пользователь закрывает окно сеанса RDP/RDS в терминальном клиенте (mstsc.exe, RDCMan или веб-клиент Remote Desktop HTML5), просто нажав крестик в правом верхнем углу без выхода из системы, его сессия переходит из активной в отключенный режим. В этом режиме все приложения, открытые документы и окна по-прежнему работают на компьютере с удаленным рабочим столом и потребляют системные ресурсы.

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

На следующем скриншоте видно, что отключенные сеансы пользователей на RDS-сервере под управлением Windows Server 2019 потребляют около 40 % оперативной памяти сервера.

отключенный сеанс пользователя на хосте rdsотключенный пользовательский сеанс на хосте rds

Кроме того, такие сеансы могут блокировать открытые файлы на файловых серверах, вызывать проблемы с некорректным сохранением данных в приложениях, папках перемещаемых профилей или на дисках пользовательского профиля. Отключенные сеансы RDP часто вызывают проблемы с блокировкой учетной записи пользователя домена после смены пароля (когда сеанс RDS продолжает работать под старым паролем пользователя).

Использование quserможно просмотреть, когда был начат пользовательский сеанс RDP, как долго он простаивал, а также текущее состояние сеанса.

Команда quser - список всех сеансов rds с указанием времени входа в систему, простоя и состоянияquser command - list all rds session with logon time, idle and state

Также можно вывести информацию о продолжительности сеансов пользователей в ферме RDS с помощью сценария PowerShell (укажите FQDN сервера RDS Connection Broker):

$connectionBrocker = “mun-rdscb.woshub.com"
Get-RDUserSession -ConnectionBroker $connectionBrocker |select-object -Property CollectionName, HostServer, DomainName, UserName, ServerIPAddress, CreateTime, DisconnectTime,  SessionState, IdleTime , SessionID , `
@{Name="SessionAge ([days.]hours:minutes)";Expression={ ((get-date ) - $_.CreateTime) } }

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

Автоматическое отключение отключенных и неактивных сеансов пользователей удаленного рабочего стола

Чтобы автоматически завершать отключенные сеансы RDP/RDS через определенный промежуток времени, необходимо правильно установить ограничения сеанса (таймауты).

Если у вас есть ферма служб удаленных рабочих столов, развернутая на Windows Server, вы можете настроить параметры таймаута сеанса пользователя в настройках коллекции RDS на сервере Сеанс вкладка.

Укажите период времени, по истечении которого вы хотите завершить отключенный сеанс удаленного рабочего стола, на вкладке Завершение отключенного сеанса (по умолчанию продолжительность сеанса RDP неограниченна) Никогда). Вы также можете установить максимальное время активной сессии пользователя (Ограничение активного сеанса) и завершить неработающий сеанс (Ограничение холостого сеанса). Эти жесткие таймауты применяются ко всем пользовательским сессиям в коллекции RDS.

Таймауты сервера RDS в свойствах коллекции сеансов на хосте сеанса RD Тайм-ауты сервера RDS в свойствах коллекции сеансов на хосте сеанса RD

В Windows Server 2022/2019/2016/2012R2 можно установить таймауты сеансов RDP с помощью групповых политик. Вы можете сделать это либо в редакторе GPO домена (gpmc.msc) или в редакторе локальной групповой политики (gpedit.msc) на определенном хосте RDS (или на настольной версии Windows, если вы разрешили несколько RDP-подключений к нему).

Настройки таймаутов сеансов RDP находятся в следующем разделе GPO Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Session Time Limits. Доступны следующие настройки тайм-аута удаленного рабочего стола:

  • Установка лимита времени для отключенного сеанса;
  • Установить ограничение времени для активных, но неработающих сеансов Remote Desktop Services — политика позволяет завершать неактивные сеансы RDP, в которых нет пользовательского ввода (например, перемещения мыши или ввода текста на клавиатуре);
  • Установка ограничения времени для активных сеансов служб удаленных рабочих столов — это максимальное время работы любого сеанса RDP (даже активного), по истечении которого он переходит в состояние отключения;
  • Завершить сеанс при достижении временных ограничений — устанавливает время, по истечении которого сеанс RDP будет завершен (выход из системы), а не отключен;
  • Устанавливает ограничение по времени для выхода из сеансов RemoteApp.

настройка ограничений времени сеансов RDP/RDS через GPO настройка временных ограничений сеансов RDP/RDS через GPO

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

"Установить ограничение времени для отключенного сеанса" - параметр групповой политики для ограничения времени сеанса rdp"Установить лимит времени для отключенного сеанса" - параметр групповой политики для ограничения времени сеанса rdp

Сохраните изменения и обновите параметры групповой политики на хосте RD (gpupdate /force). Новые параметры таймаута будут применяться только к новым сеансам RDP (текущие сеансы пользователей на RDSH придется завершать вручную).

Параметры GPO имеют приоритет над параметрами тайм-аута в коллекции RDS.

Те же параметры тайм-аута RDP можно найти в разделе GPO пользователя: Конфигурация пользователя -> Административные шаблоны -> Компоненты Windows. Используя политику из раздела пользователя, вы можете более гибко настраивать группы пользователей с различными ограничениями на продолжительность сеансов RDP.

Вы также можете установить ограничения на время сеанса RDP через реестр. Следующие DWORD-параметры из раздела HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services ключ реестра, соответствующий описанным выше параметрам групповой политики:

  • MaxDisconnectionTime
  • MaxIdleTime
  • MaxConnectionTime
  • MaxDisconnectionTime
  • RemoteAppLogoffTimeLimit

Например, чтобы установить максимальную продолжительность отключенного сеанса RDP в 15 минут (90000 мс), вы можете изменить параметр реестра с помощью следующей команды PowerShell:

Set-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" -Name MaxDisconnectionTime -Type 'DWord' -Value 900000

Вы также можете установить ограничения для сеанса RDP на странице Настройки вкладка в свойствах локального (lusrmgr.msc) или доменного пользователя (dsa.msc — Консоль Active Directory Users and Computers). Здесь доступны следующие параметры:

  • Завершить отключенный сеанс;
  • Предел активной сессии;
  • Предел холостого сеанса;
  • При достижении предела сеанса или разрыве соединения: «Отключиться от сеанса» или «Завершить сеанс»;
  • Разрешить повторное подключение: «От любого клиента» или «Только от отправляющего клиента».

таймауты сеансов rds в свойствах пользователя в active directoryтаймауты сеансов rds в свойствах пользователя в active directory

Не стоит делать таймауты сеансов RDP слишком короткими, иначе сеансы пользователей будут завершаться почти сразу после того, как они станут неактивными.

Если у вас развернут сервер RD Gateway Server для удаленного доступа к хостам RDS, вы можете настроить отдельные тайм-ауты для пользователей, подключенных через RDGW (откройте политику авторизации подключений и перейдите в раздел Тайм-ауты вкладка).

шлюз удаленного рабочего стола: настройки таймаута сеансашлюз удаленного рабочего стола: настройки таймаута сеанса

В Windows Server 2008 R2 также можно было установить тайм-аут сеанса RDP с помощью специального параметра tsconfig.msc (RD Session Host Configuration). Достаточно открыть консоль и правой кнопкой мыши щелкнуть RDP-Tcp -> Properties. Ограничения таймаута сеанса находятся на странице Сессии вкладка. Однако в новых версиях Windows Server такой консоли нет (хотя вы можете вручную скопировать файлы tsadmin.msc и tsconfig.msc и использовать эти консоли и в новых версиях Windows Server).

ограничения сеанса tsconfig.msc на windows server 2008 r2tsconfig.msc ограничения сеансов на windows server 2008 r2

Сеанс удаленного рабочего стола простаивает более установленного лимита времени

После настройки тайм-аутов RDS пользователи будут видеть следующее предупреждение перед отключением неработающего сеанса:

Idle timer expired
Session has been idle over its time limit.
It will be disconnected in 2 minutes.
Press any key to continue the session.

сообщение об истечении таймера простоя сессии rdpсообщение об истечении таймера простоя сеанса rdp

Перед отключением пользователя в System Event Viewer регистрируется событие с идентификатором 26.

Подробнее о журналах соединений RDP.

идентификатор события 26: достигнут лимит времени сеансаидентификатор события 26: достигнут лимит времени сеанса

Вы можете отключить это предупреждение, установив параметр EnableTimeoutWarning = 0 в классе WMI Win32_TSSessionSettings.

Set-WmiInstance -Path "\\localhost\root\CIMV2\TerminalServices:Win32_TSSessionSetting.TerminalName="RDP-Tcp"" -Argument @{EnableTimeoutWarning=0}

Теперь, когда Windows автоматически завершает неработающие сеансы RDP, пользователь получит следующее сообщение от клиента RDP:

Your Remote Desktop Services session ended because the remote computer didn’t receive any input from you.

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

В некоторых случаях вы можете столкнуться с этой ошибкой в клиенте RDP:

Your Remote Desktop Services session has ended. Another user connected to the remote computer, so your connection was lost. Try connecting again, or contact your network administrator.

Сеанс RDP завершен - к удаленному компьютеру подключился другой пользовательСеанс RDP завершен - к удаленному компьютеру подключился другой пользователь

Это означает, что кто-то другой подключился к компьютеру по RDP, когда количество одновременных сеансов RDP на компьютере ограничено параметром Параметр Ограничить количество подключений (например, в настольных версиях Windows доступен только один удаленный сеанс). Или вы вошли в RDP-хост с нового компьютера.

Вы можете разрешить несколько подключений под одной учетной записью пользователя к хосту RDP с помощью параметра GPO Ограничение пользователей служб удаленных рабочих столов одним сеансом служб удаленных рабочих столов = Disabled (в разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Connections).

gpo: ограничить пользователя RDS одним сеансомgpo: ограничить пользователя RDS одной сессией

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

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