Публикация приложений на Win2003 Terminal Server
Посетителей: 12447 | Просмотров: 19849 (сегодня 1)
Итак . перед вами стоит задача: пользователю, подключающемуся к терминалу, «не нужен» рабочий стол,но необходимо работать с несколькими приложениями.На Citrixe это решается просто. публикуете приложения и все счастливы. но все эти прелести можно получить и стандартными средствами Windows.
Для начала «поднастроим» наш сервер.
Лезем в start->Administrative Tools->Terminal Services Configuration.
Для уменьшения трафика на вкладке «Client Settings» отрубаем аудио и ком порт маппинг,а также ставим глубину цвета 8 бит.
Далее переходим на вкладку «Sessions»и настраиваем интервал для «отключенных» сессий, таким образом, чтобы они не «висели» до бесконечности и не расходовали ресурсы системы.Оптимальным вариантом (для моего сервера) стоит значение, при котором «пустая» сессия отрубается через 15 минут,красиво завершаясь логофом ).Выглядит всё это добро
По моим наблюдениям у терминальных служб есть один глюк — если в профиле пользователя снять галку «connect client drives at logon», а в утилите «remote desktop connection» на вкладке «local resources» поставить галку «disk drives» , диски замечательно подмапяться при коннекте.
Если вы являетесь «счастливым» обладателем домена , то «Сервер лицензирования» может стоять на одной машине и все терминальные сервера будут получать лицензии у него.Рекомендуется держать два «Сервера лицензирования»,для надежности.О том,что ваш сервер в курсе на счет,того, какой сервер является «Сервером лицензирования» можно убедится заглянув в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Parameters и увидеть там записи DomainLicenseServerMulti и EnterpriseServerMulti. там должны быть записи о «Сервере лицензирования». В связи с этим на новоиспеченном терминальном сервере смело удаляем «службу доступа к файлам и принтерам» от греха подальше.
По умолчанию терминальный сервер слушает на 3389 порту. это не очень красиво, следовательно порт надо поменять.к примеру на 5674. Делается это через реестр . HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber . при подключении к терминалке запись будет такой Servername:5674. Пакет TSWeb для терминалки рассматриваться не будет. он не понимает : (двоеточия) . соответственно он нам не интересен.
Для того,чтобы «шаловливые» пользователи не баловались интернетом, на роутере закрываем ipшнику нашей терминалки 80 порт на ружу 🙂 (для надежности 53,21,23,25,110,993 тоже не помешают)
Если вам предстоит периодически добавлять в арсенал терминалок новые сервера советую воспользоваться утилитой Microsoft, которая называется «Microsoft Printer Migration». С помощью неё вы можете один раз сделать cab файл в котором уже установлены все драйвера для необходимых принтеров.
В догонку к принтерам. если у ваших клиентов стоят принтеры HP , подключенные по usb. то для нормальной работы (отображения этих принтеров на терминалке) необходимо на машине к которой принтер подключен , в свойствах оборудования добиться того,чтобы присутствовал драйвер «usb printing support» или «поддержка usb принтеров». нужно вручную переустановить драйвер «dot4usb printing» на «usb printing support» — это стандартный системный драйвер.
Теперь можно переходить к «самому вкусному». а именно способам публикации приложений.
Есть несколько способов . точнее видов «окошек», которые будут «всплывать» при логоне .
1Й способ. нажать определенную цифру , для запуска приложения.
Для того,чтобы все это добро работало , в профиле пользователя , на закладке «Environment» пишем cscript c:\temp\script1.vbs
Исходник
Option Explicit
Dim strComputer
Dim WshShell
Do
strComputer = inputbox( «Введите цифру для запуска программы 1 для запуска ttt Proga 2 для запуска Prg1 3 для запуска 1C», «Input» )
Loop until strComputer <> «»
set wshshell = CreateObject(«WScript.Shell»)
if strComputer = 1 Then
wshshell.Run «\\server\ttt\x.exe» & chr(36) & «parametry»
end if
if strComputer = 2 Then
wshshell.Run «notepad.exe»
End if
if strComputer = 3 Then
wshshell.Run «calc.exe»
End if
Поэкспериментируйте с табуляцией в строке strComputer = inputbox
Скачать скрипт
2Й способ. HTML окошко с кнопками
Прописываем в профиле следущее cscript c:\temp\script2.vbs
Данный скрипт будет работать только в IE. другие браузеры могут отображать некоректно
Заметьте. расширение файла HTA. это сделанно с целью скрытия менюшек экплорера
Заметки о системном администрировании
среда, 10 февраля 2010 г.
TS RemoteApp
Введение
Достаточно часто работа пользователя на терминальном сервере ограничивается запуском одного или нескольких приложений и не требует полноэкранной сессии. Технология Terminal Services RemoteApp (удаленные приложения) упрощает работу по такому сценарию. Удаленные приложения могут распространяться с помощью msi-пакетов и интегрироваться с локальной операционной системой. В частности, ярлыки этих приложений будут находиться в меню «Пуск» или на рабочем столе локального компьютера, а также использоваться при открытии ассоциированных с ними типов файлов.
Системные требования
Для использования технологии RemoteApp, клиент удаленного рабочего стола должен быть версии 6.0 или выше. В данный момент доступен клиент версии 7.0 для операционных систем: Windows XP, Windows Vista, Windows 2003/2008 Server. Установить его можно при помощи системы обновлений. В Windows 7 и Windows 2008 R2 он используется по умолчанию.
Принцип работы
В связи с необходимостью более полной интеграции с локальной системой, принцип работы удаленных приложений отличается от работы в полноэкранной сессии. Рассмотрим это более подробно (рис. 1). Информация позаимствована из Windows Server 2008 Terminal Services Resource Kit.
Рис. 1. Схема запуска удаленного приложения
- Пользователь запускает клиент удаленного рабочего стола mstsc.exe и соединяется с сервером.
- Создается терминальная сессия. Открывается процесс Userinit.exe. Он стартует Rdpinit.exe, управляющий Rdpshell.exe. Rdpshell.exe — это оболочка, используемая при работе в удаленных приложениях вместо Windows Explorer (explorer.exe).
- Между клиентской и серверной составляющей устанавливается виртуальный канал. Он используется для передачи данных между сервером и клиентом.
- Rdpinit.exe проверяет список разрешенных для запуска приложений. Если приложение разрешено, терминальный сервер запускает его.
- Создается окно приложения.
- Rdpshell.exe взаимодействует с окном приложения и передает данные терминальному клиенту.
- Терминальный клиент создает окно, которое полностью идентично невидимому окну приложения на терминальном сервере. С этого момента пользователь может работать с приложением в обычном режиме.
За корректное отображение удаленных приложений отвечают следующие серверные компоненты:
Rdpinit.exe — это аналог Userinit.exe. С его помощью запускаются логон-скрипты и создается оболочка пользователя. Rdpinit.exe отвечает за запуск Rdpshell.exe и обновление значков в панели уведомлений на стороне клиента через Rdpdd.dll. Кроме того, Rdpinit.exe управляет процессом завершения сеанса.
Rdpshell.exe на сервере отслеживает изменения, происходящие в окне приложения (например, открытие или закрытие) и передает их клиенту. Также, Rdpshell.exe обнаруживает соединение\отключение\переподключение терминальной сессии и соответственно закрывает или открывает окно приложения на стороне клиента.
Rdpdd.dll получает от Rdpinit.exe и Rdpshell.exe значки из панели уведомлений и обновляет их отображение на клиенте. Кроме того, Rdpdd.dll отслеживает изменения на стороне клиента и передает их приложению, запущенному на сервере.
Со стороны клиента, ключевой технологией при работе с удаленными приложениями является RemoteApps Integrated Locally (RAIL). Это расширение RDP-протокола, позволяющее более полную интеграцию с рабочим столом пользователя.
RAIL-клиент запускается на локальном компьютере пользователя и создает окно или значок оповещения для соответствующих им элементов приложения выполняемого на RAIL-сервере. Созданные окна\оповещения точно повторяют поведение окон\оповещений на терминальном сервере. Когда пользователь вводит какие-либо данные в Rail-окна\оповещения это захватывается RAIL-клиентом и передается на сервер. Аналогично данные передаются и в обратную сторону: все изменения отображения захватываются сервером и перенаправляются клиенту.
Более подробно взаимодействие между отдельными компонентами терминальных служб рассмотрено в статье WS2008: Terminal Services RemoteApps.
Установка и настройка
Пошаговую инструкцию по установке и настройке RemoteApp можно найти на сайте Microsoft Technet.
Здесь же остановимся на некоторых ключевых деталях настройки удаленных приложений.
При настройке удаленных приложений в консоли TS RemoteApp Manager можно выбрать разрешен или запрещен запуск неопубликованных приложений (рис. 2).
Рис. 2. Параметры настройки развертывания удаленных приложений
Рассмотрим действие этой настройки на следующем примере.
На терминальном сервере опубликован исключительно Microsoft Word и пользователь при работе в нем открывает гиперссылку, содержащуюся в документе. В зависимости от указанной настройки, он сможет или нет запустить Internet Explorer в той же терминальной сессии.
При принятии решения следует учитывать тот факт, что в случае разрешения, пользователь может самостоятельно создать и использовать rdp-файл в котором будет указано любое приложение на терминальном сервере. В связи с этим, рекомендуется запретить запуск неопубликованных программ.
В целях безопасности, рекомендуется подписывать rdp-файлы удаленных приложений с помощью сертификатов. Это позволит клиентам при подключении проверить терминальный сервер и защититься от потенциальных атак. Дополнительным преимуществом является отсутствие предупреждения безопасности при подключении с помощью подписанного rdp-файла.
При запуске удаленного приложения, вместо значка самого приложения отображается значок клиента удаленного рабочего стола. Для предоставления пользователю более полной информации о запускаемых приложений можно воспользоваться статьей How to make RemoteApp show the application icon when starting.
При установке службы удаленных приложений на странице «Метод проверки подлинности» следует указать, каким образом будет проверяться клиент перед подключением. Если все клиенты используют операционные системы, поддерживающие протокол CredSSP (например, Windows 7 или Windows Vista), рекомендуется установить требование проверки на уровне сети. В противном случае рекомендуется выбрать параметр «Не требовать проверку подлинности на уровне сети«.
Удаленные приложения можно совмещать с балансировкой нагрузки при помощи посредника служб терминалов. Для этого на каждом из терминальных серверов должен быть установлен одинаковый набор программного обеспечения, публикуемого в качестве удаленных приложений.
Удаленные приложения можно совмещать с технологией прозрачной авторизации Single Sign-On. В этом случае пользователю не нужно будет вводить пароль при первом запуске приложения.
Для простоты распространения удаленных приложений можно использовать TS WebAccess. Это позволяет публиковать подготовленные rdp-файлы на корпоративном веб-сайте.
Если пользователь с административными правами запускает удаленное приложение, то в его сессии вместе с приложением могут появиться Диспетчер Сервера и окно первоначальной настройки. Запретить это можно с помощью групповых политик
Do not display Initial Configuration Tasks window automatically at logon,
Do not display Server Manager automatically at logon,
находящихся в разделе Computer Configuration\Administrative Templates\System\Server Manager.
В русской версии операционной системы данные политики (рис. 3) называются
- Не отображать окно «Задачи начальной настройки» автоматически при входе,
- Не отображать диспетчер сервера автоматически при входе.
Рис. 3. Групповые политики, отвечающие за отображение Диспетчера Сервера и окна первоначальной настройки
Особенности использования
При работе с удаленным приложениями важно учитывать, что пользователь не может самостоятельно завершить свой сеанс также как при работе с полноэкранным рабочим столом. В связи с этим, рекомендуется настроить своевременное отключение и завершение неиспользуемых сессий. Рассмотрим это более подробно.
Сессия автоматически отключается когда все запущенные пользователем окна удаленных приложений и значки в панели уведомлений закрыты. Алгоритм принятия решения об отключении сессии приведен ниже (рис. 4).
Рис. 4. Алгоритм отключения сессии
Сессия удаленного приложения остается активной до тех пока существует хотя бы одно видимое или активное окно в этой сессии. Активное окно может быть в любом состоянии (развернутое, свернутое, восстановленное). Кроме того, удаленное приложение, которому принадлежит окно, может быть запущено как непосредственно пользователем, так и в результате работы с уже запущенным приложением. Рассмотрим это на следующем примере.
Пользователь запускает удаленный Microsoft Outlook и открывает из него документ Microsoft Word, находившийся во вложении. Microsoft Word запускается в той же терминальной сессии отдельным удаленным приложением. Сессия будет оставаться активной до тех пор пока не закроются как Microsoft Outlook, так и Microsoft Word.
Кроме того, сессия остается активной до тех пор пока, в панели уведомлений находится как минимум один значок удаленного приложения запущенного пользователем. Рассмотрим это на следующих примерах.
Пользователь запускает удаленный Microsoft Office Communicator. После открытия приложения в панели уведомлений появляется значок приложения. Он остается там даже если закрыть главное окно приложения. Соответственно, сессия также будет оставаться активной.
Однако, это справедливо не для всех случаев. Если пользователь открывает удаленный Microsoft Outlook вместе с ним может запуститься клиент антивируса, создающий свой значок в панели уведомления. Если закрыть окно Microsoft Outlook, значок антивируса будет игнорироваться при решении об отключении сессии, т.к. это приложение не было запущено пользователем.
В случае если выявлено, что в сессии нет запущенных удаленных приложений, следует 20-ти секундная пауза. В течении её пользователь может запустить другое удаленное приложение на том же самом сервере. Если приложений не запущенно в течении этого периода, сессия будет отключена.
Открытие отключенной сессии происходит гораздо быстрее чем создание новой. По умолчанию, сессии RemoteApp могут бесконечно оставаться в отключенном состоянии. Для более рационального использования ресурсов сервера, можно определить интервал ожидания перед автоматическим завершением отключенных сессий.
Сделать это можно с помощью политики «Set time limit for logoff of RemoteApp sessions», находящейся в разделе
Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Session Time Limits
В русскоязычных версиях операционной системы данная политика называется «Задать предел времени для выхода из сеансов RemoteApp» (рис. 5).
Рис. 5. Настройка ограничения по времени терминальных сессий
В том же разделе можно задать ограничение по времени для отключенных полноэкранных сеансов. Рекомендуется устанавливать его больше чем для RemoteApp, т.к. в противном случае возможен конфликт политик.
Внедрение удаленных приложений может привести к увеличению нагрузки на терминальные сервера из-за того, что пользователи будут использовать их параллельно с полноэкранным удаленным рабочим столом. Даже если на сервере выставлено ограничение пользователя одной терминальной сессией, это не будет действовать при использовании удаленных приложений. Другими словами пользователю будет разрешено параллельно открыть как полноэкранный рабочий стол, так и удаленное приложение.
Для устранения этой проблемы можно ограничить права пользователей удаленных приложений и запретить им использование полноэкранного рабочего стола. Сделать это можно следующим образом.
- Создать организационную единицу в оснастке Active Directory Users and Computers
- Переместить туда терминальный сервер
- Создать объект групповой политики и связать его с созданной ранее организационной единицей
- Создать группу безопасности. Включить в неё терминальный сервер и пользователей, которым запрещен доступ к полноэкранному рабочему столу
- В фильтрах безопасности объекта групповой политики удалить группу Authenticated users и добавить созданную ранее группу.
- В групповой политике установить следующие настройки:
- Computer Configuration\Policies\Administrative Templates\System\Group Policy\User Group Policy loopback processing mode — Enabled , mode — Merge
- UserConfiguration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Remote Session Environment\Start a program on connection — %systemroot%\system32\logoff.exe
- Обновить групповые политики командой: gpupdate /force
В результате, полноэкранные сеансы пользователей удаленных приложений будут завершаться сразу же после установки соединения.