Иван Коробко
Запускаем сценарий загрузки от имени администратора
Во время регистрации пользователя в домене Windows отрабатывает сценарий, обеспечивающий решение задачи инвентаризации, подключения сетевых ресурсов и настройки рабочей среды пользователя. Однако последняя из перечисленных задач решается не полностью из-за урезанных прав. Рассмотрим, как расширить эти права, не давая пользователю дополнительных привилегий.
Рядовой пользователь не обладает правами системного администратора на рабочем компьютере, поэтому для выполнения достаточно большого количества задач, касающихся настройки рабочей станции, у него не хватает прав.
Все манипуляции, которые необходимо сделать администратору на удаленном компьютере, в большинстве случаев сводятся к изменению данных в реестре или копированию каких-либо файлов. Обе эти задачи можно решить с помощью групповых политик, однако их достаточно сложно правильно настроить, а также диагностировать возникающие при их работе неполадки.
Существует много способов решения данной задачи, которые в итоге сводятся к копированию и регистрации какой-либо библиотеки, содержащий COM-объект с ее последующей регистрацией в сети. Реализация этого механизма также не позволяет избежать использования групповых политик. Другим возможным решением является вызов или запуск командного файла или сценария от имени администратора, пароль которого публикуется в открытом виде. Вердикт этому решению – небезопасно, а значит, от него придется отказаться.
Оптимальным решением, как показала практика, является использование трехзвенной системы, например сервер IIS, который позволяет обеспечить имперсонализацию, т.е. подстановку имени и пароля, хранящимся на сервере в зашифрованном виде. Рассмотрим подробнее устройство сценария.
Структура сценария
Любой сценарий регистрации пользователей в сети решает несколько задач:
- Инвентаризация. Включает в себя сбор информации о пользователе, регистрирующимся в сети и рабочей станции: ее программной и аппаратной конфигурации.
- Создание и настройка файловой системы обмена (требует административных прав). Динамическое управление файловыми ресурсами, построенными на основе DFS.
- Автоматическое подключение сетевых ресурсов: принтеров и дисков на основе членства в группах безопасности в каталоге Active Directory.
- Автоматическая настройка рабочих станций (часть выполняется от имени пользователя, часть требует административных привилегий). Унификация оформления рабочего стола, языковых предпочтений, управления ярлыками в папке «Мой Компьютер» и т. д.
- Обеспечение интерактивности работы сценария. В ходе работы сценария на экране отображается различная информация о работе сценария.
Анализирую приведенный список задач, четко видно, что часть из них требует административных привилегий. Создав ASP.NET-страницу, хранящуюся на IIS-сервере, можно обеспечить удаленное управление реестром. Более того, таким образом реализуют удаленное управление DFS, параметрами безопасности файловой системы и т. д.
Реализация поставленной задачи состоит из двух крупных частей: обращение к сайту в «тихом» режиме и обеспечение работы имперсонализации на IIS-сервере.
Сценарий регистрации пользователей в сети
В качестве языка сценариев может быть использован любой встроенный скриптовый язык, например: VBScript (VBS), Jscript (JS) или пакетные файлы (CMD).
Модульный принцип сценария
Для повышения надежности и управляемости сценария лучше всего использовать модульный принцип. В соответствии с ним сценарий состоит из нескольких частей – модулей, которые выполняются в указанной последовательности. Оптимальное решение в данном случае – использовать командный файл (см. листинг 1), в котором перечислены выполняемые модули.
Создание такого файла имеет ряд особенностей:
- Запускаемые модули, как и сам командный файл, находятся в каталоге \\DOMAIN\Netlogon. Если в командном файле указать просто имя файла с расширением, то модуль-сценарий не будет найден. Путь необходимо указывать целиком [1]: «%0\..\*.*».
- Последовательного выполнения файлов добиваются использованием команды: «start /wait».
Листинг. 1. Пакетный файл LOGON.BAT
start /wait wscript.exe %0\..\inventory.vbs
start /wait wscript.exe %0\..\network.vbs
…
start /wait wscript.exe %0\..\admin.vbs
Запуск сценария
Выполнение сценария загрузки можно обеспечить двумя способами:
\\Domain\NetLogon.
Рисунок 1. Назначение сценария загрузки с помощью Active Directory Users and Computers
Рисунок 2. Запуск сценария загрузки политикой безопасности
С помощью первого варианта можно персонализировать сценарий для группы пользователей, назначив его каждому персонально. С помощью второго варианта, создав несколько политик безопасности, можно обеспечить выполнение нескольких сценариев для одного пользователя в зависимости от компьютера, с которого он загружается.
Обращения к IIS-серверу
Все перечисленные в листинге 1 сценарии располагаются в каталоге NETLOGON контроллера домена. Не является исключением сценарий обращения к IIS-серверу, эмулирующего вызов Internet Explorer, по умолчанию установленного в любой операционной системе Windows, и сценарий вызова страницы по указанному адресу, например http://RemoteRegisty.
Сценарий вызова страницы работает по алгоритму, который рассмотрен в листинге 2. На первом этапе создают экземпляр объекта InternetExplorer.Application. Перед тем как управлять им, для предотвращения ошибки в работе сценария необходимо дождаться окончания загрузки браузера. Для этого используется свойство IE.Busy совместно с циклом Do While… Loop. При завершении загрузки страницы – IE.Busy=0. Затем, после того как объект стал доступен для управления, необходимо сделать окно браузера невидимым с помощью свойства Visible. Теперь с помощью метода Navigate() сценарий выполнит загрузку указанной в качестве свойства страницы. Дождавшись окончания работы сценариев на сайте, уничтожим созданный объект IE, вызвав функцию Quit.
Листинг 2. Обращение к интернет-ресурсу
Set IE=CreateObject("InternetExplorer.Application")
'Ожидание пока не загрузится браузер
Do While (IE.Busy)
WScript.Sleep 100
Loop
IE.Visible =0
IE.Navigate("http://RemoteRegistry")
'Ожидание пока не загрузится браузер
Do While (IE.Busy)
Wscript.Sleep 100
Loop
IE.Quit()
Управление имперсонализацией сайта
Существует как минимум два решения. Каждое из них имеет свои преимущества и недостатки. Первое решение – настроить пул для сайта, в котором прописать имя и пароль учетной записи пользователя, от имени которого будет выполняться страница на сервере. Второй вариант – сделать необходимые изменения в конфигурационном файле настроек web.config. Рассмотрим оба способа подробнее.
Настройка пула для сайта
Начиная с Windows 2003 в комплект дистрибутива Windows входит IIS 6. Одной из его отличительных особенностей является поддержка индивидуального пула безопасности для каждого веб-сайта. В связи с этим к разделам Web Site и Web Service Extension добавился раздел Application Pool.
Любой вновь созданный файл входит в DefaultAppPool, у которого взаимодействие между серверами осуществляется с помощью встроенной учетной записи Network Service. Для решения поставленной задачи необходимо создать новый пул, например Admin (см. рис. 3), и во вкладке Identity указать имя (Domain/Login) и пароль учетной записи, прав которой достаточно для решения поставленной задачи.
Рисунок 3. Создание пула для сайта
После того как пул создан, необходимо для сайта назначить новый пул. Для этого в свойствах сайта нужно во вкладке Home Directory изменить пул приложения (см. рис. 4). Этот способ самый безопасный, поскольку пароль пользователя хранится на сервере в зашифрованном виде.
Рисунок 4. Привязка сайта к пулу приложения
Конфигурационный файл web.config
Файл web.config представляет собой текстовый файл в формате XML, с помощью которого осуществляется управление библиотеками FrameWork, параметрами безопасности и т. д. Имперсонализацией управляют тегом identity (см. листинг 3), который содержит три параметра:
- Impersonate – принимает булево значение: true или false;
- Username – учетная запись пользователя в формате Domain/Login;
- Password – пароль в явном виде.
Листинг 3. Управление имперсонализацией в файле web.config
<?xml version="1.0"?>
<configuration>
<system.web>
…
<identity impersonate="true" userName="***\*****" password="****"/>
</system.web>
</configuration>
Управление файлом осуществляется как вручную, так и с помощью настроек FrameWork в свойствах сайта. Несмотря на то что при правильной настройке сайта пользователь не может увидеть ни файл web.config, ни его содержимое, все же хранение имени и пароля урезанной в правах административной учетной записи – не самое лучшее решение.
Заключение
Создавая сайт с использованием имперсонализации можно полностью обеспечить доступ к реестру, к файловой системе на серверах и т. д. Включая такие сайты в сценарии загрузки, администратор полностью обеспечит всестороннюю настройку рабочих машин во время входа в сеть.
- Use of the %0\..\ Syntax in the Smsls.bat File – http://support.microsoft.com/kb/121387.